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

Pythonでファイルやフォルダをtar.gzアーカイブに圧縮・追加する方法

Pythonの標準ライブラリである tarfile モジュールを使うと、ディレクトリ全体を簡単にtar形式のアーカイブ(gzip圧縮)としてまとめることができます。ディレクトリツリーの走査には os.walk を利用し、配下のファイルをすべて再帰的にアーカイブへ追加していきます。

基本的な実装例

import os
import tarfile

def tardir(path, tar_name):
    with tarfile.open(tar_name, "w:gz") as tar_handle:
        for root, dirs, files in os.walk(path):
            for file in files:
                tar_handle.add(os.path.join(root, file))

tardir('./my_folder', 'sample.tar.gz')

このコードを実行すると、my_folder 内のすべてのファイルが sample.tar.gz という名前でgzip圧縮され、カレントディレクトリに保存されます。

コードのポイント解説

1. with文による自動クローズ

with tarfile.open(...) の形式を使えば、処理終了後にアーカイブは自動的に閉じられるため、明示的な close() 呼び出しは不要です。リソースの解放漏れを防げるので、この書き方を推奨します。

2. モード指定「w:gz」について

"w:gz" は「新規作成+gzip圧縮」を意味します。圧縮せずにtarのみを作成したい場合は "w" を、bzip2圧縮を使いたい場合は "w:bz2" を指定してください。

3. アーカイブ内のパスを整理したい場合

上記のコードでは、元のディレクトリパスがそのままアーカイブ内に記録されます。フルパスを含めたくない場合は、arcname 引数でアーカイブ内のパスを制御できます。

tar_handle.add(os.path.join(root, file), arcname=file)

こうすることで、アーカイブ内ではファイル名だけが記録され、展開時によりクリーンな構造になります。

  1. PythonでPowerPointファイルを自動作成する方法!python-pptxの基本を徹底解説

    はじめに誰もが一度はPowerPointのプレゼンテーション資料を作成した経験があるのではないでしょうか。多くの場合、Microsoft PowerPointやGoogleスライドといったGUIツールを使うことが多いでしょう。しかし、ライセンスを持っていなかったり、インターネット環境にアクセスできなかったりすることもあります。あるいは、「プログラマーらしく」コードで自動生成したいと考える方もいるはずです。ご安心ください。そんなときこそPythonの出番です!この記事では、Pythonを使ってPowerPointファイルを作成し、コンテンツを追加する方法を解説します。それでは早速始めましょう!準

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

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