ich bin endlich mit meinem Skript fertig, dieser soll bestimmte Dateien (mit den Datentyp .prt) in selbst gewählten Laufwerken, suchen und anschließend löschen. Nun soll ich dies alles mit einer Grafischen Oberfläche erstellen und ich soll Kivy nutzen. Aber irgendwie komm ich mit Kivy überhaupt nicht klar... Will das am Anfang eine abfrage erstellt wird, welches Laufwerk durchsucht werden soll, dann soll eine anzeige erscheinen die alle gefundenen Dateien aufzählt(inc. Pfad) und dann auch die Anzahl dessen und zu guter letzt soll noch gefragt werden ob diese wirklich gelöscht werden sollen. Und dann natürlich auch sowas wie z.B. "Sie haben den Laufwerk x ausgewählt" oder am Ende "die Dateien wurden erfolgreich gelöscht!" Unten seht ihr wie mein Skript ohne GUI aussieht:
Hauptprogramm:
Code: Alles auswählen
from laufwerk_durchsuchen import Laufwerke
from gefundene_objekte import Files
from löschen_der_dateien import Delete
objLaufwerk = Laufwerke()
laufwerke = objLaufwerk.laufwerkssuche()
objFiles = Files(laufwerke)
dateien = objFiles.gefundene_objekte()
objDelete = Delete(dateien)
objDelete.loeschung()
Code: Alles auswählen
import win32api
class Laufwerke:
def __init__(self):
pass
def laufwerkssuche(self):
while True:
print("Bitte Laufwerks-Buchstaben eigeben")
global eingabe
eingabe = input()+":\\"
# Laufwerke wählen.
thelist = win32api.GetLogicalDriveStrings()
liste_mit_laufwerken = thelist.split('\000')[:-1]
if eingabe in liste_mit_laufwerken:
break
else:
print("Laufwerk nicht gefunden!")
global driveslist
driveslist = [eingabe]
print("Folgende Laufwerke werden gescannt:", driveslist)
return driveslist
Code: Alles auswählen
import sys
from laufwerk_durchsuchen import Laufwerke
from pathlib import Path
import os
class suche:
def __init__(self):
pass
def searchfiles(self, dateien):
suffixes = []
returnfile = []
print("\nFolgende Datein wurden gefunden:")
for root, dirs, files in os.walk(dateien): # 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
class Files:
def __init__(self, Laufwerke):
self._laufwerke = Laufwerke
def gefundene_objekte(self):
objLaufwerk = Laufwerke()
objSuche = suche()
# Durch neue Funktion ersetzen und für jeden Laufwerksbuchstaben ausführen.
dateiengesamt = []
for elem in self._laufwerke:
dateiengesamt += objSuche.searchfiles(elem)
print(dateiengesamt)
# Anzahl aller gefundenen Dateien.
if (len(dateiengesamt)) == 0:
print("\nEs konnten keine Protokolle gefunden werden")
sys.exit()
else:
print("\nDie Anzahl der gefundenen Protokolle liegt bei:", (len(dateiengesamt)))
return dateiengesamt
Modul: löschen_der_dateien
Code: Alles auswählen
import sys
import os
from datetime import datetime
from datetime import timedelta
class Delete:
def __init__(self, dateien):
self._dateien = dateien
def loeschung(self):
# 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":
max_mtime = datetime.now() - timedelta(seconds=10) # zum Testen auf 10 Sekunden eingestellt
# Datei entfernen
for elem in self._dateien:
file_mtime = datetime.fromtimestamp(os.path.getmtime(elem))
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()
Könnt ihr mir weiter helfen?
Danke im Vorraus
Gruß
Ste