Wie kann ich eine Datei oder einen Ordner in Python löschen?

Lesezeit: 10 Minuten

Benutzeravatar von Zygimantas
Zygimantas

Wie kann ich eine Datei oder einen Ordner löschen?

Benutzeravatar von RichieHindle
Richie Hindle


Path Objekte aus Python 3.4+ pathlib -Modul machen auch diese Instanzmethoden verfügbar:

  • os.rmdir() unter Windows entfernt auch symbolische Verzeichnisverknüpfungen, selbst wenn das Zielverzeichnis nicht leer ist

    – Ilya Serbis

    18. Dezember 2015 um 17:23 Uhr

  • Wenn die Datei nicht existiert, os.remove() löst eine Ausnahme aus, daher kann eine Überprüfung erforderlich sein os.path.isfile() zuerst, oder wickeln Sie in a try.

    Benutzer1142217

    4. Juli 2018 um 0:00 Uhr

  • Nur zur Vervollständigung … die Ausnahme, die von ausgelöst wurde os.remove() wenn eine Datei nicht existiert ist FileNotFoundError.

    – PedroA

    4. Februar 2020 um 17:52 Uhr

  • Tut os.remove() Nehmen Sie mehrere Argumente, um mehrere Dateien zu löschen, oder rufen Sie es jedes Mal für jede Datei auf?

    – Benutzer324747

    9. Mai 2020 um 23:57 Uhr

  • @ Jérôme denke ich missing_ok=True, hinzugefügt in 3.8 löst das!

    – Felix

    8. Dezember 2020 um 21:04 Uhr

Benutzeravatar von Anand Tripathi
Anand Tripathi

Python-Syntax zum Löschen einer Datei

import os
os.remove("/tmp/<file_name>.txt")

oder

import os
os.unlink("/tmp/<file_name>.txt")

oder

pathlib Bibliothek für Python-Version >= 3.4

file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
file_to_rem.unlink()

Pfad.unlink(missing_ok=False)

Unlink-Methode zum Entfernen der Datei oder des symbolischen Links.

  • Wenn missing_ok falsch ist (Standardeinstellung), wird FileNotFoundError ausgelöst, wenn der Pfad nicht existiert.
  • Wenn missing_ok wahr ist, werden FileNotFoundError-Ausnahmen ignoriert (gleiches Verhalten wie der POSIX-Befehl rm -f).
  • Geändert in Version 3.8: Der Parameter missing_ok wurde hinzugefügt.

Beste Übung

Überprüfen Sie zuerst, ob die Datei oder der Ordner existiert, und löschen Sie sie dann. Sie können dies auf zwei Arten erreichen:

  1. os.path.isfile("/path/to/file")
  2. Verwenden exception handling.

BEISPIEL Pro os.path.isfile

#!/usr/bin/python
import os

myfile = "/tmp/foo.txt"
# If file exists, delete it.
if os.path.isfile(myfile):
    os.remove(myfile)
else:
    # If it fails, inform the user.
    print("Error: %s file not found" % myfile)

Ausnahmebehandlung

#!/usr/bin/python
import os

# Get input.
myfile = raw_input("Enter file name to delete: ")

# Try to delete the file.
try:
    os.remove(myfile)
except OSError as e:
    # If it fails, inform the user.
    print("Error: %s - %s." % (e.filename, e.strerror))

Jeweiliger Ausgang

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt

Python-Syntax zum Löschen eines Ordners

shutil.rmtree()

Beispiel für shutil.rmtree()

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir = raw_input("Enter directory name: ")

# Try to remove the tree; if it fails, throw an error using try...except.
try:
    shutil.rmtree(mydir)
except OSError as e:
    print("Error: %s - %s." % (e.filename, e.strerror))

Benutzeravatar von Mihai Maruseac
Mihai Maruseac

Verwenden

shutil.rmtree(path[, ignore_errors[, onerror]])

(Siehe vollständige Dokumentation auf Shutil) und/oder

os.remove

und

os.rmdir

(Vollständige Dokumentation auf os.)

  • Bitte fügen Sie die Schnittstelle pathlib (neu seit Python 3.4) zu Ihrer Liste hinzu.

    – Paebbels

    25. April 2016 um 19:38 Uhr

Benutzeravatar von flycee
Flycee

Hier ist eine robuste Funktion, die beides verwendet os.remove und shutil.rmtree:

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path) or os.path.islink(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))

Benutzeravatar von MSeifert
MSeifert

Sie können die integrierte verwenden pathlib Modul (benötigt Python 3.4+, aber es gibt Backports für ältere Versionen auf PyPI: pathlib, pathlib2).

Zum Entfernen einer Datei gibt es die unlink Methode:

import pathlib
path = pathlib.Path(name_of_file)
path.unlink()

Oder der rmdir Methode zum Entfernen eines leer Mappe:

import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()

  • Was ist aber mit einem nicht leeren Verzeichnis?

    – Pranasas

    11. Juli 2018 um 8:43 Uhr

  • @Pranasas Leider scheint es nichts (nativ) zu geben pathlib die das Löschen nicht leerer Verzeichnisse handhaben kann. Allerdings könnten Sie verwenden shutil.rmtree. Es wurde in mehreren anderen Antworten erwähnt, daher habe ich es nicht aufgenommen.

    – MSeifert

    11. Juli 2018 um 8:46 Uhr


Benutzeravatar von DS_ShraShetty
DS_ShraShetty

Löschen einer Datei oder eines Ordners in Python

Es gibt mehrere Möglichkeiten, eine Datei in Python zu löschen, aber die besten sind die folgenden:

  1. os.remove() entfernt eine Datei.
  2. os.unlink() entfernt eine Datei. es ist ein Unix-Name der Methode remove().
  3. Shutil.rmtree() löscht ein Verzeichnis und seinen gesamten Inhalt.
  4. pathlib.Path.unlink() löscht eine einzelne Datei Das pathlib-Modul ist in Python 3.4 und höher verfügbar.

os.remove()

Beispiel 1: Einfaches Beispiel zum Entfernen einer Datei mit der Methode os.remove().

import os
os.remove("test_file.txt")
print("File removed successfully")

Beispiel 2: Überprüfen, ob die Datei mit os.path.isfile existiert und mit os.remove löschen

import os
#checking if file exist or not
if(os.path.isfile("test.txt")):
    #os.remove() function to remove the file
    os.remove("test.txt")
    #Printing the confirmation message of deletion
    print("File Deleted successfully")
else:
print("File does not exist")
#Showing the message instead of throwig an error

Beispiel 3: Python-Programm zum Löschen aller Dateien mit einer bestimmten Erweiterung

import os 
from os import listdir
my_path="C:\Python Pool\Test\"
for file_name in listdir(my_path):
    if file_name.endswith('.txt'):
        os.remove(my_path + file_name)

Beispiel 4: Python-Programm zum Löschen aller Dateien in einem Ordner

Um alle Dateien in einem bestimmten Verzeichnis zu löschen, müssen Sie einfach das Symbol * als Musterzeichenfolge verwenden. #Import von os- und glob-Modulen import os, glob #Schleife Durch den Ordner projiziert alle Dateien und löscht sie eine nach der anderen für die Datei in glob.glob(“pythonpool/*”): os.remove(file) print(“Deleted ” + str(Datei))

os.unlink()

os.unlink() ist ein Alias ​​oder ein anderer Name von os.remove() . Wie im Unix-Betriebssystem wird das Entfernen auch als Unlink bezeichnet. Hinweis: Alle Funktionalitäten und Syntax sind die gleichen wie bei os.unlink() und os.remove(). Beide werden verwendet, um den Python-Dateipfad zu löschen. Beides sind Methoden im Modul os in den Standardbibliotheken von Python, die die Löschfunktion ausführen.

Shutil.rmtree()

Beispiel 1: Python-Programm zum Löschen einer Datei mit shutdown.rmtree()

import shutil 
import os 
# location 
location = "E:/Projects/PythonPool/"
# directory 
dir = "Test"
# path 
path = os.path.join(location, dir) 
# removing directory 
shutil.rmtree(path) 

Beispiel 2: Python-Programm zum Löschen einer Datei mit shutdown.rmtree()

import shutil 
import os 
location = "E:/Projects/PythonPool/"
dir = "Test"    
path = os.path.join(location, dir) 
shutil.rmtree(path) 

pathlib.Path.rmdir() zum Entfernen des leeren Verzeichnisses

Das Pathlib-Modul bietet verschiedene Möglichkeiten, mit Ihren Dateien zu interagieren. Rmdir ist eine der Pfadfunktionen, mit der Sie einen leeren Ordner löschen können. Zuerst müssen Sie den Pfad () für das Verzeichnis auswählen, und dann wird durch Aufrufen der Methode rmdir () die Ordnergröße überprüft. Wenn es leer ist, wird es gelöscht.

Dies ist eine gute Möglichkeit, leere Ordner zu löschen, ohne befürchten zu müssen, dass tatsächliche Daten verloren gehen.

from pathlib import Path
q = Path('foldername')
q.rmdir()

  • Was ist aber mit einem nicht leeren Verzeichnis?

    – Pranasas

    11. Juli 2018 um 8:43 Uhr

  • @Pranasas Leider scheint es nichts (nativ) zu geben pathlib die das Löschen nicht leerer Verzeichnisse handhaben kann. Allerdings könnten Sie verwenden shutil.rmtree. Es wurde in mehreren anderen Antworten erwähnt, daher habe ich es nicht aufgenommen.

    – MSeifert

    11. Juli 2018 um 8:46 Uhr


Wie lösche ich eine Datei oder einen Ordner in Python?

Verwenden Sie für Python 3, um die Datei und das Verzeichnis einzeln zu entfernen, die unlink und rmdir Path Objektmethoden bzw.:

from pathlib import Path
dir_path = Path.home() / 'directory' 
file_path = dir_path / 'file'

file_path.unlink() # remove file

dir_path.rmdir()   # remove directory

Beachten Sie, dass Sie auch relative Pfade mit verwenden können Path Objekte, und Sie können Ihr aktuelles Arbeitsverzeichnis mit überprüfen Path.cwd.

Informationen zum Entfernen einzelner Dateien und Verzeichnisse in Python 2 finden Sie im Abschnitt mit der entsprechenden Bezeichnung unten.

Verwenden Sie zum Entfernen eines Verzeichnisses mit Inhalt shutil.rmtreeund beachten Sie, dass dies in Python 2 und 3 verfügbar ist:

from shutil import rmtree

rmtree(dir_path)

Demonstration

Neu in Python 3.4 ist die Path Objekt.

Lassen Sie uns einen verwenden, um ein Verzeichnis und eine Datei zu erstellen, um die Verwendung zu demonstrieren. Beachten Sie, dass wir die verwenden / Um die Teile des Pfads zu verbinden, umgeht dies Probleme zwischen Betriebssystemen und Probleme bei der Verwendung von Backslashes unter Windows (wobei Sie entweder Ihre Backslashes verdoppeln müssten, wie z \\ oder verwenden Sie rohe Zeichenfolgen, wie r"foo\bar"):

from pathlib import Path

# .home() is new in 3.5, otherwise use os.path.expanduser('~')
directory_path = Path.home() / 'directory'
directory_path.mkdir()

file_path = directory_path / 'file'
file_path.touch()

und nun:

>>> file_path.is_file()
True

Jetzt löschen wir sie. Zuerst die Datei:

>>> file_path.unlink()     # remove file
>>> file_path.is_file()
False
>>> file_path.exists()
False

Wir können Globbing verwenden, um mehrere Dateien zu entfernen – lassen Sie uns zuerst ein paar Dateien dafür erstellen:

>>> (directory_path / 'foo.my').touch()
>>> (directory_path / 'bar.my').touch()

Dann iterieren Sie einfach über das Glob-Muster:

>>> for each_file_path in directory_path.glob('*.my'):
...     print(f'removing {each_file_path}')
...     each_file_path.unlink()
... 
removing ~/directory/foo.my
removing ~/directory/bar.my

Demonstrieren Sie nun das Entfernen des Verzeichnisses:

>>> directory_path.rmdir() # remove directory
>>> directory_path.is_dir()
False
>>> directory_path.exists()
False

Was ist, wenn wir ein Verzeichnis und alles darin entfernen möchten? Verwenden Sie für diesen Anwendungsfall shutil.rmtree

Lassen Sie uns unser Verzeichnis und unsere Datei neu erstellen:

file_path.parent.mkdir()
file_path.touch()

und beachte das rmdir schlägt fehl, es sei denn, es ist leer, weshalb rmtree so praktisch ist:

>>> directory_path.rmdir()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir
    self._accessor.rmdir(self)
  File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
OSError: [Errno 39] Directory not empty: '/home/username/directory'

Importieren Sie nun rmtree und übergeben Sie das Verzeichnis an die Funktion:

from shutil import rmtree
rmtree(directory_path)      # remove everything 

und wir können sehen, dass das Ganze entfernt wurde:

>>> directory_path.exists()
False

Python 2

Wenn Sie auf Python 2 sind, gibt es eine Backport des pathlib-Moduls namens pathlib2die mit pip installiert werden kann:

$ pip install pathlib2

Und dann können Sie die Bibliothek mit einem Alias ​​versehen pathlib

import pathlib2 as pathlib

Oder einfach direkt importieren Path Objekt (wie hier gezeigt):

from pathlib2 import Path

Wenn das zu viel ist, können Sie Dateien mit entfernen os.remove oder os.unlink

from os import unlink, remove
from os.path import join, expanduser

remove(join(expanduser('~'), 'directory/file'))

oder

unlink(join(expanduser('~'), 'directory/file'))

und Sie können Verzeichnisse mit entfernen os.rmdir:

from os import rmdir

rmdir(join(expanduser('~'), 'directory'))

Beachten Sie, dass es auch eine gibt os.removedirs – Es entfernt nur leere Verzeichnisse rekursiv, kann aber für Ihren Anwendungsfall geeignet sein.

  • rmtree(directory_path) funktioniert in Python 3.6.6, aber nicht in Python 3.5.2 – Sie brauchen rmtree(str(directory_path))) dort.

    –Stein

    22. August 2018 um 8:48 Uhr

1438940cookie-checkWie kann ich eine Datei oder einen Ordner in Python löschen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy