【发布时间】:2017-04-22 12:34:50
【问题描述】:
我正在尝试使用 python 脚本从中国服务提供商处下载文件(我自己不是来自中国)。提供商给了我一个 .zip 文件,其中包含一个名称中似乎包含中文字符的文件。这似乎导致 zipfile 模块出错。
代码:
import zipfile
f = "/path/to/zip_file.zip"
if zipfile.is_zipfile(f):
fz = zipfile.ZipFile(f, 'r')
zipfile 本身不包含任何非 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
我尝试过查看许多类似问题的答案:
- Read file with Chinese Characters
- Extract zip files with non-unicode filenames
- Extract files with invalid characters
如果我错了,请纠正我,但它看起来像 open issue with the zipfile module。
我该如何解决这个问题?是否有任何替代模块来处理我应该使用的压缩文件?还是其他解决方案?
TIA。
编辑: 我可以使用 linux 命令行实用程序“解压缩”完美地访问/解压缩同一个文件。
【问题讨论】:
标签: python-2.7 unicode zipfile