Python tar.gzファイルを解凍せずに中身の画像ファイルを読み込む

複数の画像ファイルを圧縮したtar.gz。
データ解析に使用したいのですが、取り回しが楽なので圧縮ファイルのまま処理したい。


ファイル名の取得



こちらを参考にしました。
tarfile --- tar アーカイブファイルの読み書き

まず、中に存在するファイル名の列挙から始めてみます。
とりあえず、最初の1ファイルだけ表示。

・sample.py


  1. import tarfile
  2. with tarfile.open(name='UTKFace.tar.gz', mode='r') as tar:
  3.     for info in tar.getmembers():
  4.         print(info.name)
  5.         break



ファイル名が取得できました。

$ python3 sample.py
UTKFace/82_0_2_20170111210110290.jpg.chip.jpg





データの取り出し



こちらが参考になりました。
pythonスクリプトでtarファイルの内容を展開せずに読み込む

extractfileで内容を取得します。

・sample.py


  1. import tarfile
  2. with tarfile.open(name='UTKFace.tar.gz', mode='r') as tar:
  3.     for info in tar.getmembers():
  4.         # ファイル名
  5.         print(info.name)
  6.         # 内容をio.BufferedReaderで取り出し
  7.         f = tar.extractfile(info)
  8.         # 確認用にファイルへ出力
  9.         with open('check.jpg', 'wb') as c:
  10.             c.write(f.read())
  11.         
  12.         # とりあえず1件のみ処理
  13.         break



これでtar.gzファイルを回答せず中身のファイル名、画像が取り出せました。




【参考URL】
tarfile --- tar アーカイブファイルの読み書き

pythonスクリプトでtarファイルの内容を展開せずに読み込む


関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ