Snappy って何だ?「.snappy」ファイルを解凍する方法

Pocket

Snappy って何だ?「.snappy」ファイルを解凍する方法

Alibaba Cloud を触っていたら、Object Storage に .snappy なる拡張子のファイルが置かれていました。ログファイルとのことですが、テキストエディタでは開けません。

調べてみると、Snappy というのは Google が開発した圧縮方式だそうです。Lhaplus や 7-Zip のような圧縮・解凍ソフトでは対応していないようで、ライブラリを使って自分で解凍するコードを実装する必要があるようでした。

今回は Python v3.10 で書いてみます。まずは pippython-snappy をインストール。

$ pip install python-snappy

続いてコード。サンプルコードのとおり、open() 関数の第2引数で rb (バイナリとして読み込む) と指定します。

import snappy

compressed = open('/tmp/temp.snappy', 'rb').read()
print(snappy.uncompress(compressed).decode(encoding='utf-8', errors='ignore'))

これで

$ python ./example.py

と実行してやると、/tmp/temp.snappy の内容が解凍されて出力されました。今回は中身が JSON だったので、jq をかませて

$ python ./example.py | jq .

こんな風にすると整形出力されて読みやすかったです。

なかなかマイナーな圧縮形式に遭遇しましたが、何とか中身が読めて良かったです。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です