Fehler beim parsen von temporärer XML Datei

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
herold
User
Beiträge: 1
Registriert: Dienstag 7. Februar 2006, 14:19

Dienstag 7. Februar 2006, 14:35

Hallo,

ich versuche mich gerade in ersten Gehversuchen in Python und wollte
ein kleines Tool zur Verwaltung unseres internen Maven Repositories schreiben. Dabei komme ich leider bei folgendem Problem nicht weiter.

Ich entpacke mir ein Zip Archiv mit Dateien die in das Repository kopiert werden sollen und will dann eine dieser Dateien mit minidom parsen. Dabei bricht Python leider mit einer Fehlermeldung ab. Folgend der Quellcode und anschließend der Traceback:

Code: Alles auswählen

import zipfile
import tempfile
import xml.dom.minidom

bundlefile = 'C:\\commons-logging-1.0.4-bundle.zip'

bundle = zipfile.ZipFile(bundlefile, 'r')
bundlefiles = {}
for file in bundle.namelist():
	bundlefiles[file] = tempfile.TemporaryFile().write(bundle.read(file))

pomfile = bundlefiles['pom.xml']
pomdoc = xml.dom.minidom.parse(pomfile)
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\tkettler\Eigene Dateien\Develop\test.py", line 16, in ?
pomxml = xml.dom.minidom.parse(pomfile)
File "C:\Python24\lib\xml\dom\minidom.py", line 1915, in parse
return expatbuilder.parse(file)
File "C:\Python24\lib\xml\dom\expatbuilder.py", line 928, in parse
result = builder.parseFile(file)
File "C:\Python24\lib\xml\dom\expatbuilder.py", line 204, in parseFile
buffer = file.read(16*1024)
AttributeError: 'NoneType' object has no attribute 'read'


Soll das heißen, dass das File Objekt nicht zum Lesen geöffnet ist? Wenn ja, wie kann ich das einstellen?

-Tim
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Dienstag 7. Februar 2006, 18:36

herold hat geschrieben:

Code: Alles auswählen

	bundlefiles[file] = tempfile.TemporaryFile().write(bundle.read(file))
write gibt immer None zurück
Was du willst, ist wahrscheinlich:

Code: Alles auswählen

    bundlefiles[file] = tempfile.TemporaryFile()
    bundlefiles[file].write(bundle.read(file))
Antworten