Ошибка Python при использовании zipfile: объект list не имеет атрибута tell
Я пытаюсь заархивировать только файлы *.csv в каталоге с этим кодом:
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
Я получаю ошибку:
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'
Есть ли простое исправление этой ошибки?
1 ответ
Решение
Эта строка:
zf = zipfile.ZipFile([ dirName + apt + '.zip' ], mode='w')
должно быть:
zf = zipfile.ZipFile(dirName + apt + '.zip', mode='w')
Это потому, что ZipFile принимает имя файла, а не список имен файлов.