7118 Stimmen

Wie kann ich überprüfen, ob eine Datei ohne Ausnahmen existiert?

Wie prüfe ich, ob eine Datei existiert oder nicht, ohne die try Aussage?

16 Stimmen

Um zu prüfen, ob ein Path-Objekt existiert, unabhängig davon, ob es sich um eine Datei oder ein Verzeichnis handelt, verwenden Sie my_path.exists() .

1 Stimmen

my_path.exists() ist nicht ausreichend. my_path.is_file() wird Ihnen sagen, ob es sich um eine Datei handelt (könnte zum Lesen gut sein). Aber wenn Sie die Datei erstellen wollen, müssen Sie auch prüfen exists schließen Sie also Verzeichnisse oder andere Dinge im Dateisystem, die keine Dateien sind, aus, die den Fehler verursachen.

0 Stimmen

Verwenden Sie os.path.isfile, um nur Dateien zu prüfen, und verwenden Sie os.path.exists, um sowohl Dateien als auch Verzeichnisse zu prüfen. Mehr dazu erfahren Sie hier: shortbuzz.in/blog/shortbuzz.in/

142voto

pkoch Punkte 2589

Ziehen Sie die Anweisung try vor. Sie gilt als besserer Stil und vermeidet Race Conditions.

Verlassen Sie sich nicht auf mein Wort. Es gibt viele Belege für diese Theorie. Hier sind ein paar:

4 Stimmen

Bitte fügen Sie bessere Quellen zur Unterstützung Ihrer Aussage hinzu.

12 Stimmen

Der zitierte Link Avoiding Race Conditions (apple dev support) unterstützt Ihre Antwort nicht. Er betrifft nur die Verwendung von temporären Dateien, die sensible Informationen enthalten, auf schlecht konzipierten Betriebssystemen, die temporäre Dateien/Verzeichnisse nicht ordnungsgemäß über eingeschränkte Berechtigungen in einer Sandbox unterbringen. Verwendung von try...except hilft nicht bei der Lösung von dass Problem sowieso.

0 Stimmen

Das Problem bei dieser Methode ist, dass, wenn ein wichtiger Teil des Codes davon abhängt, dass die Datei nicht existiert, sie in die except: Klausel sorgt dafür, dass eine Ausnahme, die in diesem Teil Ihres Codes auftritt, eine verwirrende Meldung auslöst (zweiter Fehler, der während der Verarbeitung des ersten Fehlers auftritt).

110voto

karlzafiris Punkte 2883
import os
#Your path here e.g. "C:\Program Files\text.txt"
#For access purposes: "C:\\Program Files\\text.txt"
if os.path.exists("C:\..."):   
    print "File found!"
else:
    print "File not found!"

Importieren von os erleichtert die Navigation und die Durchführung von Standardaktionen mit Ihrem Betriebssystem.

Als Referenz siehe auch Wie prüft man mit Python, ob eine Datei existiert?

Wenn Sie Operationen auf hoher Ebene benötigen, verwenden Sie shutil .

15 Stimmen

Diese Antwort ist falsch. os.path.exists liefert true für Dinge, die keine Dateien sind, wie z. B. Verzeichnisse. Dies führt zu falsch positiven Ergebnissen. Siehe die anderen Antworten, die empfehlen os.path.isfile .

102voto

Tom Fuller Punkte 4941

Prüfung von Dateien und Ordnern mit os.path.isfile() , os.path.isdir() y os.path.exists()

Unter der Annahme, dass der "Pfad" ein gültiger Pfad ist, zeigt diese Tabelle, was von jeder Funktion für Dateien und Ordner zurückgegeben wird:

enter image description here

Sie können auch prüfen, ob es sich bei einer Datei um eine bestimmte Art von Datei handelt, indem Sie os.path.splitext() um die Durchwahl zu erhalten (falls Sie sie nicht bereits kennen)

>>> import os
>>> path = "path to a word document"
>>> os.path.isfile(path)
True
>>> os.path.splitext(path)[1] == ".docx" # test if the extension is .docx
True

98voto

Memin Punkte 3050

TL;DR
Die Antwort lautet: Verwenden Sie die pathlib Modul


Pathlib ist wahrscheinlich der modernste und bequemste Weg für fast alle Dateioperationen. Für das Vorhandensein einer Datei oder eine Ordner eine einzige Code-Zeile genügt.

from pathlib import Path

if Path("myfile.txt").exists(): # works for both file and folders
    # do your cool stuff...

Le site pathlib Modul wurde eingeführt in Python 3.4 Sie benötigen also Python 3.4+, diese Bibliothek erleichtert Ihnen die Arbeit mit Dateien und Ordnern und ist sehr einfach zu benutzen, hier finden Sie weitere Informationen dazu ( https://docs.python.org/3/library/pathlib.html ).

Übrigens, wenn Sie den Pfad wiederverwenden wollen, ist es besser, ihn einer Variablen zuzuweisen

wird so zu

from pathlib import Path

p = Path("loc/of/myfile.txt")
if p.exists(): # works for both file and folders
    # do stuffs...
#reuse 'p' if needed.

7 Stimmen

Beachten Sie, dass diese Funktion True zurückgibt, wenn die Datei nicht vorhanden ist, der Pfad zur Datei aber existiert. Wenn Sie wirklich an der Frage interessiert sind, ob die Datei existiert oder nicht, sollten Sie p.is_file() verwenden.

84voto

KaiBuxe Punkte 858

Im Jahr 2016 ist die beste Methode immer noch die Verwendung von os.path.isfile :

>>> os.path.isfile('/path/to/some/file.txt')

Oder in Python 3 können Sie verwenden pathlib :

import pathlib
path = pathlib.Path('/path/to/some/file.txt')
if path.is_file():
    ...

4 Stimmen

Darf ich fragen: Was ist der Vorteil der Verwendung des Moduls "pathlib" anstelle des Moduls "os" in Python3 für diese Prüfung?

4 Stimmen

pathlib ist die OOP-Lösung von Python für Pfade. Man kann viel mehr damit machen. Wenn Sie nur das Vorhandensein prüfen müssen, ist der Vorteil nicht so groß.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X