【问题标题】:Unicode error unzipping file using Python .extractall使用 Python .extractall 解压缩文件的 Unicode 错误
【发布时间】:2017-08-08 07:03:56
【问题描述】:

我有一个 zip 文件,其中有一些文件需要解压缩。我的函数运行良好,直到我的某些文件的名称中有 Unicode,如下所示:

- myfile.wav
- myfile2.wav
- my§ile.wav

当我尝试使用此功能解压缩时

with closing(z), zipfile.ZipFile(io.BytesIO(z.content)) as myzip:
                myzip.extractall(local_path)

我收到一个 Unicode 错误。

如何更正我的文件名?

【问题讨论】:

  • 我认为你应该从问题中删除你的 pt_BR 文本;)

标签: python unzip


【解决方案1】:

您应该先解码您的文件,然后再将其传递给 extractall 方法。

with closing(z), zipfile.ZipFile(io.BytesIO(z.content)) as myzip:
            local_path = local_path.decode('utf-8')
            myzip.extractall(local_path)

阅读模块中的documentation,他们对此很明确:

ZIP 文件没有正式的文件名编码。如果您有 unicode 文件名,则必须在将它们传递给 '() 之前将它们转换为所需编码的字节字符串。 WinZip 将所有文件名解释为 CP437 编码,也称为 DOS 拉丁文。

【讨论】:

    猜你喜欢
    • 2011-09-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多