Seite 1 von 1
xml-Tabelle mit Python erstellen
Verfasst: Freitag 17. Juni 2011, 20:10
von hotzenplotz
Hallo,
ich suche eine Möglichkeit mit Python eine einfache Tabelle zu erstellen (Format = xml), die dann mit Excel geöffnet werden kann und dabei noch "sauber" aussieht (keine Zeilen, Spalten verrutscht etc.. )
Zur Zeit habe ich einen String, erweitere diesen Zeile für Zeile manuell und speichere ihn dann als .xml ab. Das funktioniert auch einigermaßen...
Leider ist das 1. sehr aufwendig und 2. sieht die Tabelle in Excel nicht gerade ordentlich aus.
Hätte da jemand einen Rat für mich?
Re: xml-Tabelle mit Python erstellen
Verfasst: Freitag 17. Juni 2011, 20:19
von deets
Das sind zwei getrennte Probleme.
Erstens: wie muss das XML aussehen? Ich habe kein Excel, insofern kann ich das nicht nachpruefen. Wie sieht denn das XML aus?
Zweitens: wie generiert man XML. Da helfen Bibliotheken wie lxml, oder Template-Engines wie zB Genshi.
Re: xml-Tabelle mit Python erstellen
Verfasst: Freitag 17. Juni 2011, 20:32
von hotzenplotz
Stimmt. Das Excel-Problem können wir erst einmal hinten anstellen.
Ich erstelle das XML-File so:
file = open("c:/test.xml", "w")
x = "<root> "
x = x + "\n\t<daten> etc.. </daten>"
x = x + "\n\t</root>" ....
file.write(x)
file.close()
Wie gesagt, sehr umständlich

Re: xml-Tabelle mit Python erstellen
Verfasst: Freitag 17. Juni 2011, 20:37
von Hyperion
hotzenplotz hat geschrieben:
Wie gesagt, sehr umständlich

Dir wurde ja die Lösung dafür schon genannt
Dateien solltest Du übrigens so öffnen:
Code: Alles auswählen
with open(...) as handler:
# handler ist hier file-object
Damit werden sie auf jeden Fall geschlossen und man spart sich die Exceptionbehandlung.
Strings sollte man tunlichst nicht mit "+" zusammenbauen, sondern sich die Teilkomponenten idealerweise in einem Iterable merken und dann per `"".join()` zusammenbauen:
Re: xml-Tabelle mit Python erstellen
Verfasst: Freitag 17. Juni 2011, 23:29
von hotzenplotz
Danke für die Tipps!
Dann werde ich mal über lxml und Genshi informieren.
Re: xml-Tabelle mit Python erstellen
Verfasst: Samstag 18. Juni 2011, 16:08
von hotzenplotz
Das hat alles super funktioniert! Danke nochmals.
Ich habe aber noch eine Frage:
Wenn ich das XML-File abspeichern möchte, benutze ich den Befehl:
tree = etree.ElementTree(root)
tree.write("IchbineineXMLDatei.xml")
Wie kann ich den Pfad angeben, wo die Datei gespeichert werden soll?
So wird sie immer im Python-Verzeichnis erstellt.
Re: xml-Tabelle mit Python erstellen
Verfasst: Samstag 18. Juni 2011, 16:14
von /me
hotzenplotz hat geschrieben:tree.write("IchbineineXMLDatei.xml")
Wie kann ich den Pfad angeben, wo die Datei gespeichert werden soll?
Code: Alles auswählen
tree.write("/ich/bin/der/pfad/IchbineineXMLDatei.xml")
Re: xml-Tabelle mit Python erstellen
Verfasst: Samstag 18. Juni 2011, 16:19
von hotzenplotz
Da hätte ich auch selber drauf kommen können

Danke!
Re: xml-Tabelle mit Python erstellen
Verfasst: Samstag 18. Juni 2011, 16:30
von problembär
Bzgl. des Verzeichisses ist oft auch "os.path.join()" ganz brauchbar.
Gut, wenn Du so zurechtkommst. Ich persönlich würde vielleicht Excel über win32com direkt ansprechen, und dort die Daten eintragen. Finde ich meistens eleganter als eine externe Datei zu öffnen.
Es sei denn, Du brauchst die xml-Datei noch für andere Zwecke (obwohl Excel die wohl auch speichern könnte).
Gruß