我正在使用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时,一些数据会丢失。
答案 0 :(得分:0)
一些建议:
(1)您调用testzip
但忽略返回的值。如果存档为空(如本例所示),它可能会搞乱。移除对testzip
的电话。
(2)通过其他方式测试所创建文件的完整性,例如(a)linux_zipfile_executable -t your_created_archive.zip
(b)使用testzip
的简短Python脚本。尝试其他一些提取手段。
(3)忽略mode='wb'
推动者;这仅与使用内置open
打开的文件相关。正如zipfile文档所说,唯一允许的模式是r
,w
和a
。另外:RuntimeError: ZipFile() requires mode "r", "w", or "a"
。 zip文件代码在使用内置b
打开存档文件时实际上使用open
标志。
(4)仔细检查一下,在试图找到你的问题时,你实际上正在比较正确的csv文件对。
(5)在网站上发布3个文件(输入,输出和.zip)。