Wiki Aventurica:Werkzeuge/Grundgeruest.py

Version vom 13. Dezember 2007, 23:15 Uhr von Falk Steinhauer (Diskussion | Beiträge) (→‎Grundgerüst: cat)
(Unterschied) ← Nächstältere Version | Zeige aktuelle Version an (Unterschied) | Nächstjüngere Version → (Unterschied)

Grundgerüst 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.