相关疑难解决方法(0)

使用Python提取文件名中包含无效字符的文件

我使用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命令?

python unicode filenames encoding zipfile

4
推荐指数
2
解决办法
7603
查看次数

标签 统计

encoding ×1

filenames ×1

python ×1

unicode ×1

zipfile ×1