文件名称:python支持使用自定义编码的zipfile模块
文件大小:77KB
文件格式:PY
更新时间:2022-02-10 16:34:30
python 开发语言 模块
=== 用法 === 一:作为第三方模块(推荐) 将该文件改名后(myzipfile.py)和程序放在一起,导入时可以使用as改名来兼容旧代码(import myzipfile as zipfile) 二:替换原版zipfile模块(不推荐,程序可能会无法移植) 放在python路径下的Lib文件夹里 由于该文件并不是标准库,encoding可能不会有代码提示,请手动输入此参数。 === 说明 === python默认的zipfile模块的文件列表只支持cp437和UTF8两种编码,而中文操作系统中zip常使用gbk来存储文件列表,这使得使用python解压zip会乱码,需要读取ZipInfo逐个解压文件并且重命名,并且乱码中可能会出现非法字符(? * : " < > \ / | )导致文件解压失败。 这里我在ZipFile的构造函数中添加了可选参数”encoding",用法和文件IO相同,并且将文件名解码部分替换成了encoding指定的编码,默认参数为“utf8",指定代码页之后,ZipInfo保存的文件名均为正确解码后的文件名。extractall()方法也可以正常的工作。