Wenn der Grund für die Überprüfung darin besteht, dass Sie etwas tun können wie if file_exists: open_it()
ist es sicherer, eine try
um den Versuch, sie zu öffnen. Beim Prüfen und anschließenden Öffnen besteht die Gefahr, dass die Datei zwischen dem Prüfen und dem Versuch, sie zu öffnen, gelöscht oder verschoben wird.
Wenn Sie nicht vorhaben, die Datei sofort zu öffnen, können Sie mit os.path.isfile
Rückkehr True
wenn der Pfad eine bestehende reguläre Datei ist. Dies folgt symbolischen Links, so dass sowohl islink() y isfile() für denselben Pfad wahr sein kann.
import os.path
os.path.isfile(fname)
wenn Sie sicher sein wollen, dass es sich um eine Datei handelt.
Beginnend mit Python 3.4 ist die pathlib
Modul bietet einen objektorientierten Ansatz (zurückportiert auf pathlib2
in Python 2.7):
from pathlib import Path
my_file = Path("/path/to/file")
if my_file.is_file():
# file exists
Um ein Verzeichnis zu überprüfen, gehen Sie wie folgt vor:
if my_file.is_dir():
# directory exists
Um zu prüfen, ob ein Path
Objekt unabhängig davon existiert, ob es sich um eine Datei oder ein Verzeichnis handelt, verwenden Sie exists()
:
if my_file.exists():
# path exists
Sie können auch Folgendes verwenden resolve(strict=True)
in einem try
Block:
try:
my_abs_path = my_file.resolve(strict=True)
except FileNotFoundError:
# doesn't exist
else:
# exists
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üfenexists
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/