如何使用非Unicode非拉丁文件名提取Zip文件?

时间:2012-07-02 14:37:51

标签: encoding zip filenames zipfile

有时,您会使用带有文件或目录的Zip文件,但名称中包含一些无法识别的字符,因此您无法提取它们。您使用什么工具在正确转换的文件名中提取它们?

1 个答案:

答案 0 :(得分:3)

我在网上搜索但未找到好的剧本。所以出于必要,我自己编写了一个Python脚本。希望它对某人来说很方便。

欢迎任何建议,特别是如果您知道这在某些特殊情况下不起作用。请不要选择不整齐的编码风格。

import os,sys,zipfile

x, fn = sys.argv
enc = 'utf-8'

zipf = zipfile.ZipFile(fn)
for x in zipf.infolist():
    fn = x.filename
    fne = fn.encode(enc)
    if os.sep in fne:
        path = fne[:fne.rindex(os.sep)]
        if not os.path.exists(path): os.makedirs(path)
    if fne.endswith(os.sep): continue
    f = open(fne,'wb')
    f.write(zipf.open(fn).read())
    f.close()