Windows環境でpython のzipfile ライブラリを使ったときに文字化けするのをなんとかしたい

やりたいこと

Windows環境でpython のzipfile ライブラリを使ったときに文字化けするのをなんとかしたい

そうは言っても相手側が勝手に送るzip なんでこっちで対策する必要がある場合

全部utf-8 で済ませられる人には関係ない話

原因

zipfile ライブラリがcp432 を使ってくるので、cp932 を使うようにzipfile ライブラリを書き換える

やり方

  • zipfile ライブラリを探せ

path ってうってpython.exe ある場所わかるから、↓のフォルダ開いたらLib フォルダ見つけられると思う

path
C:\Users\[ユーザ名]\AppData\Local\Programs\Python\Python38\ 
  • Lib フォルダ内の zipfile.py をコピペしてzipfileJPN.py にする

  • zipfileJPN.py をエディタで開いて cp437 を cp932 で置換

  • 保存

import zipfileJPN

exist_dir = '[展開したいフォルダ]'

#ZIP展開する(展開後元ZIPは削除する)
with zipfileJPN.ZipFile('sample.zip') as existing_zip:
    existing_zip.extractall(exist_dir)
os.remove('sample.zip')