2017-03-16 4 views
0

나는 지퍼 파일이 있는데, 지울 파일이 있습니다. 내 기능을 일부 내 파일이 같은 THER 이름에 유니 코드를 때까지 잘 작동 : 유니 코드 오류 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

추출 방법을 통과하기 전에 파일을 디코딩해야합니다. 모듈의 documentation 읽기

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

, 그들은이에 명시됩니다

은 ZIP 파일에 대한 공식적인 파일 이름 인코딩이 없습니다. 유니 코드 파일 이름이있는 경우 '()'에 전달하기 전에 원하는 인코딩으로 바이트 문자열로 변환해야합니다. WinZip은 DOS 라틴어라고도하는 CP437에서 인코딩 된 것으로 모든 파일 이름을 해석합니다.