Löschen Sie eine Datei oder einen Ordner
So löschen Sie eine Datei oder einen Ordner in Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So löschen Sie eine Datei oder einen Ordner in Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
os.remove()
löscht eine Datei.os.rmdir()
entfernt ein leeres Verzeichnis.shutil.rmtree()
löscht ein Verzeichnis und alle seine Inhalte.pathlib.Pfad.unlink()
entfernt die Datei oder den symbolischen link.pathlib.Pfad.rmdir()
löscht das leere Verzeichnis.os.system('rm -rf /directory_address/')
statt shutilos.remove()
löst eine Ausnahme aus, so kann es erforderlich sein zu prüfenos.path.isfile()
ersten, oder wickeln Sie Sie in eintry
.Python-syntax um eine Datei zu löschen
Oder
Best-practice -
ein.
os.path.isfile("/path/to/file")
b. Verwenden
exception handling.
BEISPIEL für
os.path.isfile
Exception-Handling
JEWEILIGEN AUSGANG
Python-syntax, um einen Ordner zu löschen
Beispiel für
shutil.rmtree()
except OSError, e:
sollteexcept OSError as e:
.Verwenden
Ist(siehe vollständige Dokumentation auf shutil) und/oder
und
(Komplette Dokumentation auf os.)
Für das löschen von Dateien:
Können Sie
unlink
oderentfernen
.Oder
Diese Funktionen entfernt (löscht) den Pfad der Datei. Falls Pfad ein Verzeichnis ist,
OSError
ausgelöst.In Python 2, wenn der Pfad nicht vorhanden ist, wird
OSError
mit [Errno 2] (ENOENT
) angehoben wird. In Python 3,FileNotFoundError
mit [Errno 2] (ENOENT
) angehoben wird. In Python 3, daFileNotFoundError
ist eine Unterklasse vonOSError
fangen die letzteren fangen die ehemaligen.Für das löschen von Ordnern:
rmdir
Entfernen (löschen), den Verzeichnis-Pfad. Funktioniert nur, wenn das Verzeichnis leer ist, sonst, OSError ausgelöst.Um zu entfernen ganze directory-Bäume,
shutil.rmtree()
verwendet werden kann.shutil.rmtree
Löschen eines gesamten directory-Baum. Pfad muss auf ein Verzeichnis zeigen, (aber nicht eine symbolische Verknüpfung auf ein Verzeichnis).Wenn ignore_errors wahr ist, Fehler, die aus gescheiterten Abschiebungen werden ignoriert und wenn der Wert false oder nicht angegeben, wie Fehler behandelt werden, durch den Aufruf einer handler angegeben onerror-oder, wenn das weggelassen wird, ist Sie eine Ausnahme auslösen.
Siehe auch:
os.removedirs(name)
Entfernen Verzeichnisse rekursiv. Funktioniert wie rmdir (), außer dass, wenn das Blatt Verzeichnis erfolgreich entfernt wurde, removedirs() versucht, sukzessive entfernen alle Eltern genannte Verzeichnis im Pfad, bis ein Fehler ausgelöst wird (das wird ignoriert, weil es in der Regel bedeutet, dass ein übergeordnetes Verzeichnis ist nicht leer).Beispielsweise os.removedirs('foo/bar/baz') zuerst entfernen Sie das Verzeichnis 'foo/bar/baz', und entfernen Sie dann 'foo/bar' und 'foo', wenn Sie leer sind.
Erstellen Sie eine Funktion für Euch.
remove(path);
nennen.Können Sie die integrierte-in
pathlib
- Modul (erfordert Python 3.4+, aber es gibt backports für ältere Versionen auf PyPI:pathlib
,pathlib2
).Um eine Datei zu entfernen gibt es die
unlink
Methode:Oder die
rmdir
Methode zum entfernen eines leer Ordner:pathlib
bewältigen können und das löschen von nicht leeren Verzeichnissen. Aber könnten Sieshutil.rmtree
. Es wurde erwähnt, die in einigen der anderen Antworten, damit habe ich nicht aufgenommen.Für Python 3 entfernen Sie die Datei-und Verzeichnis-individuell, verwenden Sie die
unlink
undrmdir
Path
Objekt-Methoden jeweils:Beachten Sie, dass Sie können auch relative Pfade verwenden, mit
Path
Objekte, und Sie können überprüfen Sie Ihre aktuelle working-directory mitPath.cwd
.Für das löschen einzelner Dateien und Verzeichnisse in Python 2 finden Sie im Abschnitt so beschriftet unten.
Entfernen Sie ein Verzeichnis mit Inhalt, verwenden Sie
shutil.rmtree
, und beachten Sie, dass diese in Python 2 und 3:Demonstration
Neues in Python 3.4 ist die
Path
Objekt.Lassen, verwenden um ein Verzeichnis erstellen, Datei demonstrieren Verwendung. Beachten Sie, dass der
/
zu verbinden, die Teile des Pfades, funktioniert dies, um Probleme zwischen den Betriebssystemen und Probleme aus der Verwendung von umgekehrten Schrägstrichen auf Windows (wo müssten Sie entweder weiter verdoppeln, bis Ihre backslashes wie\\
oder verwenden Sie raw-strings, wier"foo\bar"
):und jetzt:
Lassen Sie uns nun, Sie zu löschen. Zuerst die Datei:
Wir können Platzhalter verwenden, um entfernen Sie mehrere Dateien - zuerst erstellen wir ein paar Dateien für das:
Dann einfach Durchlaufen das glob pattern:
Nun, Demonstration, entfernen Sie das Verzeichnis:
Was ist, wenn wir wollen, um ein Verzeichnis zu entfernen und alles in Ihr?
Für diesen Fall verwenden Sie
shutil.rmtree
Lasst uns neu unserem Verzeichnis und Datei:
und beachten Sie, dass
rmdir
schlägt fehl, es sei denn, es ist leer, das ist der Grund, warum rmtree ist so bequem:Nun, import rmtree und übergeben Sie das Verzeichnis, um die funtion:
und wir können sehen, die ganze Sache wurde entfernt:
Python 2
Wenn du auf Python 2 gibt es eine Rückportierung der pathlib Modul namens pathlib2, die installiert werden können mit pip:
Dann können Sie alias-die Bibliothek
pathlib
Oder direkt importieren Sie die
Path
Objekt (wie hier gezeigt):Wenn das zu viel wird, können Sie entfernen von Dateien mit
os.entfernen
oderos.unlink
oder
und Sie können entfernen Sie Verzeichnisse mit
os.rmdir
:Beachten Sie, dass es auch eine
os.removedirs
- es entfernt nur leere Verzeichnisse rekursiv, aber es kann entsprechend Ihren Anwendungsfall.rmtree(directory_path)
funktioniert in python 3.6.6, aber nicht in python 3.5.2 - Sie müssenrmtree(str(directory_path)))
es.shutil.rmtree ist der asynchronen Funktion
also, wenn Sie wollen, um zu überprüfen, wenn Sie es beenden, können Sie mit while...loop
shutil.rmtree
ist eigentlich nicht asynchron. Allerdings kann es angezeigt sein, auf Windows mit Virenscanner stören.Empfehle ich
subprocess
wenn das schreiben von einem schönen und lesbaren code ist Ihre Tasse Tee:Und wenn Sie nicht ein software-Ingenieur, dann vielleicht erwägen, Jupyter; Sie können geben Sie einfach die bash-Befehle:
Traditionell, verwenden Sie
shutil
: