tar / tar.gz / tar.bz2ファイルを読み書きする
tarファイルの読み書きはtarfileモジュールを使います。
gzipやbzip2で圧縮されている場合でも自動的に判断して読み出すことができます。
import tarfile from datetime import datetime ## tar/tar.gz/tar.bz2ファイルを読む tf = tarfile.open('file.tgz', 'r') ## 「ls -l」形式で内容を表示 tf.list() ## ファイル情報(tarinfo)をすべて取り出す for ti in tf: print ti.name, ti.size, \ datetime.fromtimestamp(ti.mtime), oct(ti.mode), \ ti.uname, ti.gname ## ファイル名を指定してtarinfoを取る/ファイルオブジェクトとして読み出す ti = tf.getmember(name) f = tf.extractfile(ti) print f.read() ## 【Python2.5】全ファイルを指定パス以下に展開する tf.extractall(path)
書き込む場合、または標準入力などストリームで送られてくる場合は圧縮方法を指定する必要があります。
## tar.gzファイルを書き込みでオープン tf = tarfile.open('file.tgz', 'w:gz') tf.add(filename) tf.addfile(gettarinfo(filename, arcname, fileobj)) ## 標準入力からtar.gzデータを読み込む tf = tarfile.open(mode="r|gz", fileobj=sys.stdin)