entpacken von ZipVerzeichnissen

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
juju
User
Beiträge: 47
Registriert: Dienstag 25. Mai 2010, 16:02

Code: Alles auswählen

for root, dummy, filenames in os.walk(sys.argv[1]):
		for filename in filenames:
			files.append(os.path.join(root, filename))
		if not recursive:
			break
		for path in files:
			openzip = zipfile.ZipFile(path, 'r')
			for f in openzip.namelist(): 
				if f.endswith('PBR.xml'): 
					output.append(os.path.join(path, f))
		for item in output:
			print item
			outputList.append(open(path))
im letzten Schritt werden die Ziparchive zum lesen geöffnet.... wie komme ich denn nun am einfachsten an die xml Dateien ran??

Wenn ich os.listdir verwende -> to many values to unpack
Zuletzt geändert von juju am Donnerstag 8. Juli 2010, 14:06, insgesamt 1-mal geändert.
rads
User
Beiträge: 153
Registriert: Freitag 26. März 2010, 15:51

Zipfile

anbei ein Beispiel für das ändern einer XML Datei und verpacken einer Datei.

Hier keine echte xml datei, sonder odt. Ist aber in der Verarbeitung das gleiche.
Nachteil, wenn du eine datei in einer zipdatei ändern willst, must du alles auspacken
und neu wieder einpacken.

def zipWrite(self,filename,textvalue):

Code: Alles auswählen

        zin = zipfile.ZipFile ("%s.odt"%filename, 'r')
        zout = zipfile.ZipFile ("%s_tmp.odt"%filename, 'w')
        for item in zin.infolist():
            buffer = zin.read(item.filename)
            if (item.filename != 'content.xml'):
                zout.writestr(item, buffer)
                
        tmpContent_xml = zin.read("content.xml","r").replace("</office:text>", "%s </office:text>"%textvalue)
        zout.writestr("content.xml", tmpContent_xml)
        zin.close()
        os.remove("%s.odt"%filename)
        zout.close()
        os.rename("%s_tmp.odt"%filename, "%s.odt"%filename)
p.s. ja ist kein schöner code, ist aber auch nicht produktiv im einsatz

Grüße

Stefan
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

juju hat geschrieben:Wenn ich os.listdir verwende -> to many values to unpack
Dann solltest du dir die Rückgabewerte von os.listdir und os.walk anschauen.
Das Leben ist wie ein Tennisball.
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

EyDu hat geschrieben:
juju hat geschrieben:Wenn ich os.listdir verwende -> to many values to unpack
Dann solltest du dir die Rückgabewerte von os.listdir und os.walk anschauen.
Oder sich mal die Beiträge der Menschen, die ihm hier helfen wollen, durchlesen.
Barabbas hat geschrieben:Beim Iterieren über die Liste, die os.listdir() dir liefert, hast du natürlich nur ein Element - eben den Datei- oder Ordnernamen.
Gut, hätte mich vielleicht noch deutlicher ausdrücken können - aber die Fehlermeldung ist ja jetzt auch nicht direkt un-googlebar.
Antworten