Seite 1 von 1
Freistellung beim Bundesamt für Finanzen mit Python prüfen
Verfasst: Donnerstag 9. September 2004, 09:59
von UdoKorda
Auf der Seite
https://lxzopex1.bfinv.de/zope/eibe/xmlrpc/ gibt es ein Python Beispiel. Ich habe das etwas modifiziert und laufen lassen,
funktioniert aber nicht. Wer kann helfen? Ich bin absoluter Anfänger
in Python.
Hier mein Programm:
Code: Alles auswählen
import xmlrpclib
fileout=open('Ausgabe.txt', 'w')
fileinp=open('Eingabe.txt', 'r')
print fileout
user = fileinp.readline()
key = fileinp.readline()
stnr = fileinp.readline()
sinr = fileinp.readline()
land = fileinp.readline()
print user,key,stnr,sinr,land
def eibeRPC(user, key, stnr, sinr, land):
"Gibt Ergebnissatz zurueck"
server_url="https://lxzopex1.bfinv.de/RPC2/"
server=xmlrpclib.Server(server_url)
return server.eibe.getEibe(str(user),str(key),str(stnr),str(sinr),str(land))
if __name__ == '__main__':
aus = eibeRPC('UdoKorda','9CtJa','220/106/03424','35615277','32')
print aus
fileout.write(aus)
edit by Dookie: ich hab den Code in Pythontags gesetzt
Verfasst: Donnerstag 9. September 2004, 14:03
von Beyond
404 Die Seite gibt's leider nicht.
Ist der Link falsch?
cu beyond
Verfasst: Donnerstag 9. September 2004, 15:28
von mawe
Hi!
Bei mir wird die Seite schon gefunden, Mozilla schreit nur wegen der Zertifizierung.
Gruß, mawe
Verfasst: Donnerstag 9. September 2004, 16:58
von Dookie
Hi,
https://lxzopex1.bfinv.de/ geht noch, aber
https://lxzopex1.bfinv.de/zope/ geht schon nicht mehr
https://lxzopex1.bfinv.de/RPC2/ geht liefert aber den falschen doctype
Da scheint der Server verkonfiguriert zu sein.
Gruß
Dookie
Verfasst: Freitag 10. September 2004, 09:42
von UdoKorda
Danke für die Beiträge.
Auf die Seite des Finanzamtes kommt man wohl nur als angemeldeter Benutzer.
Hier das Original wie es im Finanzamt steht:
Code: Alles auswählen
import xmlrpclib
def eibeRPC(user, key, stnr, sinr, land):
"Gibt Ergebnissatz zurueck"
server_url="https://lxzopex1.bfinv.de/RPC2/"
server=xmlrpclib.Server(server_url)
return server.eibe.getEibe(str(user),str(key),str(stnr),str(sinr),str(land))
if __name__ == '__main__':
aus = eibeRP('userxyz','geheimerkey','123/456/7890','123456789012','99')
print aus
Edit by Milan: hab python-Tags drum gesetzt, ohne die ist der Code wertlos (Einrückungen)...
Verfasst: Freitag 10. September 2004, 14:32
von Milan
Hi. Meine Vermutung: du hast vergessen, die Zeilenumsprünge abzutrennen, da du ja die Daten aus einer Datei ausliest. Dann hätte aber eigentlich eine Fehlermeldung auftauchen müssen, oder hast du die uns unterschlagen ?

So sollte es wenn aussehen:
Code: Alles auswählen
user = fileinp.readline().replace("\n","")
key = fileinp.readline().replace("\n","")
stnr = fileinp.readline().replace("\n","")
sinr = fileinp.readline().replace("\n","")
land = fileinp.readline().replace("\n","")
Außerdem solltest du auch deine Dateien bei programmende wieder schließen. Das macht zwar Python automatisch, aber es ist immer besser dies auch explizit mit fileout.close() bzw fileinp.close() zu tun.
Verfasst: Montag 13. September 2004, 09:17
von UdoKorda
Hi ihr Python-Spezialisten,
Danke für die Anregungen.
Ich habe vergessen euch mal den Trace zu zeigen,
hier kommt er:
Code: Alles auswählen
C:\Python23>python bb.py
<open file 'Ausgabe.txt', mode 'w' at 0x008CDFA0>
UdoKorda
9CtJa
220/106/03424
35615277
32
Traceback (most recent call last):
File "bb.py", line 24, in ?
aus = eibeRPC('UdoKorda','9CtJa','220/106/03424','35615277','32')
File "bb.py", line 21, in eibeRPC
return server.eibe.getEibe(str(user),str(key),str(stnr),str(sinr),str(land))
File "C:\Python23\lib\xmlrpclib.py", line 1029, in __call__
return self.__send(self.__name, args)
File "C:\Python23\lib\xmlrpclib.py", line 1316, in __request
verbose=self.__verbose
File "C:\Python23\lib\xmlrpclib.py", line 1080, in request
return self._parse_response(h.getfile(), sock)
File "C:\Python23\lib\xmlrpclib.py", line 1219, in _parse_response
return u.close()
File "C:\Python23\lib\xmlrpclib.py", line 742, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 4: "error executing RPC `eibe.getEibe'.\nUndefined subro
utine &Apache::XMLRPC::http_error called at /etc/apache/services line 126.\n">
C:\Python23>
Verfasst: Montag 13. September 2004, 10:57
von UdoKorda
Hi,
Das ganze Problem lag nur am falschen Password.
Jetzt bekomme ich eine richtige Rückmeldung:
Mit "print aus" wird der Rückgabestring ausgegeben.
Wie bekomme ich den string in meine Ausgabedatei?
Hier das Programm:
Code: Alles auswählen
import xmlrpclib
fileout=open('Ausgabe.txt', 'w')
fileinp=open('Eingabe.txt', 'r')
print fileout
user = fileinp.readline().replace("\n","")
key = fileinp.readline().replace("\n","")
stnr = fileinp.readline().replace("\n","")
sinr = fileinp.readline().replace("\n","")
land = fileinp.readline().replace("\n","")
print user,key,stnr,sinr,land
def eibeRPC(user, key, stnr, sinr, land):
"Gibt Ergebnissatz zurueck"
server_url="https://lxzopex1.bfinv.de/RPC2/"
server=xmlrpclib.Server(server_url)
return server.eibe.getEibe(str(user),str(key),str(stnr),str(sinr),str(land))
if __name__ == '__main__':
aus = eibeRPC(user,key ,stnr,sinr,land)
print aus
fileout.close()
fileinp.close()
Verfasst: Montag 13. September 2004, 12:37
von Dookie
Wie bekomme ich den string in meine Ausgabedatei?
ich würds mal so versuchen:
Code: Alles auswählen
if __name__ == '__main__':
aus = eibeRPC(user,key ,stnr,sinr,land)
print aus
fileout.write(aus)
fileout.close()
fileinp.close()
Gruß
Dookie
P.S.: setze Pythoncode bitte in Pythontags, dafür gibts im Formular fürs Posten oben soger einen eigenen Button, also einmal auf Python clicken und dann den Code einfügen und nochmal auf Python* clicken.
Verfasst: Dienstag 14. September 2004, 08:58
von UdoKorda
Ich habe das Beispiel in meinem Programm eingebaut.
Hier das Programm und die Fehlermeldung:
Code: Alles auswählen
import xmlrpclib
fileout=open('Ausgabe.txt', 'w')
fileinp=open('finprein.txt', 'r')
print fileout
user = fileinp.readline().replace("\n","")
key = fileinp.readline().replace("\n","")
stnr = fileinp.readline().replace("\n","")
sinr = fileinp.readline().replace("\n","")
land = fileinp.readline().replace("\n","")
print user,key,stnr,sinr,land
def eibeRPC(user, key, stnr, sinr, land):
"Gibt Ergebnissatz zurueck"
server_url="https://lxzopex1.bfinv.de/RPC2/"
server=xmlrpclib.Server(server_url)
return server.eibe.getEibe(str(user),str(key),str(stnr),str(sinr),str(land))
if __name__ == '__main__':
aus = eibeRPC(user,key ,stnr,sinr,land)
print aus
fileout.write(aus)
fileout.close()
fileinp.close()
Code: Alles auswählen
C:\Python23>python intfinfr.py
<open file 'Ausgabe.txt', mode 'w' at 0x008D3020>
UdoKorda KkMavjwL7NP7DQ9 220/106/03424 35615277 32
{'fehler_code': '000', 'upddat': '2003-04-22', 'plzgk': '', 'pfle': '', 'stnr':
'322022010603424', 'gedatle': '0000-00-00', 'nachname': u'B\xf6- Fi Hoch- und',
'anr': 'Firma', 'plzpf': '', 'fehler_text': 'Datensatz gefunden', 'pf': '', 'vo
rnamele': '', 'ortbl': '', 'gewerk': '', 'ortle': '', 'kzstorno': '0', 'ort': 'L
ichtenberg', 'sinr': '322035615277', 'plz': '09638', 'stnr15': '322022010603424'
, 'strle': '', 'nachnamele': '', 'refid': '1095148419.64846', 'gedat': '2006-04-
16', 'plzle': '', 'str': u'Mittelgebirgsstra\xdfe 1', 'gbdat': '2003-04-17', 'kz
': '', 'ustidnr': '', 'vorname': ''}
Traceback (most recent call last):
File "intfinfr.py", line 25, in ?
fileout.write(aus)
TypeError: argument 1 must be string or read-only character buffer, not dict
Gruß
Udo
Verfasst: Dienstag 14. September 2004, 13:09
von Dookie
Hi,
1. zum letzten mal setze Pythoncode bitte in Pythontags!
2. Jo wo is das Problem, die Fehlermeldung sagt ja eingentlich alles.
aus ist ein Dictionary und kann so natürlich nicht in eine Datei geschreiben werden. Du kommst aber bei einem Dictionary ganz leicht an die Daten um sie in eine Datei zu schreiben.
Hier im Forum und bei jedem guten Tutorial findest du sicher 100 Möglichkeiten um ein Dict in eine Datei zu schreiben.
Gruß
Dookie
Verfasst: Dienstag 14. September 2004, 14:01
von Milan
Ich hab Dookies Anweisung umgesetzt (siehe oben), da Gäste ihre Postings nicht editieren können. Für alle anderen, die auch keine Tags für Pythoncode und Fehlermeldungen setzten, gilt das hier!
So schwer kann das doch nicht sein...
mfg Milan