Ich möchte die Datei löschen filename
wenn sie existiert. Ist es richtig zu sagen
if os.path.exists(filename):
os.remove(filename)
Gibt es einen besseren Weg? Eine einzeilige Methode?
Ich möchte die Datei löschen filename
wenn sie existiert. Ist es richtig zu sagen
if os.path.exists(filename):
os.remove(filename)
Gibt es einen besseren Weg? Eine einzeilige Methode?
Ein pythonischerer Weg wäre:
try:
os.remove(filename)
except OSError:
pass
Obwohl dies noch mehr Zeilen in Anspruch nimmt und sehr hässlich aussieht, vermeidet es den unnötigen Aufruf von os.path.exists()
und folgt der Python-Konvention, Ausnahmen übermäßig zu verwenden.
Es kann sich lohnen, eine Funktion zu schreiben, die dies für Sie erledigt:
import os, errno
def silentremove(filename):
try:
os.remove(filename)
except OSError as e: # this would be "except OSError, e:" before Python 2.6
if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
raise # re-raise exception if a different error occurred
Ich ziehe es vor, eine Ausnahme zu unterdrücken, anstatt zu prüfen, ob die Datei vorhanden ist, um eine TOCTTOU Fehler. Matts Antwort ist ein gutes Beispiel dafür, aber wir können es unter Python 3 etwas vereinfachen, indem wir contextlib.suppress()
:
import contextlib
with contextlib.suppress(FileNotFoundError):
os.remove(filename)
Si filename
ist eine pathlib.Path
Objekts anstelle einer Zeichenkette, können wir dessen .unlink()
Methode anstelle der Verwendung von os.remove()
. Meiner Erfahrung nach sind Path-Objekte für die Manipulation des Dateisystems nützlicher als Strings.
Da alles in dieser Antwort nur für Python 3 gilt, ist dies ein weiterer Grund für ein Upgrade.
Ab Python 3.8 können Sie missing_ok=True
y pathlib.Path.unlink
( Dokumente hier )
from pathlib import Path
my_file = Path("./dir1/dir2/file.txt")
# Python 3.8+
my_file.unlink(missing_ok=True)
# Python 3.7 and earlier
if my_file.exists():
my_file.unlink()
os.path.exists
gibt zurück. True
sowohl für Ordner als auch für Dateien. Erwägen Sie die Verwendung von os.path.isfile
um stattdessen zu prüfen, ob die Datei existiert.
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.