代码:
import zipfile
f = "/path/to/zip_file.zip"
if zipfile.is_zipfile(f):
fz = zipfile.ZipFile(f, 'r')
这个zip文件本身不包含任何非ASCII字符,但是里面的文件包含。当我运行上面的脚本时,会出现以下异常:
Traceback (most recent call last): File "./temp.py", line 9, in <module>
fz = zipfile.ZipFile(f, 'r') File "/usr/lib/python2.7/zipfile.py", line 770, in __init__
self._RealGetContents() File "/usr/lib/python2.7/zipfile.py", line 859, in _RealGetContents
x.filename = x._decodeFilename() File "/usr/lib/python2.7/zipfile.py", line 379, in _decodeFilename
return self.filename.decode('utf-8') File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xbd in position 30: invalid start byte
我尝试查看了许多类似问题的答案:
请纠正我如果我错了,但看起来像是zipfile 模块存在一个已知问题。
我该如何解决这个问题?是否有任何替代模块可用于处理 zip 文件?还是有其他解决方案?
TIA。
编辑: 我可以使用 Linux 命令行实用程序“unzip”完美地访问/解压缩相同的文件。
XXX
对应于您的语言,请查看这里是 Python 2.4或这里是 Python 3.x。 - maxhaz