Python zipfile зависает при записи - PullRequest
3 голосов
/ 21 января 2010

Я пытаюсь использовать модуль zipfile в Python для создания простых файлов zip:

import zipfile

files = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
zip_file_name = 'zipfile_test.zip'

zfh = zipfile.ZipFile(zip_file_name, 'w')
for file in files:
  print 'Archiving file %s' % file
  zfh.write(zip_file_name)
zfh.close()

Файлы ах находятся в моем рабочем каталоге и пусты, используйте touch a b c d e f g hдля проверки.

После добавления первых 7 элементов в zip-файл он висит на последнем, но продолжает записывать в zip-файл до тех пор, пока не будет исчерпано пространство.Это происходит на двух системах, на которых я тестировал, одна с Python 2.4.3, другая с Python 2.6.2.Если количество файлов меньше 6 или 7, zip-файл создается без проблем.В противном случае происходит сбой после 7-15 файлов и начинается запись мусора в конец файла.Я попытался изменить:

  zfh.write(zip_file_name)

на:

  zfh.write(zip_file_name, zip_file_name, zipfile.ZIP_DEFLATED)

, что иногда позволяет мне написать еще пару файлов, но также неизбежно приводит к сбою.

Что яделать неправильно?

1 Ответ

9 голосов
/ 21 января 2010

Вы помещаете zip-файл в zip-файл:

zfh.write(zip_file_name)

Должно быть:

zfh.write(file)
...