7.19 tarfile -- tar アーカイブファイルを読み書きする

バージョン2.3 以降で新規追加された 仕様です。

tarfile モジュールは、tar アーカイブを読んで作成することができるようにします。 いくつかの事実と外観:

open( [name[, mode [, fileobj[, bufsize]]]])
パス名 nameTarFile オブジェクトを返します。 TarFile オブジェクトに関する詳細な情報については、 TarFile オブジェクト (セクション 7.19.1)を見て下さい。

mode has to be a string of the form 'filemode[:compression]', it defaults to 'r'. Here is a full list of mode combinations: mode は、'ファイルモード[:圧縮]'の形の文字列でなければならず、 そのデフォールトは 'r'です。以下にモードの組み合わせの完全な一覧を示します。

mode  動作 
'r' 透過な圧縮つきで読み込むためにオープンします(推奨)。
'r:' 圧縮なしで排他的に読み込むためにオープンします。
'r:gz' gzip 圧縮で読み込むためにオープンします。
'r:bz2' bzip2 圧縮で読み込むためにオープンします。
'a' または 'a:' 圧縮なしで追加するためにオープンします。
'w' または 'w:' 非圧縮で書き込むためにオープンします。
'w:gz' gzip 圧縮で書き込むためにオープンします。
'w:bz2' bzip2 圧縮で書き込むためにオープンします。

'a:gz' あるいは 'a:bz2'は可能ではないことに注意して下さい。 もし modeが、ある(圧縮した)ファイルを読み込み用にオープンするのに、 適していないなら、ReadErrorが発生します。これを防ぐには mode 'r' を使って下さい。もし圧縮メソッドがサポートされていなければ、 CompressionError が発生します。

もし fileobjが指定されていれば、それは nameでオープンされた ファイルオブジェクトの代替として使うことができます。

特別な目的のために、modeの2番目のフォーマット: 'ファイルモード|[圧縮]' があります。open は、そのデータを ブロックのストリームとして処理する TarFile オブジェクトを返します。 ランダムシーキングはそのファイルにはなされません。もし fileobj が与えられていれば、 それは、それぞれ read()write() メソッドを持つ、任意の オブジェクトで構いません。 bufsize は、ブロックサイズを指定し、デフォールトでは 20 * 512 バイト です。例えば sys.stdin とソケットファイルオブジェクトやテーブデバイスの 組み合わせでは、これを変更して使って下さい。 しかし、そのような TarFile オブジェクトには、ランダムにアクセスされることを 許さないという制限があります、 (セクション 7.19.3)を見て下さい。 現在可能なモードは:

mode  動作 
'r|' 非圧縮 tar ブロックの ストリーム を読み込みにオープンします。
'r|gz' gzip 圧縮 ストリームを読み込みにオープンします。
'r|bz2' bzip2 圧縮 ストリーム を読み込みにオープンします。
'w|' 非圧縮 ストリームを書き込みにオープンします。
'w|gz' gzip 圧縮 ストリーム を書き込みにオープンします。
'w|bz2' bzip2 圧縮 ストリームを書き込みにオープンします。

class TarFile
tar アーカイブを読んだり、書いたりするためのクラスです。このクラスを 直接使わないで下さい、その代わりに open() を使った方が良いです。 TarFile オブジェクト (セクション 7.19.1)を見て下さい。

is_tarfile( name)
もし nameが tar アーカイブファイルであれば、Trueを返し、 その tarfile モジュールで読むことができます。

class TarFileCompat( filename[, mode[, compression]])

zipfile-風なインターフェースを持つ tar アーカイブへの 制限されたアクセスのためのクラスです。より詳細については zipfileのドキュメントに当たって下さい。 compression は、以下の定数のどれかでなければなりません:

TAR_PLAIN
非圧縮 tar アーカイブのための定数。
TAR_GZIPPED
gzip圧縮 tar アーカイブのための定数。

exception TarError
すべての tarfile 例外のための基本クラスです。

exception ReadError
tar アーカイブがオープンされた時、tarfile モジュールで操作 できないか、あるいは何か無効であるとき発生します。

exception CompressionError
圧縮方法がサポートされていないか、あるいはデータを正しくデコードできない 時に発生します。

exception StreamError
ストリーム風の TarFile オブジェクトで典型的な制限の ために発生します。

exception ExtractError
extract()を使った時、もしTarFile.errorlevel == 2フェータルでない エラーに対してだけ発生します。

参考資料:

zipfileモジュール:
zipfile 標準モジュールのドキュメント。.

GNU tar マニュアル、標準セクション
GNU tar 拡張機能を含む、 tar アーカイブファイルのためのドキュメント。



ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。