gpt4 book ai didi

python - zipfile 无法处理某些类型的 zip 数据?

转载 作者:太空狗 更新时间:2023-10-29 21:01:50 33 4
gpt4 key购买 nike

我在尝试解压缩 zip 文件时遇到了这个问题。

-- zipfile.is_zipfile(my_file) 总是返回 False,即使 UNIX 命令 unzip 处理得很好。此外,当尝试执行 zipfile.ZipFile(path/file_handle_to_path) 时,我遇到了同样的错误

-- file 命令返回 Zip 存档数据,至少要提取 v2.0 并在它显示的文件上使用 less:

PKZIP for iSeries by PKWARE
Length Method Size Cmpr Date Time CRC-32 Name
2113482674 Defl:S 204502989 90% 2010-11-01 08:39 2cee662e myfile.txt
2113482674 204502989 90% 1 file

有什么办法可以解决这个问题吗?如果我能让 python 的 zipfile 工作,那就太好了,因为我已经有一些单元测试,如果我切换到运行 subprocess.call("unzip") ,我将不得不放弃这些单元测试

最佳答案

在我的文件上遇到同样的问题并且能够解决它。我不确定它们是如何生成的,就像上面的例子一样。他们都有尾随数据,最终被 7z 的 Windows 和失败的 python 压缩文件忽略。

这是解决问题的代码:

def fixBadZipfile(zipFile):  
f = open(zipFile, 'r+b')
data = f.read()
pos = data.find('\x50\x4b\x05\x06') # End of central directory signature
if (pos > 0):
self._log("Truncating file at location " + str(pos + 22) + ".")
f.seek(pos + 22) # size of 'ZIP end of central directory record'
f.truncate()
f.close()
else:
# raise error, file is truncated

关于python - zipfile 无法处理某些类型的 zip 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923142/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com