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

Pythonを使用したtarアーカイブファイルの読み取りと書き込み(tarfile)


「tar」ユーティリティは、もともとUNIXオペレーティングシステム用に導入されました。その目的は、ファイルの配布を容易にするtarballと呼ばれることが多い単一のアーカイブファイルに複数のファイルを収集することです。 Pythonの標準ライブラリのtarfileモジュールの関数は、tarアーカイブの作成と、必要に応じてtarballからの抽出に役立ちます。アーカイブは、gzip、bz2、およびlzma圧縮を使用して、または圧縮なしで構築できます。

このモジュールで定義されている主な関数はmain()であり、これを使用してtarファイルへの書き込みまたはtarファイルからの読み取りを実行します。

Open()

この関数は、パラメーターとして提供されたファイル名に対応するTarFileオブジェクトを返します。この関数には、modeと呼ばれる別のパラメーターが必要です。これは、デフォルトでは「r」であり、圧縮されていないことを示します。その他のモードは以下のとおりです

モードとアクション
Sr.No。
1 'r'または'r:*'
透明な圧縮で読むために開きます。
2 'r:'
圧縮せずに読むために開きます。
3 'r:gz'
gzip圧縮で読み取るために開きます。
4 'r:bz2'
bzip2圧縮で読み取るために開きます。
5 'r:xz'
lzma圧縮で読み取るために開きます。
6 'x'または'x:'
圧縮せずにtarfileを排他的に作成します。
7 'x:gz'
gzip圧縮でtarfileを作成します。
8 'x:bz2'
bzip2圧縮でtarfileを作成します。
9 'x:xz'
lzma圧縮を使用してtarfileを作成します。
10 「a」または「a:」
圧縮せずに追加するために開きます。
11 「w」または「w:」
非圧縮書き込み用に開きます。
12 'w:gz'
gzip圧縮書き込み用に開きます。
13 'w:bz2'
bzip2圧縮書き込み用に開きます。
14 'w:xz'
lzma圧縮書き込み用に開きます。

モジュールはTarFileクラスを定義します。 open()関数の代わりに、コンストラクターを呼び出すことでTarFileオブジェクトをインスタンス化できます。

TarFile()

このコンストラクターには、ファイル名とモードパラメーターも必要です。モードパラメータの可能な値は上記のとおりです。

このクラスの他のメソッドは次のとおりです

add()

このメソッドは、ファイルをアーカイブに追加します。このメソッドには、ファイル、ディレクトリ、シンボリックリンク、ショートカットなどの名前を付ける必要があります。デフォルトでは、ディレクトリは再帰的に追加されます。再帰的な追加を防ぐには、再帰的なパラメータをFalseに設定します。

addfile()

このメソッドは、TarInfoオブジェクトをアーカイブに追加します。

extractall()

このメソッドは、他のパスが明示的に指定されていない場合、アーカイブのすべてのメンバーを現在のパスに抽出します。

extract()

このメソッドは、指定されたメンバーを指定されたパスに抽出します。デフォルトは現在のパスです。

次の例では、gzipアルゴリズムを使用して圧縮するtarファイルを開き、ファイルを追加します。

>>> fp = tarfile.open("zen.tar.gz","w:gz")
>>> fp.add("zen.txt")
>>> fp.close()
>

「zen.txt」ファイルが現在の作業ディレクトリに存在すると仮定すると、「zen.tar.gz」ファイルに追加されます。

次のコードは、tarアーカイブからファイルを抽出し、すべてのファイル(この場合はonのみ)を抽出して、現在のフォルダーに配置します。結果を確認するには、現在のフォルダの「zen.txt」を削除するか、名前を変更します。

>>> fp = tarfile.open("zen.tar.gz","r:gz")
>>> fp.extractall()
>>> fp.close()

「zen.txt」ファイルが現在のディレクトリに表示されます。

現在のディレクトリ内のすべてのファイルで構成されるtarを作成するには、次のコードを使用します

import tarfile, glob
>>> fp=tarfile.open('file.tar','w')
>>> for file in glob.glob('*.*'):
fp.add(file)
>>> fp.close()

コマンドラインインターフェイス

tarファイルの作成と抽出は、コマンドラインインターフェイスを介して実行できます。たとえば、「lines.txt」ファイルは、コマンドウィンドウで実行された次のコマンドによってtarファイルに追加されます

C:\python36 >python -m tarfile -c line.tar lines.txt

次のコマンドラインオプションを使用できます。

-lまたは--list tarfile内のファイルを一覧表示します。
-cまたは--create ソースファイルからtarfileを作成します。
-eまたは--extract output_dirが指定されていない場合は、tarfileを現在のディレクトリに抽出します。
-tまたは--test tarfileが有効かどうかをテストします。
-vまたは--verbose 詳細出力。

次のコマンドラインは、現在のディレクトリの下のnewdirフォルダにline.tarを抽出します。

C:\python36>python -m tarfile -e line.tar newdir/

次のコマンドラインは、tarアーカイブ内のすべてのファイルを一覧表示します。

C:\python36>python -m tarfile -l files.tar

tarfileモジュールに関するこの記事では、tarfileモジュールで定義されているクラスと関数について説明しました。


  1. Pythonopenpyxlモジュールを使用してExcelファイルの読み取りと書き込み

    Pythonは、Excelファイルを操作するためのopenpyxlモジュールを提供します。 このモジュールでは、Excelファイルの作成方法、書き込み方法、読み取り方法などを実装できます。 openpyxlモジュールをインストールするには、コマンドプロンプトでこのコマンドを記述できます pip install openpyxl シートにタイトル名を付けたい場合 サンプルコード import openpyxl my_wb = openpyxl.Workbook() my_sheet = my_wb.active my_sheet_title = my_sheet.title print

  2. LinuxでTARを使用してファイルをアーカイブする方法

    アーカイブは、その中に無数のフォルダやファイルを保存できる特別な種類のファイルです。アーカイブを非常に効果的にするのは、アーカイブに含まれるファイルとフォルダが、アーカイブの外部にあったファイル構造を保持し、アーカイブがアーカイブされていない場合でも、この構造はそのまま維持されることです。ファイルやフォルダはさまざまな形式でアーカイブできますが、そのうちの1つがTAR( T )です。 類人猿Ar チャイブ)フォーマット。 LinuxおよびUnixシステムで一般的に使用されるTARファイル(口語的には tarball とも呼ばれます) )は、統合されたUnixアーカイブ形式のファイルです。 T