Python tar.gzファイルを解凍せずに中身の画像ファイルを読み込む
複数の画像ファイルを圧縮したtar.gz。データ解析に使用したいのですが、取り回しが楽なので圧縮ファイルのまま処理したい。
ファイル名の取得
こちらを参考にしました。
tarfile --- tar アーカイブファイルの読み書き
まず、中に存在するファイル名の列挙から始めてみます。
とりあえず、最初の1ファイルだけ表示。
・sample.py
- import tarfile
- with tarfile.open(name='UTKFace.tar.gz', mode='r') as tar:
- for info in tar.getmembers():
- print(info.name)
- break
ファイル名が取得できました。
$ python3 sample.py
UTKFace/82_0_2_20170111210110290.jpg.chip.jpg
データの取り出し
こちらが参考になりました。
pythonスクリプトでtarファイルの内容を展開せずに読み込む
extractfileで内容を取得します。
・sample.py
- import tarfile
- with tarfile.open(name='UTKFace.tar.gz', mode='r') as tar:
- for info in tar.getmembers():
- # ファイル名
- print(info.name)
- # 内容をio.BufferedReaderで取り出し
- f = tar.extractfile(info)
- # 確認用にファイルへ出力
- with open('check.jpg', 'wb') as c:
- c.write(f.read())
- # とりあえず1件のみ処理
- break
これでtar.gzファイルを回答せず中身のファイル名、画像が取り出せました。
【参考URL】
tarfile --- tar アーカイブファイルの読み書き
pythonスクリプトでtarファイルの内容を展開せずに読み込む
- 関連記事
コメント