Python 標準ライブラリ tarfile tarアーカイブファイル
Publish date: 2021-08-09
ライブラリtarfileを使うと、tarアーカイブファイルの圧縮・展開を行えます。
tarアーカイブファイルの圧縮
open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
でTarFileオブジェクトを作成後、ファイルを追加してtarアーカイブファイルを作成する。
既存のファイルを追加する場合はadd
、
バイト配列からファイルを作成する場合はaddfile
を使う。
import tarfile
import io
with tarfile.open('./sample.tar.gz', 'w:gz') as f:
f.add('./sample1.txt')
f.add('./sample2.txt')
f.add('./dir1/sample3.txt')
bio = io.BytesIO()
bio.write('テストファイル'.encode('utf-8'))
tarinfo = tarfile.TarInfo("sample4.txt")
tarinfo.size = bio.tell()
bio.seek(0)
f.addfile(tarinfo, bio)
f.close()
tarアーカイブファイルの展開
- getmembers アーカイブ内オブジェクト情報のリスト
- getnames アーカイブ内オブジェクトの名称のリスト
- getmember(name) 名称を指定してアーカイブ内オブジェクトの情報を取得
- extractall(path=".", members=None, *, numeric_owner=False) アーカイブの展開
with tarfile.open('./sample.tar.gz', 'r') as f:
print(f.getmembers())
print(f.getnames())
print(f.getmember("./sample1.txt"))
f.extractall('extracted_tar')
f.close()
tarfile.openのmodeオプション
tarfile.openに指定できるmodeは以下の通り。
- r 読み込み用オープン(推奨)
- r: 非圧縮読み込み用
- r:gz gzip圧縮読み込み用
- r:bz2 bzip2圧縮読み込み用
- r:xs lzma圧縮読み込み用
- w 非圧縮書き込み用
- w:gz gzip圧縮書き込み用
- w:bz2 bzip2圧縮書き込み用
- w:xs lzma圧縮書き込み用