Wiki Aventurica:Werkzeuge/Grundgeruest.py
aus Wiki Aventurica, dem DSA-Fanprojekt
Grundgerüst[Quelltext bearbeiten]
Ausgehend von diesem Codeschnippsel kann man einfach neue Funktionen basteln.
Das macht alles der vorliegende Code
- ist schon mit sämtlichen lästigen Vorgaben versehen (Unicode-Zeile, Überschriftsvormatierung, Versionszeile, Importe, class-Definition)
- (und spart daher Tipparbeit ;-)
- er öffnet ein Fenster (Bug-Workaround),
- öffnet einen Dateilisten-Fenster (FileDialog)
- gibt den Dateinnamen inkl. Pfad der ausgwählten Datei in einer Variable zurück
- es versucht die Umwandlungsproblematik (UTF-8 contra CP1252) in den Griff zu bekommen
- es versucht nicht blind zu öffnen, sondern möglichst Fehler abzufangen
- es wird sauber beendet und offenes sauber geschlossen(Bug-Workaround)
Von daher als Ausgangsbasis empfehlenswert ;-) Ich freue mich aber über jede Anregung und Verbesserung.
#!/usr/bin/python # -*- coding: utf-8 -*- u"""Grundgerüst für ein Hilfsskript in Python für das Wiki Aventurica --------------------------------------------------------------------- Das Skript macht: * * In eine Klasse umgesetzt von Alrik""" __version__='$Id: grundgeruest.py,v 0.35 2006/05/31 18:40:00 Alrik $' import re, Tkinter from tkFileDialog import * from tkSimpleDialog import * class DeineKlasse: u"""Hier bitte deinen Code in dieser Klasse einfügen""" def __init__(self, meister=None): pass def deineFunktion(self, egalparameter): pass pass #zum Testen: if __name__=="__main__": fenster=Tkinter.Tk() ##Workaround quelldatei=u"DeineDatei.wiki.txt" quelldatei = askopenfilename(defaultextension='*.txt', filetypes=[('Alle Dateien','*.*'), ('Textdateien','*.txt'),('Wikidateien','*.wiki.txt')], initialfile=quelldatei) zieldatei=u'DeineDatei-Modifiziert.wiki.txt' try: t=open(quelldatei,'r') except IOError: print u"Dateifehler, die Datei '%s' gibts vermutlich nicht. ->Abbruch" % quelldatei else: txt = t.read() t.close() deineinstanzvar = DeineKlasse() try: wasauchimmer = deineinstanzvar.deineFunktion(egalparameter) except UnicodeDecodeError: ##ohne Fehlerabfrage hängt das Tk-Fenster abgestürzt herum print "Fehler: UnicodeDecodeError aufgetreten! Es wird CP1252 probiert..." egalparameterCP1252=wasauchimmer.decode("CP1252") try: wasauchimmer2 = deineinstanzvar.deineFunktion(egalparameterCP1252) except UnicodeDecodeError: ##ohne Fehlerabfrage hängt das Tk-Fenster abgestürzt herum print "Fehler: UnicodeDecodeError aufgetreten! CP1252 hat auch nix gebracht. Hier weitere Umwandlungen einbauen..." else: print wasauchimmer2 zieldatei = asksaveasfile(defaultextension='*.txt', filetypes=[('Alle Dateien','*.*'), ('Textdateien','*.txt'),('Wikidateien','*.wiki.txt')], initialfile=zieldatei).name try: t=open(zieldatei,'w') except IOError: print u"Fehler: '%s' konnte nicht zum Schreiben geöffnet werden. ->Abbruch" % zieldatei else: t.write(wasauchimmer2) t.flush() t.close() fenster.destroy() ##Workaround
Ach ja VORSICHT:UNGETESTET Habe das jetzt aus dem Handgelenkt geschüttelt. Möglicherweise fehlt noch irgendwo ein Doppelpunkt, etc.