Learning Python with pain…

… nein, der Titel dieses Posts soll Python nicht schlecht machen, im Gegenteil, es ist ein nettes Wortspiel in diesem Zusammenhang ;).

Um mal ein wenig in die Programmiersprache Python, die bei Mausbrand verwendet wird, reinzukommen, habe ich mir glaube ich das trockendste Thema überhaupt ausgesucht :-D… ich muss aber zu meiner Verteidigung sagen, dass ich der Meinung bin, man kann eine Programmiersprache nur erfolgreich lernen und einsetzen, wenn man damit auch Programme schreibt, die einen konkreten Nutzen haben und mit denen man auch etwas bewirken kann.

Nun, für mein erstes Python-Programm habe ich mir ausgesucht, dass ich für den Verein eine Schnittstelle benötige, um SEPA-Lastschriften automatisiert per Datei bei der Bank einzureichen. Dies wurde in der Vergangenheit immer händisch gemacht und ist ein langweiliger, undankbarer Job.

Das kleine Skript sepa_pain.py implementiert das Nachrichtenformat SEPA-PAIN Version 008-002 des EBICS (Electronic Banking Internet Communication Standard). Ich muss dazu sagen, dass ich einen Großteil der Logik aus einer kleinen PHP-Library geklaut habe, nur ich wollte mich ja erst mal ein wenig mit Python vertraut machen.

Nun hier ist das Programm! Für Augenkrebs und sonstiges übernehme ich keine Haftung. Ich denke auch, dass ich einiges hätte eleganter machen können, das Problem ist nur, das ich mich dazu noch zu wenig mit Python auskenne um solche Tricks zu kennen.

Daher: Quick&Dirty!

Das schöne: Die Dateien, die dieses Skript ausgibt, werden sogar im Online-Banking eingelesen und akzeptiert. Es scheint also weitestgehend valide zu sein.

Allerdings muss man ja schon anmerken, dass sich die Finanzbehörde mit dem namen PAIN mal wieder alle Mühe gegeben hat… es ist wirklich schmerzhaft, diese komischen XML-Tags zu entziffern wie z.B. DtOfSgntr oder DrctDbtTxInf… wunderbar! 🙁