2013-07-19 13 views
23

Ich bin gespannt, wenn diese beiden Funktionen verschiedene Werte zurückgeben. Auch wenn Sie den Unterschied zwischen einem Pfad/Verzeichnis/Datei verdeutlichen könnten, der geschätzt würde.Unterschied zwischen os.path.exists und os.path.isfile in Python

+2

'os.path.isfile' wird false zurückgeben, wenn das Argument keine Datei ist: das ist ein Verzeichnis oder es existiert nicht. – 2rs2ts

+3

os.path.exists gibt zurück, wenn es sich um einen gültigen Pfad handelt (nach Verzeichnis oder Datei suchen, beides) und os.path.isfile (prüft nur nach Datei, nicht Verzeichnis), wenn es sich um eine Datei handelt. Wenn os.path.isfile also True ist, ist os.path.exists auch True und wenn os.path.exists False ist, ist os.path.isfile ebenfalls False. hoffe, das macht dich verständlich. Prost ! :) – rnbcoder

Antwort

1

Ein Verzeichnis Tests True für existiert, aber falsch für Isfile. Es gibt ein paar verschiedene Arten von Dateisystemobjekten, für die das auch gilt.

isfile bedeutet, dass es sich um eine reguläre Datei handelt. Es ist spezifischer als es existiert.

22

Wie Sie bereits herausgefunden haben, ist der Unterschied zwischen exists und isfile ist die Tatsache, dass die früheren Erträge True falls der angegebene Pfad ein Verzeichnis ist oder eine Datei, während die letzteren nur kehrt True wenn der Pfad auf eine Datei.

Verzeichnisse und Dateien sind vom technischen Standpunkt aus ziemlich ähnlich. Eine Datei kann beliebige Daten enthalten. Ein Verzeichnis ist nur ein spezieller Eintrag im Dateisystem (zumindest unter Unix-Betriebssystemen ist es nur eine spezielle Datei), der die Tatsache repräsentiert, dass es Dateien und andere Verzeichnisse enthalten kann. Es ist ein hilfreiches Mittel zum Aufbau einer Datenstruktur. Mithilfe von Verzeichnissen können Sie Ihre Daten in einer hierarchischen Struktur organisieren.

Besonders in der Windows-Welt werden Verzeichnisse oft "Ordner" genannt. Ich bin mir sicher, dass Sie selbst "Ordner" verwenden, um Ihre Dateien zu organisieren. Ein Pfad ist ein eindeutiger Zeiger auf eine Ressource im Dateisystem. Es kann entweder auf eine Datei oder auf ein Verzeichnis zeigen.

+1

Also wenn Isfile (x) wahr zurückgibt, gibt es exists (x) immer wahr? –

+1

Ja, "isfile (path) == True" impliziert "exists (path) == True". –

Verwandte Themen