Programmiersprachen
LVA 185.208, VL 2.0, 2007 S
3. Übungsaufgabe
Schreiben Sie ein Werkzeug zum händischen Klassifizieren von
Bild-Dateien (zu Testzwecken können es auch andere Dateien sein) in
Perl, Python, PHP oder AWK (oder einer anderen Scripting-Sprache, auch unter
Zuhilfenahme von Shell-Scripts). Das Werkzeug soll auf folgende Weise
verwendbar sein:
- Zu Beginn (beispielsweise beim Aufruf) definiert man Quellordner, deren
enthaltene Bild-Dateien (erkennbar an der Endung .jpg) klassifiziert und
kopiert werden sollen. Weiters definiert man Zielordner, in die diese
Dateien kommen sollen, und assoziiert jeden Zielordner mit einer Ziffer als
Kurznamen (z.B. durchnummeriert von 0 bis 9). Schließlich gibt man
ein Programm an, das für jede zu klassifizierende Datei aufgerufen
wird, beispielsweise ein Programm zum Betrachten oder Bearbeiten von
Bildern.
- Das angegebene Programm wird für jede Bild-Datei in den Quellordnern
in beliebiger Reihenfolge aufgerufen. Danach erwartet das Werkzeug vom
Benutzer die Eingabe keiner, einer oder mehrerer Ziffern. Die Datei wird
in die der Eingabe entsprechenden Zielordner kopiert. Es ist zu beachten,
dass das aufgerufene Programm die Datei möglicherweise verändert,
und in diesem Fall die veränderte Datei (mit unverändertem Namen)
in die angegebenen Zielordner geschrieben werden soll.
- Es kann zu Namenskonflikten in Zielordnern kommen. In diesem Fall (und
nur in diesem) sollen Dateien automatisch so umbenannt werden, dass die
Namen eindeutig sind. Es ist kein fixes Namensschema für umbenannte
Dateien vorgegeben; legen Sie selbst eines fest. Wenn zwei Dateien, die mit
demselben Namen in denselben Zielordner kommen sollen, auch denselben
Inhalt haben, dann braucht keine Umbenennung erfolgen; es handelt sich nur
um eine Datei.
- Zielordner und Quellordner können gleich sein. Um dadurch
mögliche Konflikte zu vermeiden, soll die Menge der zu bearbeitenden
Bild-Dateien bereits unmittelbar nach Aufruf des Werkzeugs ermittelt und
danach nicht mehr geändert werden. Während der Ausführung
des Werkzeugs hinzugekommene Dateien bleiben unberücksichtigt.
- Bei Beendigung des Werkzeugs wird ein Protokoll ausgegeben. Darin ist
verzeichnet, welche Datei verändert, wohin kopiert und wie umbenannt
wurde. Ebenso sollen hier Konflikte der Art gemeldet werden, dass eine zu
bearbeitende Datei zum Zeitpunkt der Bearbeitung nicht existiert hat oder
das ausgeführte Programm mit einem Fehler beendet wurde.
Lösen Sie möglichst viele Teilaufgaben durch Verwendung der von der
Programmiersprache und dem Betriebssystem (inklusive Systemwerkzeugen)
bereitgestellten Resourcen. Je kleiner und einfacher das Werkzeug wird, umso
besser.