ich bin relativ neu in diesem Themengebiet und brauche Hilfe.
Ich habe vor kurzem ein Programm geschrieben das nach bestimmten Dateitypen (*.prt) in selbst gewählten Laufwerken suchen soll und diese dann anschließend löschen soll. Nun wird von mir verlangt dieses objektorientiert zuschreiben, damit hinterher eine Benutzeroberfläche benutzt werden kann (Kivy). Ich weiß aber überhaupt nicht wie ich das ganze angehen soll...Eine Idee wäre es zwei Objekte zu erstellen: Search und Delete. Aber wie bereits gesagt weiß ich nicht wie ich das ganze angehen soll und vielleicht habt ihr einen bessere Idee. Wäre jemand bereit mir das zu erklären oder noch besser zu schreiben? Unten findet ihr das Hauptprogramm und noch das verbundene Modul!
Hauptprogramm
Code: Alles auswählen
import sys,os, win32api
from datetime import datetime, timedelta
import SearchFiles
# Laufwerke wählen.
list = win32api. GetLogicalDriveStrings()
ListeMitLaufwerken = list.split('\000') [:-1]
for i in range(sys.maxsize):
print("Bitte Laufwerks-Buchstaben eigeben")
eingabe = input()+":\\"
if eingabe in ListeMitLaufwerken:
break
else:
print("Laufwerk nicht gefunden!")
driveslist = [eingabe]
print("Folgende Laufwerke werden gescannt:", driveslist)
# Durch neue Funktion ersetzen und für jeden Laufwerksbuchstaben ausführen.
dateiengesamt = []
for elem in driveslist:
dateiengesamt += SearchFiles.searchfiles(elem)
print(dateiengesamt)
# Anzahl aller gefundenen Dateien.
if (len(dateiengesamt)) == 0:
print("\nEs wurden keine Protokolle gefunden")
sys.exit()
else:
print("Die Anzahl der gefundenen Protokolle liegt bei:", (len(dateiengesamt)))
# Ausgabe wirklich löschen?
print("\nSollen alle Protokolle die älter als 2 Monate sind, gelöscht werden?(0 = nein und 1 = ja)")
loeschen = input()
#Antwort ob gelöscht werden soll.
if loeschen == "1":
# Datei entfernen
for elem in dateiengesamt:
file_mtime = datetime.fromtimestamp(os.path.getmtime(elem))
max_mtime = datetime.now() - timedelta(seconds=10) #zum Testen auf 10 Sekunden eingestellt
if file_mtime < max_mtime:
print("Alle Protokolle die älter als 2 Monate sind, wurden entfernt")
try:
os.remove(elem)
except:
print("Fehler beim löschen der Protokolle")
sys.exit()
else:
print("Protokolle sind nicht älter als 2 Monate!")
else:
print("Sie haben den Vorgang abgebrochen")
sys.exit()
Code: Alles auswählen
from pathlib import Path
import os
def searchfiles(laufwerk):
suffixes = []
returnfile = []
print("Folgende Datein wurden gefunden:")
for root, dirs, files in os.walk(laufwerk): # root = Path, dirs = folders, files = files
for file in Path(str(root)).iterdir():
if file.suffix == '.prt': # oder -> file.stem == 'filename'
returnfile.append(file)
return returnfile
Gruß