2017-03-16 33 views
0

我有我的zip文件,至少有一些文件是unziped。我的工作职能以及直到我的一些文件有这样的疗法名称的Unicode:Unicode错误unziping文件

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

当我尝试用这种funcition

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

我得到一个统一的错误解压缩。

我该如何纠正我的文件名?

+0

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

回答

0

你应该在通过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 Latin。