Forum: Projekte & Code Dateisuche und Bearbeitung mit Python 3.x / Tkinter


von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.