Pythonでファイルを圧縮する際のファイル名文字化け対策をご紹介します。

日本語名のファイルに対して、Pythonでパスワード付き圧縮を実施する場合、ファイル名の文字化けが発生しました。
この問題はライブラリー内部仕様のため、ライブラリーを改造しないと解決できないそうですが、外部圧縮ツールをPython実装に利用して、強力、簡単的に圧縮できることを見つかりました。

外部圧縮ツール 見出しへのリンク

私がAWS LambdaのPythonスクリプトに、7-zipのコマンドラインコマンドでzip処理を実施しています。 利用している7-zipツールの7zzsは以下のページからダウンロードしました。

Windows環境にコマンドラインの利用はもちろんできます。

利用方法 見出しへのリンク

私が7zzsをS3の指定場所に保存し、zip処理で、s3からLambdaの/tmp配下にダウンロードして利用しています。
この場合、7zzsの実行権限を設定する必要があるので、以下の実装をご参照ください。

Python実装 見出しへのリンク

1
2
3
4
5
6
7
8
# zipツールのダウンロード実装略
# zipツールの実行権限を付与
cmd = f"chmod 755 /tmp/7zzs"
os.system(cmd)
# パスワード付きzipツールを実行する(パスワード:
123456)
cmd = "/tmp/7zzs a 日本語名ファイル.zip 日本語名ファイル.pdf -p 123456"
os.system(cmd)

7-zipのコマンドラインの利用紹介は、公開しているホームページにご参照ください。