Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでtarファイルからファイルを抽出する方法【tarfileモジュールの使い方】

Pythonでは、標準ライブラリの tarfile モジュールを使うことで、tarファイル(tar.gz形式を含む)の読み書きや展開を簡単に行えます。この記事では、tarアーカイブ全体を一括で解凍する方法と、特定のファイルだけを取り出す方法の2つを紹介します。

tarファイルを丸ごと展開する方法

tarファイルを展開するには、まず tarfile.open() でアーカイブを開き、extractall() メソッドを使って指定したフォルダにすべての内容を書き出します。

コード例

import tarfile

my_tar = tarfile.open('my_tar.tar.gz')
my_tar.extractall('./my_folder')  # 展開先のフォルダを指定
my_tar.close()

このコードを実行すると、my_tar.tar.gz の中身がすべて my_folder フォルダに展開されます。

補足: Python 3.12以降では、extractall() を使わずに with 文を組み合わせる方法が推奨されています。以下のように書くと、処理後に自動的にファイルが閉じられるため、より安全です。

import tarfile

with tarfile.open('my_tar.tar.gz', 'r:gz') as my_tar:
    my_tar.extractall('./my_folder')

特定のファイルだけを抽出する方法

アーカイブ内の一部のファイルだけが必要な場合は、extract(filename, path) メソッドを使います。第1引数に抽出したいファイル名、第2引数に出力先のパスを指定します。

コード例

import tarfile

my_tar = tarfile.open('my_tar.tar.gz')
my_tar.extract('hello.txt', './my_folder')
my_tar.close()

この例では、アーカイブ内の hello.txt のみが my_folder フォルダに抽出されます。

まとめ

tarfile モジュールを使えば、tarアーカイブの全展開も個別ファイルの抽出も数行のコードで実現できます。大量のログファイルやバックアップデータを扱う際に非常に便利なので、ぜひ活用してみてください。

  1. LinuxでTARコマンドを使ってファイルをアーカイブする方法

    アーカイブとは、多数のフォルダやファイルを1つのファイルの中にまとめて格納できる特殊なファイルのことです。アーカイブが便利な最大の理由は、中に含まれるファイルやフォルダが、アーカイブ外にあったときと同じファイル構造を保持しており、展開した際にもその構造がそのまま維持される点にあります。アーカイブにはさまざまな形式がありますが、そのひとつがTAR(Tape Archive)形式です。LinuxやUnix系システムで広く使われているTARファイル(通称「tarball」とも呼ばれます)は、Consolidated Unix Archive形式のファイルです。 TARファイル形式は、大量のデータを「

  2. Windowsで.tar.gzファイルを展開する3つの方法【7-Zip・オンライン・WinRAR】

    TAR(Tape Archive)ファイルは、Unix系システムのユーティリティ「tar」によって作成されるアーカイブ形式です。複数のファイルをひとつにまとめてパッケージ化し、配布やバックアップの目的で広く利用されています。TARファイル自体は非圧縮形式ですが、実際にはGNU zip(gzip)圧縮を組み合わせた「.tar.gz」形式で目にすることがほとんどです。gzip圧縮によってアーカイブのサイズが縮小され、ディスク容量の節約が可能になります。本記事では、Windows環境で.tar.gzファイルを展開する代表的な3つの方法を、手順付きでわかりやすくご紹介します。7-Zipを使って.tar