Freistellung beim Bundesamt für Finanzen mit Python prüfen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

404 Die Seite gibt's leider nicht.
Ist der Link falsch?

cu beyond
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Bei mir wird die Seite schon gefunden, Mozilla schreit nur wegen der Zertifizierung.

Gruß, mawe
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
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)...
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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.
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>
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()
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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.
[code]#!/usr/bin/env python
import this[/code]
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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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
Antworten