Python-Skripte zum Löschen der Dateien

Das regelmäßige manuelle Reinigen des Dateisystems ist nicht gut. Automatisieren Sie sie!


Das manuelle Löschen von Dateien und Ordnern ist keine aufregende Aufgabe, wie man vielleicht denkt. Es ist sinnvoll, sie zu automatisieren.

Hier kommt Python, um unser Leben leichter zu machen. Python ist eine ausgezeichnete Programmiersprache für Skripte. Wir werden Python nutzen, um unsere Aufgabe ohne Hindernisse zu erledigen. Zunächst sollten Sie wissen, warum Python eine gute Wahl ist.

  • Python ist eine beliebte Sprache für die Automatisierung von Aufgaben
  • Weniger Code im Vergleich zu anderen Programmiersprachen
  • Python ist mit allen Betriebssystemen kompatibel. Sie können denselben Code unter Windows, Linux und Mac ausführen.
  • Python hat ein Modul namens os, das uns hilft, mit dem Betriebssystem zu interagieren. Wir werden dieses Modul verwenden, um unsere Automatisierung des Löschens der Dateien abzuschließen.

Wir können alle lästigen oder sich wiederholenden Systemaufgaben mit Python ersetzen. Das Schreiben von Skripten zum Ausführen einer bestimmten Systemaufgabe ist ein Kinderspiel, wenn Sie Python kennen. Schauen wir uns den folgenden Anwendungsfall an.

Hinweis: Folgendes wird unter Python 3.6 getestet+

Entfernen von Dateien / Ordnern, die älter als X Tage sind

Oft benötigen Sie keine alten Protokolle und müssen diese regelmäßig reinigen, um Speicher verfügbar zu machen. Es könnte alles sein und nicht nur Protokolle.

Wir haben eine Methode namens stat im OS-Modul, die Details zum letzten Zugriff enthält (st_atime), Änderung (st_mtime), und Metadatenänderung (st_ctime) Zeit. Alle Methoden geben die Zeit in Sekunden seit der Epoche zurück. Weitere Details zur Epoche finden Sie hier Hier.

Wir werden eine Methode namens os.walk (Pfad) verwenden, um die Unterordner eines Ordners zu durchlaufen.

Führen Sie die folgenden Schritte aus, um Code für die Löschdateien / -ordner basierend auf der Anzahl der Tage zu schreiben.

  • Importieren Sie die Module Zeit, os, Shutil
  • Legen Sie den Pfad und die Tage für die Variablen fest
  • Konvertieren Sie die Anzahl der Tage in Sekunden mit Zeit Zeit() Methode
  • Überprüfen Sie, ob der Pfad vorhanden ist oder nicht os.path.exists (Pfad) Modul
  • Wenn der Pfad vorhanden ist, rufen Sie die Liste der im Pfad vorhandenen Dateien und Ordner ab, einschließlich der Unterordner. Verwenden Sie die Methode os.walk (Pfad), und es wird ein Generator zurückgegeben, der Ordner, Dateien und Unterordner enthält
  • Rufen Sie den Pfad der Datei oder des Ordners ab, indem Sie mit der Methode sowohl den aktuellen Pfad als auch den Datei- / Ordnernamen verbinden os.path.join ()
  • Bekommen das ctime von dem os.stat (Pfad) Methode unter Verwendung des Attributs st_ctime
  • Vergleich die ctime mit der Zeit, die wir zuvor berechnet haben
  • Wenn das Ergebnis größer als die gewünschten Tage des Benutzers ist, prüfen Sie, ob es sich um eine Datei oder einen Ordner handelt. Wenn es sich um eine Datei handelt, verwenden Sie die os.remove (Pfad) sonst benutze die shutil.rmtree () Methode
  • Wenn der Pfad nicht vorhanden ist, drucken Sie die Nachricht “Nicht gefunden”

Sehen wir uns den Code im Detail an.

# Importieren der erforderlichen Module
os importieren
Shutil importieren
Importzeit

# Hauptfunktion
def main ():

# Zählung initialisieren
deleted_folders_count = 0
deleted_files_count = 0

# Geben Sie den Pfad an
Pfad = "/ PATH_TO_DELETE"

# Geben Sie die Tage an
Tage = 30

# Konvertieren von Tagen in Sekunden
# time.time () gibt die aktuelle Zeit in Sekunden zurück
Sekunden = Zeit.Zeit () – (Tage * 24 * 60 * 60)

# Überprüfen, ob die Datei im Pfad vorhanden ist oder nicht
wenn os.path.exists (Pfad):

# Iterieren über jeden Ordner und jede Datei im Pfad
für root_folder, Ordner, Dateien in os.walk (Pfad):

# Vergleich der Tage
wenn Sekunden >= get_file_or_folder_age (root_folder):

# Entfernen des Ordners
remove_folder (root_folder)
deleted_folders_count + = 1 # inkrementierende Anzahl

# brechen nach dem Entfernen des root_folders
brechen

sonst:

# Ordner aus dem root_folder prüfen
für Ordner in Ordnern:

# Ordnerpfad
Ordnerpfad = os.path.join (Stammordner, Ordner)

# im Vergleich zu den Tagen
wenn Sekunden >= get_file_or_folder_age (Ordnerpfad):

# Aufrufen der Funktion remove_folder
remove_folder (Ordnerpfad)
deleted_folders_count + = 1 # inkrementierende Anzahl

# Überprüfen der aktuellen Verzeichnisdateien
für Datei in Dateien:

# Dateipfad
file_path = os.path.join (root_folder, Datei)

# Vergleich der Tage
wenn Sekunden >= get_file_or_folder_age (Dateipfad):

# Aufruf der Funktion remove_file
remove_file (Dateipfad)
deleted_files_count + = 1 # inkrementierende Anzahl

sonst:

# wenn der Pfad kein Verzeichnis ist
# im Vergleich zu den Tagen
wenn Sekunden >= get_file_or_folder_age (Pfad):

# Aufrufen der Datei
remove_file (Pfad)
deleted_files_count + = 1 # inkrementierende Anzahl

sonst:

# Datei / Ordner wurde nicht gefunden
print (f ‘"{Pfad}" wurde nicht gefunden’)
deleted_files_count + = 1 # inkrementierende Anzahl

drucken (f"Insgesamt gelöschte Ordner: {deleted_folders_count}")
drucken (f"Insgesamt gelöschte Dateien: {deleted_files_count}")

def remove_folder (Pfad):

# Entfernen des Ordners
wenn nicht shutil.rmtree (Pfad):

# Erfolgsmeldung
drucken (f"{Pfad} wurde erfolgreich entfernt")

sonst:

# Fehlermeldung
drucken (f"{Pfad} kann nicht gelöscht werden")

def remove_file (Pfad):

# Entfernen der Datei
wenn nicht os.remove (Pfad):

# Erfolgsmeldung
drucken (f"{Pfad} wurde erfolgreich entfernt")

sonst:

# Fehlermeldung
drucken (f"{Pfad} kann nicht gelöscht werden")

def get_file_or_folder_age (Pfad):

# Ctime der Datei / des Ordners abrufen
# Zeit wird in Sekunden angegeben
ctime = os.stat (Pfad) .st_ctime

# Zeit zurückgeben
ctime zurückgeben

if __name__ == ‘__main__’:
Main()

Sie müssen die folgenden zwei Variablen im obigen Code basierend auf der Anforderung anpassen.

Tage = 30
Pfad = "/ PATH_TO_DELETE"

Entfernen von Dateien, die größer als X GB sind

Suchen wir nach Dateien, die größer als eine bestimmte Größe sind, und löschen Sie sie. Es ähnelt dem obigen Skript. Im vorherigen Skript haben wir genommen Alter als Parameter, und jetzt werden wir nehmen Größe als Parameter für das Löschen.

# Importieren des OS-Moduls
os importieren

# Funktion, die die Größe einer Datei zurückgibt
def get_file_size (Pfad):

# Abrufen der Dateigröße in Bytes
size = os.path.getsize (Pfad)

# Rückgabe der Dateigröße
Rückgabegröße

# Funktion zum Löschen einer Datei
def remove_file (Pfad):

# Löschen der Datei
wenn nicht os.remove (Pfad):

# Erfolg
drucken (f"{Pfad} wurde erfolgreich gelöscht")

sonst:

# Error
drucken (f"{Pfad} kann nicht gelöscht werden")

def main ():
# Geben Sie den Pfad an
Pfad = "ENTER_PATH_HERE"

# Maximale Dateigröße in MB angeben
Größe = 500

# Überprüfen, ob der Pfad vorhanden ist oder nicht
wenn os.path.exists (Pfad):

# Größe in Bytes konvertieren
Größe = Größe * 1024 * 1024

# Durchlaufen der Unterordner
für root_folder, Ordner, Dateien in os.walk (Pfad):

# Durchlaufen der Dateiliste
für Datei in Dateien:

# Dateipfad abrufen
file_path = os.path.join (root_folder, Datei)

# Überprüfen der Dateigröße
if get_file_size (file_path) >= Größe:
# Aufruf der Funktion remove_file
remove_file (Dateipfad)

sonst:

# Nur prüfen, ob der Pfad eine Datei ist
if os.path.isfile (Pfad):
# Pfad ist kein Verzeichnis
# Überprüfen Sie die Datei direkt
if get_file_size (Pfad) >= Größe:
# Aufruf der Funktion remove_file
remove_file (Pfad)

sonst:

# Pfad existiert nicht
drucken (f"{Pfad} existiert nicht")

if __name__ == ‘__main__’:
Main()

Passen Sie die folgenden zwei Variablen an.

Pfad = "ENTER_PATH_HERE"
Größe = 500

Dateien mit einer bestimmten Erweiterung entfernen

Möglicherweise möchten Sie Dateien nach ihren Erweiterungstypen löschen. Sagen wir .log-Datei. Wir können die Erweiterung einer Datei mit der Methode os.path.splitext (path) ermitteln. Es gibt ein Tupel zurück, das den Pfad und die Erweiterung der Datei enthält.

# OS-Modul importieren
os importieren

# Hauptfunktion
def main ():

# Geben Sie den Pfad an
Pfad = "PATH_TO_LOOK_FOR"

# Geben Sie die Erweiterung an
Erweiterung = ".Log"

# Überprüfen, ob der Pfad vorhanden ist oder nicht
wenn os.path.exists (Pfad):

# Überprüfen Sie, ob der Pfad ein Verzeichnis ist oder nicht
if os.path.isdir (Pfad):

# Durchlaufen der Unterordner
für root_folder, Ordner, Dateien in os.walk (Pfad):

# Überprüfung der Dateien
für Datei in Dateien:

# Dateipfad
file_path = os.path.join (root_folder, Datei)

# Extrahieren der Erweiterung aus dem Dateinamen
file_extension = os.path.splitext (file_path) [1]

# Überprüfen der Dateierweiterung
if extension == file_extension:

# Löschen der Datei
wenn nicht os.remove (Dateipfad):

# Erfolgsmeldung
drucken (f"{Dateipfad} erfolgreich gelöscht")

sonst:

# Fehlermeldung
drucken (f"{Dateipfad} kann nicht gelöscht werden")

sonst:

# Pfad ist kein Verzeichnis
drucken (f"{Pfad} ist kein Verzeichnis")

sonst:

# Pfad existiert nicht
drucken (f"{Pfad} existiert nicht")

if __name__ == ‘__main__’:
# Hauptfunktion aufrufen
Main()

Vergessen Sie nicht, den Pfad und die Erweiterungsvariable im obigen Code zu aktualisieren, um Ihren Anforderungen zu entsprechen.

Ich würde vorschlagen, die Skripte in der NON PRODUCTION-Umgebung zu testen. Sobald Sie mit den Ergebnissen zufrieden sind, können Sie über cron (wenn Sie Linux verwenden) planen, diese regelmäßig für Wartungsarbeiten auszuführen. Python ist großartig, um dieses Ziel zu erreichen. Wenn Sie mehr lernen möchten, lesen Sie dies Udemy natürlich.

STICHWORTE:

  • Python

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map