Zipfile库提取问题

时间:2012-02-24 20:02:46

标签: python

我正在使用http://docs.python.org/library/zipfile.html将文件压缩成zip。它工作得很好但是当通过我的ubuntu提取该文件时(不是在python中,只是右键单击文件然后在'Extract here')文件被截断。我的原始文件有~167kb,通过ubuntu~164kb提取(它是csv文件,所以我想念文件末尾的几行)。

有什么建议吗?

编辑:

我的代码如下:

try:
    fp2 = zipfile.ZipFile(el.replace('.csv', '.zip'), 'w',
            zipfile.ZIP_DEFLATED)
    fp2.testzip()
    fp2.write(el)
finally:
    fp2.close()

其中el是某些csv文件。

EDIT2: 看来,在写入zipfile时,一些数据会丢失。

1 个答案:

答案 0 :(得分:0)

一些建议:

(1)您调用testzip但忽略返回的值。如果存档为空(如本例所示),它可能会搞乱。移除对testzip的电话。

(2)通过其他方式测试所创建文件的完整性,例如(a)linux_zipfile_executable -t your_created_archive.zip(b)使用testzip的简短Python脚本。尝试其他一些提取手段。

(3)忽略mode='wb'推动者;这仅与使用内置open打开的文件相关。正如zipfile文档所说,唯一允许的模式是rwa。另外:RuntimeError: ZipFile() requires mode "r", "w", or "a"。 zip文件代码在使用内置b打开存档文件时实际上使用open标志。

(4)仔细检查一下,在试图找到你的问题时,你实际上正在比较正确的csv文件对。

(5)在网站上发布3个文件(输入,输出和.zip)。