2016-05-25 8 views
0

Ich versuche nur, * .csv-Dateien in einem Verzeichnis mit diesem Code zip:Python Fehler mit zipfile: ‚list‘ Objekt hat kein Attribut ‚sagt‘

allFiles = os.listdir(dirName + apt + '/') 
csvList = [i for i in allFiles if i.endswith('.csv')] 
zf  = zipfile.ZipFile([ dirName + apt + '.zip' ], mode='w') 
for f in csvList: 
    a = dirName + apt + '/' + f 
    zf.write(a) 
#all the elements of a are strings 

ich den Fehler:

Traceback (most recent call last): 
File "<ipython-input-43-ebf4dc807b56>", line 1, in <module> 
zf.write(a) 
File "C:\Users\blevy\MCR\WinPython-64bit-3.4.3.5\python-3.4.3.amd64\lib\zipfile.py", line 1347, in write 
zinfo.header_offset = self.fp.tell() # Start of header bytes 

AttributeError: 'list' object has no attribute 'tell' 

Gibt es eine einfache Lösung für diesen Fehler?

Danke wie immer.

BSL

Antwort

2

Diese Zeile:

zf = zipfile.ZipFile([ dirName + apt + '.zip' ], mode='w') 

sollte sein:

zf = zipfile.ZipFile(dirName + apt + '.zip', mode='w') 

Dies liegt daran, ZipFile einen Dateinamen nimmt, nicht eine Liste von Dateinamen.

+0

Der Inhalt von dirName + apt + '.zip' bildet eine Zeichenfolge. Die Zeichenfolge dirName hat die Zeichen "/", aber dies ist eine Windows-Maschine, die ich verwende. Hoffnung, die hilft, zu klären. –

+0

@ Benjamin Levy: Hilft nicht. Sie haben '' 'und' '' um Ihren Dateinamen. Das macht es zu einer Liste. 'ZipFile' nimmt keine Liste an - es braucht einen einzigen Dateinamen. Sie müssen die Klammern entfernen. – Gerrat

+0

Gut, duh auf mich. Ich werde es versuchen und zurückschreiben. Tx. –

Verwandte Themen