Snappy って何だ?「.snappy」ファイルを解凍する方法
Alibaba Cloud を触っていたら、Object Storage に .snappy
なる拡張子のファイルが置かれていました。ログファイルとのことですが、テキストエディタでは開けません。
調べてみると、Snappy というのは Google が開発した圧縮方式だそうです。Lhaplus や 7-Zip のような圧縮・解凍ソフトでは対応していないようで、ライブラリを使って自分で解凍するコードを実装する必要があるようでした。
今回は Python v3.10 で書いてみます。まずは pip
で python-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 .
こんな風にすると整形出力されて読みやすかったです。
なかなかマイナーな圧縮形式に遭遇しましたが、何とか中身が読めて良かったです。