Wie überprüfe ich, ob ein Verzeichnis in Python existiert?
Wie überprüfe ich, ob ein Verzeichnis in Python existiert?
David542
phihag
Verwenden os.path.isdir
nur für Verzeichnisse:
>>> import os
>>> os.path.isdir('new_folder')
True
Verwenden os.path.exists
sowohl für Dateien als auch für Verzeichnisse:
>>> import os
>>> os.path.exists(os.path.join(os.getcwd(), 'new_folder', 'file.txt'))
False
Alternativ können Sie verwenden pathlib
:
>>> from pathlib import Path
>>> Path('new_folder').is_dir()
True
>>> (Path.cwd() / 'new_folder"https://stackoverflow.com/"file.txt').exists()
False
-
@syedrakib Während Klammern verwendet werden können, um anzuzeigen, dass ein Objekt aufrufbar ist, ist dies in Python nicht nützlich, da sogar Klassen aufrufbar sind. Außerdem sind Funktionen erstklassige Werte in Python, und Sie können sie verwenden ohne die Klammernotation, wie in
existing = filter(os.path.isdir(['/lib', '/usr/lib', '/usr/local/lib'])
– Phihag
30. März 2013 um 7:38 Uhr
-
Sie können Funktionen an andere Funktionen übergeben, wie z
map
, aber im Allgemeinen rufen Sie Funktionen mit Argumenten und Klammern auf. Außerdem hat sich in deinem Beispiel ein Tippfehler eingeschlichen. vermutlich meinst dufilter(os.path.isdir, ['/lib', '/usr/lib', '/usr/local/lib'])
.– Hughdbrown
31. März 2013 um 23:02 Uhr
-
Außerdem gibt es
os.path.isfile(path)
wenn Sie sich nur darum kümmern, ob es sich um eine Datei handelt.– Nikolaus
16. Februar 2018 um 18:00 Uhr
-
Beachten Sie, dass diese auf einigen Plattformen false zurückgeben, wenn die Datei/das Verzeichnis existiert, aber auch ein Leseberechtigungsfehler auftritt.
– Cowlinator
5. Dezember 2018 um 0:39 Uhr
-
Die obigen Beispiele sind nicht portabel und wären besser, wenn sie mit os.path.join oder dem unten empfohlenen pathlib-Zeug neu geschrieben würden. Etwa so: print(os.path.isdir(os.path.join(‘home’, ‘el’)))
– Benutzer2773661
12. November 2020 um 18:44 Uhr
joelostblom
Python 3.4 eingeführt Die pathlib
Modul in die Standardbibliothek, die einen objektorientierten Ansatz zur Handhabung von Dateisystempfaden bietet. Der is_dir()
Und exists()
Methoden von a Path
Objekt kann verwendet werden, um die Frage zu beantworten:
In [1]: from pathlib import Path
In [2]: p = Path('/usr')
In [3]: p.exists()
Out[3]: True
In [4]: p.is_dir()
Out[4]: True
Pfade (und Zeichenfolgen) können mit dem verknüpft werden /
Operator:
In [5]: q = p / 'bin"https://stackoverflow.com/"vim'
In [6]: q
Out[6]: PosixPath('/usr/bin/vim')
In [7]: q.exists()
Out[7]: True
In [8]: q.is_dir()
Out[8]: False
Pathlib ist auch für Python 2.7 über verfügbar das pathlib2-Modul auf PyPi.
So nah! os.path.isdir
kehrt zurück True
wenn Sie den Namen eines aktuell existierenden Verzeichnisses übergeben. Wenn es nicht existiert oder kein Verzeichnis ist, wird es zurückgegeben False
.
-
und wenn Sie es erstellen möchten
os.path.isdir(path) or os.makedirs(path)
– Min
3. Januar 2022 um 12:48 Uhr
-
Oder mit pathlib:
Path(path).mkdir(parents=True, exist_ok=True)
erstellt einen verschachtelten Pfad in einem Vorgang.– Kirk Strauser
3. Januar 2022 um 21:20 Uhr
Ja, verwenden os.path.exists()
.
Wir können mit 2 eingebauten Funktionen überprüfen
os.path.isdir("directory")
Es gibt boolesch wahr, dass das angegebene Verzeichnis verfügbar ist.
os.path.exists("directoryorfile")
Es gibt boolead true, wenn das angegebene Verzeichnis oder die angegebene Datei verfügbar ist.
Um zu prüfen, ob der Pfad ein Verzeichnis ist;
os.path.isdir("directorypath")
gibt boolean wahr, wenn der Pfad ein Verzeichnis ist
-
Dies ist mit der älteren Top-Antwort völlig überflüssig.
– Davis Hering
14. Oktober 2019 um 1:46 Uhr
RanRag
Ja verwenden os.path.isdir(Pfad)
-
Dies ist mit der älteren Top-Antwort völlig überflüssig.
– Davis Hering
14. Oktober 2019 um 1:46 Uhr
sksoumik
Der folgende Code überprüft, ob das angegebene Verzeichnis in Ihrem Code vorhanden ist oder nicht. Wenn es an Ihrem Arbeitsplatz nicht vorhanden ist, wird eines erstellt:
import os
if not os.path.isdir("directory_name"):
os.mkdir("directory_name")
Ein Wort der Warnung – die am besten bewertete Antwort könnte anfällig für Rennbedingungen sein. Vielleicht möchten Sie auftreten
os.stat
stattdessen, um zu sehen, ob das Verzeichnis gleichzeitig existiert und ein Verzeichnis ist.– d33tah
11. Februar 2014 um 17:09 Uhr
@ d33tah Sie haben vielleicht einen guten Punkt, aber ich sehe keine Möglichkeit, ihn zu verwenden
os.stat
Verzeichnis von einer Datei zu erzählen. Es steigtOSError
wenn der Pfad ungültig ist, egal ob Datei oder Verzeichnis. Außerdem ist jeder Code nach der Überprüfung auch anfällig für Race-Bedingungen.– Tomáš Zato
7. September 2015 um 14:58 Uhr