Seite 1 von 1

Problem mit zipfile und Excel

Verfasst: Samstag 19. Mai 2007, 11:17
von Anfänger1911
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

Verfasst: Samstag 19. Mai 2007, 11:33
von rayo
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

Re: Problem mit zipfile und Excel

Verfasst: Samstag 19. Mai 2007, 11:35
von gerold
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
:-)

Verfasst: Samstag 19. Mai 2007, 11:53
von 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()

Verfasst: Samstag 19. Mai 2007, 19:15
von Anfänger1911
Achja das hatte ich auch schon gelesen. Ich dachte ich hätts auch so eingebaut :oops: . Danke!