Python は標準の tarfile モジュールで gzip、bz2、tar などの読み書きを行うことが出来ます (zip を扱う場合は zipfile モジュール)。
ファイルの内容を一覧表示する
ファイルの一覧を取得するには getmembers を利用します。
#!/usr/bin/env python3
import tarfile
with tarfile.open(name="sample.tar.gz", mode="r") as tar:
for t in tar.getmembers():
print(t.name)
ファイルを展開せずに 1 ファイルをオブジェクトとして取得する
特定のファイルを取得するには extract を利用します。 下記のサンプルでは tar アーカイヴに含まれる dir1/file1.txt
というファイルを取得し、それをファイルに書き出しています。
#!/usr/bin/env python3
import tarfile
with tarfile.open(name="sample.tar.gz", mode="r") as tar:
data = tar.extractfile("dir1/file1.txt")
with open("file1.txt", "wb") as w:
w.write(data.read())
1 ファイルだけ、展開する
tar アーカイヴに含まれる 1 ファイルを取得し、それを現在のディレクトリにファイルとして展開するには extract を利用します。 パラメータを指定することで別ディレクトリに展開することも可能です。 下記の例では現在のディレクトリから見て ./dir1/file1.txt
というファイルを作成します (dir1
が存在しない場合は自動的に作成します)。
#!/usr/bin/env python3
import tarfile
with tarfile.open(name="sample.tar.gz", mode="r") as tar:
tar.extract("dir1/file1.txt")
全てのファイルを展開する
tar アーカイヴに含まれる全てのファイルを展開するには extractall を利用します。
#!/usr/bin/env python3
import tarfile
with tarfile.open(name="sample.tar.gz", mode="r") as tar:
tar.extractall()
コメント