【问题标题】:How to Extract Zip Files with non-Unicode non-Latin Filenames?如何提取具有非 Unicode 非拉丁文件名的 Zip 文件?
【发布时间】:2012-07-02 14:37:51
【问题描述】:

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

【问题讨论】:

  • 我没有投票给你,但你最好问一个问题(“如何提取具有非 unicode 非拉丁文件名的 zip 文件?”)并将您的解决方案提交为答案,然后接受。 (这样,如果有用的话,您也可以对您的答案投赞成票)。 编辑打败它!
  • +1,因为这听起来很有用...但请将其作为答案提交...而不仅仅是问题
  • 嗯,我认为自我回答还可以。我看到了一些实际上是教程的“问题”。好的,我会试试的。谢谢。

标签: encoding zip filenames zipfile


【解决方案1】:

我在网上搜索,但没有找到好的脚本。所以出于必要,我自己编写了一个 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多