Problem mit zipfile und Excel

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
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

Hi!

Ich hab mehrere zip-Archive, die ich gerne entpackt hätte. Das hab ich mit zipfile programmiert. Das entpacken hat auch wunderbar funktioniert aber leider kann ich die Excel-Dateien, die ich entpackt habe, jetzt nicht mehr öffnen. Woran kann das liegen? Mein Code:

Code: Alles auswählen

for i in range(begin,end):
            if len(str(i))==2:
                name='0'+str(i)
                datei=pfad+name+'.zip'
            elif len(str(i))==1:
                name='00'+str(i)
                datei=pfad+name+'.zip'
            else:
                name=str(i)
                datei=pfad+name+'.zip'
            f=zip.ZipFile(datei)
            if not os.path.isdir(pfad+name):
                os.mkdir(pfad+name)
            for l in f.namelist():
                path=os.path.join(pfad+name,l)
                new=open(path,'w')
                new.write(f.read(l))
                new.close()
            f.close()
Die Variablen pfad, begin und end werden vorher vom Benutzer eingegeben. Die zip-files sind nummeriert also 001.zip usw. deshalb der erste Teil des Codes. Bitte helft mir! Vielen Dank im vorraus!

MfG
Me
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Zeile 16:

Code: Alles auswählen

new = open(path, 'wb')
Das b bewirkt, dass Windows keine konvertierung von \n zu \r\n macht.

Gruss
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Anfänger1911 hat geschrieben:aber leider kann ich die Excel-Dateien, die ich entpackt habe, jetzt nicht mehr öffnen. Woran kann das liegen?
HalloAnfänger1911!

Zeile 16: Probier mal die Daten "binär" zu speichern:

Code: Alles auswählen

new=open(path,'wb')
Vielleicht war das der Fehler.

Siehe auch: http://www.python-forum.de/topic-6157.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Das formatieren der dreistelligen Nummer kann man auch ganz leicht mit dem Formatoperator machen. Ausserdem wären aussagekräftigere Namen ganz nett (ungetestet):

Code: Alles auswählen

        for i in xrange(begin, end):
            name = '%s%03d' % (pfad, i)
            zip_datei = zip.ZipFile(name + '.zip')
            zielpfad = pfad + name
            if not os.path.isdir(zielpfad):
                os.mkdir(zielpfad) 
            for dateiname in zip_datei.namelist() 
                path = os.path.join(zielpfad, dateiname)
                datei = open(path, 'wb')
                datei.write(zip_datei.read(dateiname))
                datei.close()
            zip_datei.close()
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

Achja das hatte ich auch schon gelesen. Ich dachte ich hätts auch so eingebaut :oops: . Danke!
Antworten