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 ? :roll: :wink: 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! :evil: So schwer kann das doch nicht sein...

mfg Milan