Löschen von Dateien
Verfasst: Samstag 4. Januar 2020, 09:27
Guten Morgen zusammen,
ich benötigte ein Skript, welches mir Dateien mit einer speziellen Endung in einem Verzeichnis löscht. Das Skript habe ich objektorientiert programmiert und es funktioniert auch. Da ich noch nicht so richtig firm in der OOP bin wollte ich fragen, was ich hätte besser oder anders machen können? Kann ich das Skript auch kürzer schreiben?
ich benötigte ein Skript, welches mir Dateien mit einer speziellen Endung in einem Verzeichnis löscht. Das Skript habe ich objektorientiert programmiert und es funktioniert auch. Da ich noch nicht so richtig firm in der OOP bin wollte ich fragen, was ich hätte besser oder anders machen können? Kann ich das Skript auch kürzer schreiben?
Code: Alles auswählen
# Dieses Skript löscht Dateien mit einer bestimmten Endung in einem Verzeichnis (Windows/Linux).
import os
import os.path
import stat
class DelFiles():
def __init__(self, pfad, dateityp):
self.pfad = pfad
self.dateityp = dateityp
self.alledateien = []
self.zuloeschendedateien = []
self.geloeschtendateien = []
# Löscht Dateien mit dem entsprechenden Dateitpy im angegebenen Pfad
def loescheDateien(self):
# Prüfen, ob Pfad vorhanden ist
if not self.pruefePfad() == True:
return False
# Alle Dateien im Verzeichnis zusammen stellen
self.findeDateien()
# Zu löschende Dateien ermitteln
self.zuloeschendedateien = []
for inhalt in self.alledateien[0][2]:
if "." in inhalt:
endung = inhalt.split(".")[1]
if endung == self.dateityp:
self.zuloeschendedateien.append(inhalt)
# Lösche Dateien
self.geloeschtendateien = []
for zeile in self.zuloeschendedateien:
try:
pfad1 = self.pfad + "/" + zeile
if os.name == "nt": # Windows
os.chmod(pfad1, stat.S_IWRITE)
os.remove(pfad1)
self.geloeschtendateien.append(zeile)
elif os.name == "posix": # Linux
os.remove(self.pfad)
except OSError:
print("Beim Löschen hat sich ein Fehler ereignet.")
return False
return True
# Alle Dateien die im angegebenen Verzeichnis sich befinden, werden ermittelt.
def findeDateien(self):
self.alledateien = []
self.zuloeschendedateien = []
for datei in os.walk(self.pfad):
self.alledateien.append(datei)
# Überprüft, ob der angegebene Pfad vorhanden ist.
def pruefePfad(self):
if os.path.exists(self.pfad):
return True
else:
return False
if __name__ == "__main__":
# Instanz von DelFiles erzeugen
a = DelFiles("C:/temp/testverzeichnis/", "JPG")
# Dateien löschen
if a.pruefePfad() == True:
if a.loescheDateien() == True:
print("Keine Fehler beim Löschen...")
else:
print("Fehler beim Löschen...")
else:
print("Pfad ist nicht vorhanden...")
Vielen Dank im Voraus und viele Grüße
snowflake