Montag, 13. Oktober 2008

entwickler.com Magazine Konferenzen Entwickler Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag

Datei-Endungen tauschen

Stellen Sie sich vor, Sie müssen Datei-Endungen im Auge behalten, da bestimmte Programme dieselben anders als erwartet speichern: so kann es vorkommen, das ein Grafik-Programm (oder ein PDF-Writer etc.) Endungen nach diesem Muster erzeugt: *.JPG. Sie möchten jedoch vielmehr eine klein geschriebene Endung (*.jpg). Das folgende Python-Skript erledigt diese Aufgabe im Handumdrehen:


#!/usr/bin/env python

import os, sys, glob

class Endung(object):

def __init__(self, alt, neu):
self.tausche(alt, neu)

def tausche(self, alt, neu):
try:
alt = ''.join(['*.', alt])
neu = ''.join(['.', neu])
for datei in glob.glob(alt):
os.rename(datei, ''.join([os.path.splitext(datei)[0], neu]))

# Ergebnis checken
res = os.listdir('.')
print '\n'.join([ x for x in res if os.path.splitext(x)[1] == neu ])
except:
print sys.exc_type, '\n', sys.exc_value, '\n'

if __name__ == '__main__':
alt = 'JPG'; neu = 'jpg'
Endung(alt, neu)

Natürlich muss ein solches Skript an die jeweilige Situation angepasst werden. Das Beispiel sollte lediglich die grundsätzliche Vorgehensweise demonstrieren. Die entscheidende Rolle fällt den Modulen os und glob zu, sie verrichten den größten Teil der Arbeit. Unter dem Kommentar (# Ergebnis pruefen) wird das Ergebnis - die geänderten Dateien-Namen – ausgegeben.
Speichern Sie das Skript als endung.py und rufen Sie es auf:

ich@meinrechner> python endung.py

Das Skript lässt sich weiter anpassen: modifizieren Sie beispielsweise die letzte Zeile: Endung(sys.argv[1], sys.argv[2]).
Durch Argumente (auf der Kommandozeile) wird der Code selbstredend flexibler und ist zudem nicht mehr auf einen bestimmten Datei-Typ (*.JPG) beschränkt. Der neue Aufruf:

ich@meinrechner> python endung.py JPG jpg

Viel Spass.

Thomas Kaufmann







Software & Support Verlag GmbH