671 Stimmen

Der pythonischste Weg, eine Datei zu löschen, die möglicherweise nicht existiert

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?

22voto

DevonMcC Punkte 351
if os.path.exists(filename): os.remove(filename)

ist ein Einzeiler.

Viele von Ihnen mögen anderer Meinung sein - möglicherweise aus Gründen wie der, dass sie die vorgeschlagene Verwendung von Ternären "hässlich" finden -, aber das wirft die Frage auf, ob wir auf Leute hören sollten, die an hässliche Standards gewöhnt sind, wenn sie etwas, das nicht dem Standard entspricht, "hässlich" nennen.

9voto

Jason R. Coombs Punkte 38667

Matts Antwort ist das richtige für ältere Pythons und Kevin's die richtige Antwort für die neueren.

Wenn Sie die Funktion nicht kopieren möchten, um silentremove wird diese Funktionalität in pfad.py como entfernen_p :

from path import Path
Path(filename).remove_p()

8voto

jotacor Punkte 2599

Eine andere Möglichkeit, festzustellen, ob die Datei (oder die Dateien) vorhanden sind, und sie zu entfernen, ist die Verwendung des Moduls glob.

from glob import glob
import os

for filename in glob("*.csv"):
    os.remove(filename)

Glob findet alle Dateien, die das Muster mit einem *nix-Wildcard auswählen könnten, und führt die Liste in einer Schleife aus.

5voto

Paul Punkte 4796

Seit Python 3.3 können Sie FileNotFoundError die korrekter ist als die akzeptierte Version, da sie andere mögliche Fehler nicht außer Acht lässt.

try:
    os.remove(filename)
except FileNotFoundError:
    pass

3voto

In Python 3.4 oder einer neueren Version würde der pythonische Weg sein:

import os
from contextlib import suppress

with suppress(OSError):
    os.remove(filename)

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