Dateisuche und Bearbeitung mit Python 3.x / Tkinter Dieses Programm kann nichts, was nicht bereits 1000 andere Programme auch schon können: Es durchsucht Teile der Festplatte nach Dateien, die vorgegebene Bedingungen erfüllen und schreibt das Suchergebnis in eine Datei. Diese Datei dient anschließend als Futter für Scripte, die die erfassten Dateien in irgendeiner Form verarbeiten. Das kann nützlich sein für diverse Zwecke, z.B. für die tägliche Sicherung von geänderten Dateien. Das Ganze ist mit Python3.3 umgesetzt, Tkinter liefert die Benutzerschnittstelle. Das Ziel der Übung war die Arbeit mit Tkinter, Threads, Queues und allgemein die Integration von non-GUI Programmen in GUI-Umgebungen. Die Werke von Mark Lutz gaben die notwendigen Hinweise zur Umsetzung. Kern des Programmes ist os.walk(). Beginnend mit einem wählbaren Startvererzeichnis hangelt sich os.walk() durch sämtliche Verzeichnisse und deren Unterverzeichnisse und stellt die Namen der vorhandenen Dateien zur Verfügung. Mit Filtern für die Pfadangabe, die Dateierweiterung, den Dateinamen sowie Einschränkungen zum Zeitpunkt der letzten Änderung sowie der Dateigröße können nun Dateien herausgefischt werden. Das Ergebnis wird in einer Datei abgelegt (inclusive des Zeitpunktes der letzten Änderung, der Dateigröße und dem absoluten Pfad der gefilterten Dateien). Im nächsten Schritt kann das gespeicherte Suchergebnis mit einem Script weiterbearbeitet werden. Die für die Arbeit der Scripte erforderlichen Parameter werden in einer GUI-Umgebung ausgewählt. Entstanden sind: - das Archivieren in komprimierten Zip-Files, mit absoluten oder relativen Pfaden. - das Kopieren auf andere Verzeichnisse / Laufwerke, mit absoluten oder relativen Pfaden. - das Anzeigen und ggf. Ändern von Text-Dateien. - das Suchen und Ersetzen innerhalb von Text-Dateien. Für letzteres sind zwei Varianten entstanden: 1.) Suchen und Ersetzen wird durch Stringoperationen ausgeführt, das Ergebnis wird als Liste (StingIO) ausgegeben, die Dateien werden nicht verändert. Die Fundstellen werden benannt mit einem Tupel aus Startindex und Endindex (Beispiel (2.0, 2.9) -> Zeile 2, 1-9. Zeichen). Diese Werte sind identisch mit dem Index des ScrolledText.Objektes und können im Editor mit Edit/Goto selektiert werden. 2.) Suchen und Ersetzen wird durch die Methode search() des Objektes Scrolledtext() durchgeführt, alle Textstellen werden markiert und ggf. ersetzt. Optional können hier Regular Expressions zur Suche eingesetzt werden. Die Dateien werden auch hier nur im Read-Modus geöffnet, Änderungen werden nicht automatisch zurückgeschrieben. Suchstrings Die Suchstrings werden als Komma-separierte Liste eingegeben, führende und nachfolgende whitespaces werden gestripped. Bei der Filterung der Dateierweiterung ist eine exakte/vollständige Eingabe erforderlich, bei allen anderen Feldern wird eine Substring-Suche durchgeführt. Bei der Filterung nach dem Alter der Datei wird die keine Datumsangabe erwartet. Statt dessen das Zeitintervall seit der letzten Änderung. Diese Angabe kann in der Einheit Minuten, Stunden, Tage oder Jahre erfolgen (durch anhängen eines entsprechenden Buchstabens). Bei der Dateigröße kann die Eingabe durch b/B, k/K oder m/M auf Byte, KiloByte oder MegaByte umgerechnet werden. Zipfile Für die Ablage des Archivfiles kann ein Vorgabeverzeichnis gewählt werden. Der Dateiname wird automatisch gebildet aus dem Namen des Startverzeichnis (oberste Ebene) mit angehängtem Datum. (Beispiel: walker_140901.zip, wenn das Startverzeichnis 'd:\progs\python\walker' lautet und das aktuelle Datum der 01.09.2014 ist). Ist diese Datei bereits vorhanden, dann wird ein Index in der Form '_a' angehängt, wobei 'a' bis maximal 'z' hochgezählt wird. Kopieren Beim Kopieren können Dateien, die im Ziel bereits existieren, durch angehängen eines Index vor dem Kopieren umbenannt werden (siehe Zipfile). Michael S.
Hallo, hier sind es noch einige kleinere Verbesserungen ein- und einige größere Bugs ausgebaut ... Michael S.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.