我使用python的zipfile模块来提取.zip存档(例如,让我们在http://img.dafont.com/dl/?f=akvaleir上获取此文件.)
f = zipfile.ZipFile('akvaleir.zip', 'r')
for fileinfo in f.infolist():
print fileinfo.filename
f.extract(fileinfo, '.')
Run Code Online (Sandbox Code Playgroud)
它的输出:
Akval?ir_Normal_v2007.ttf
Akval?ir, La police - The Font - Fr - En.pdf
Run Code Online (Sandbox Code Playgroud)
提取后两个文件都无法访问,因为文件名中包含无效的编码字符.问题是zipfile模块没有指定输出文件名的选项.
但是,"解压缩akvaleir.zip"很好地逃避了文件名:
root@host:~# unzip akvaleir.zip
Archive: akvaleir.zip
inflating: Akval?ir_Normal_v2007.ttf
inflating: Akval?ir, La police - The Font - Fr - En.pdf
Run Code Online (Sandbox Code Playgroud)
我尝试在我的python程序中捕获"unzip -l akvaleir.zip"的输出,这两个文件名是:
Akval\xd0\x92ir_Normal_v2007.ttf
Akval\xd0\x92ir, La police - The Font - Fr - En.pdf
Run Code Online (Sandbox Code Playgroud)
如何在不捕获"unzip -l akvaleir.zip"输出的情况下获取正确的文件名,如unzip命令?