对dataset_delete_test.zip解压时出现乱码:
dataset_delete_test.zip如下(在windows上bandizip手动解压如下):
可自行下载
!python -m wget https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220716-mmclassification/dataset/dataset_delete_test.zip

解压代码:
f = zipfile.ZipFile("./dataset_delete_test.zip",'r')
for file in f.namelist():
f.extract(file,"./test/")
f.close()
乱码:

解决办法:
在ZipFile()中添加metadata_encoding='utf-8'参数,
f = zipfile.ZipFile("./dataset_delete_test.zip",'r',metadata_encoding='utf-8')
解压代码:
f = zipfile.ZipFile("./dataset_delete_test.zip",'r',metadata_encoding='utf-8')
for file in f.namelist():
f.extract(file,"./test/")
f.close()
原因分析(本人使用的file encoding显示伪:UTF-8):
对ZipFile的源码中有如下一段代码是对filename进行编码的,对此打上断点,会发现其if判断为else,导致filename的编码为cp437

再对参数进行分析发现是由于flags的值为0导致的(flags为0的原因就请哪位大佬研究一下了,小菜鸡就只能到这了)

31万+

被折叠的 条评论
为什么被折叠?



