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 な機能が完全マッチとかでイマイチなので、自前で作るしかなかったのだ。

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

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre class="" title="" data-url=""> <span class="" title="" data-url="">