Wie überprüfe ich, ob ein Verzeichnis in Python existiert?

Lesezeit: 4 Minuten

Benutzeravatar von David542
David542

Wie überprüfe ich, ob ein Verzeichnis in Python existiert?

  • 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 steigt OSError 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

Benutzeravatar von phihag
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 du filter(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


Benutzeravatar von joelostblom
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

Benutzeravatar von RanRag
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

Benutzeravatar von sksoumik
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")

1449220cookie-checkWie überprüfe ich, ob ein Verzeichnis in Python existiert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy