我使用 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, '.')
它的输出:
Akval�ir_Normal_v2007.ttf
Akval�ir, La police - The Font - Fr - En.pdf
这两个文件在提取后都无法访问,因为它们的文件名中有无效的编码字符。问题是 zipfile 模块没有指定输出文件名的选项。
但是,“unzip 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
我尝试在我的 python 程序中捕获“unzip -l akvaleir.zip”的输出,这两个文件名是:
Akval\xd0\x92ir_Normal_v2007.ttf
Akval\xd0\x92ir, La police - The Font - Fr - En.pdf
如何在不捕获“unzip -l akvaleir.zip”的输出的情况下获得正确的文件名,就像 unzip 命令所做的那样?