Pythonで zip/unzip に味付け少々

たいていのOSでzip/unzipを使えますが、ひょんなことからPythonでやることにしました。

よくある内容+α程度なので、経緯を含めてパピコ。



経緯

とある自動化処理で、手元で subprocess 経由での zip してから、

転送先のコンテナに ecs:execute_command 経由で unzip していました。

特に問題はなさげですが、手元の環境が人によって変わるため、OSによって zip の中身が変わり、unzip ができない、ということが起きました。

zip に限らずこういうことは稀にありますし、そのままの構成での対処も可能ではあるでしょうが、本質的には Python で圧縮解凍をする方が正しいな~ってことで、そうすることにしました。


コード

ということでパラパラっとコーディング。

圧縮

ディレクトリやファイルを複数指定しつつ、excludes的な機能を追加したもの。


解凍

全部解凍。target 指定がなければ current に。



実行例

適当なディレクトリとファイルを用意し、

こんな感じで実行すると、

ちゃんと excludes 条件が効いて圧縮され、解凍もできています。


解凍先にPythonがあるなら、ワンライナーで解凍しちゃうのもあり。




最初は tarfile とかも考えたけど、どっちみち excludes な機能が完全マッチとかでイマイチなので、自前で作るしかなかったのだ。

何が言いたいかっつーと、既成コマンドは偉大っつーことですたい:-)