##
7.19.1 TarFile オブジェクト

`TarFile` オブジェクトは、tar アーカイブへのインターフェースを提供します。 tar アーカイブは一連のブロックです。アーカイブメンバー(保存されたファイル)は、 ヘッダーブロックとそれに続くデータブロックから構成されています。ある tar アーカイブに ファイルを何回も保存することができます。各アーカイブメンバーは、 `TarInfo` オブジェクトによって表わされます、詳細については TarInfo オブジェクト (セクション 7.19.2)を見て下さい。

class `TarFile`( | [name [, mode[, fileobj]]])

  (非圧縮の) tar アーカイブ nameをオープンします。 mode は、既存のアーカイブから読み込むには `'r'` 、 既存のファイルにデータを追加するには `'a'`、あるいは既存のファイルを 上書きして新しいファイルを作成するには `'w'` のどれかです。mode のデフォールトは `'r'`です。

  もし fileobjが与えられていれば、それを使ってデータを読み書きします。 もしそれが決定できれば、modeは fileobj のモードで上書きされます。.

  注意: fileobj は、`TarFile`をクローズする時は、クローズされません。

`open`( | ...)

  代替コンストラクタです。モジュールレベルでの `open()` 関数は、 実際はこのクラスメソッドへのショートカットです。詳細については セクション 7.19 を見て下さい。

`getmember`( | name)

  メンバー name に対する `TarInfo` オブジェクトを返します。 もし nameがアーカイブに見つからなければ、`KeyError`が発生します。
  注意: もしメンバーがアーカイブに1つ以上あれば、その最後に出現する ものが、最新のバージョンであるとみなされます。

`getmembers`( | )

  `TarInfo` オブジェクトのリストとしてアーカイブのメンバーを返します。 このリストはアーカイブ内のメンバーと同じ順番です。

`getnames`( | )

  メンバーをその名前のリストとして返します。これは `getmembers()`で返されるリストと同じ順番です。

`list`( | verbose=True)

  コンテンツの表を `sys.stdout` に印刷します。もし verbose が `False` であれば、メンバー名のみ印刷します。もしそれが `True` であれば、`"ls -l"`-風の出力が作成されます。

`next`( | )

  `TarFile`が読み込み用にオープンされている時、 アーカイブの次のメンバーを `TarInfo`オブジェクトとして返します。もしそれ以上利用可能なものがなければ、 `None` を返します。

`extract`( | member[, path])

  メンバーをアーカイブから現在の作業ディレクトリに、そのフル名を使って、 抽出します。そのファイル情報はできるだけ正確に 抽出されます。 memberは、ファイル名でも`TarInfo` オブジェクトでも構いません。 pathを使って、異なるディレクトリを指定することができます。

`extractfile`( | member)

  アーカイブからメンバーをオブジェクトとして抽出します。 memberは、ファイル名あるいは `TarInfo` オブジェクトです。 もし memberが普通のファイルであれば、ファイル風のオブジェクトを返します。 もし memberがリンクであれば、ファイル風のオブジェクトをリンクのターゲットから 構成します。 もし memberが上のどれでもなければ、`None` が返されます。
  注意: ファイル風のオブジェクトは読み出し専用で以下のメソッドを提供します： `read()`, `readline()`, `readlines()`, `seek()`, `tell()`.

`add`( | name[, arcname[, recursive=True]])

  ファイル nameをアーカイブに追加します。name は、任意のファイルタイプ (ディレクトリ、fifo、シンボリックリンク等)です。 もしarcname が与えられていれば、それはアーカイブ内のファイルの代替名を 指定します。デフォールトではディレクトリは再帰的に追加されます。 これは、recursive を `False`に設定することで避けることができます。

`addfile`( | tarinfo[, fileobj])

  `TarInfo`オブジェクトtarinfoをアーカイブに追加します。 もし fileobj が与えられていれば、`tarinfo.size` バイトがそれから読まれ、 アーカイブに追加されます。`gettarinfo()`を使って `TarInfo` オブジェクトを作成することができます。
  注意: Windows プラットフォームでは、fileobjは、ファイルサイズに関する問題を避けるために、 常に、モード `'rb'` でオープンされるべきです。

`gettarinfo`( | [name[, arcname [, fileobj]]])

  `TarInfo`オブジェクトをファイル name あるいは (そのファイル記述子に `os.fstat()`を使って) ファイルオブジェクトfileobjの どちらか用に作成します。 `TarInfo`の属性のいくつかは、 `addfile()`を使って追加する前に修正することができます。 arcnameがもし与えられていれば、アーカイブ内のファイルの 代替名を指定します。

`close`( | )

  `TarFile`をクローズします。書き出しモードでは、完了ゼロブロックが 2つ、アーカイブに追加されます。

`posix=True`
  もし`True`なら、POSIX 1003.1-1990 準拠のアーカイブを作成します。GNU 拡張機能は使われません、というのは、それらは POSIX 標準の一部ではないからです。 これはファイル名の長さを最大 256 に、linkname を100文字に制限します。 もしパス名がこの制限を越えたら、`ValueError`が 発生します。 もし `False`であれば、GNU tar 互換アーカイブを作成します。それは POSIX 準拠ではありませんが、無制限長さのパス名を保管することができます。

`dereference=False`
  もし `False`であれば、シンボリックリンクとハードリンクをアーカイブに追加します。 もし `True`であれば、ターゲットファイルの内容をアーカイブに追加します。これは、 リンクをサポートしないシステムには何も効果もありません。

`ignore_zeros=False`
  もし `False`であれば、空のブロックをアーカイブの終わりとして処理します。 もし `True`であれば、空(で無効な)ブロックは飛ばして、できるだけ多くの メンバーを取得しようとします。これは連結した、あるいは損傷したアーカイブでのみ 役に立ちます。

`debug=0`
  `0`(デバッグメッセージなし)から `3`(すべてのデバッグ メッセージあり)までを設定すべきです。そのメッセージは `sys.stdout` に書かれます。

`errorlevel=0`
  もし `0` なら、`extract()`を使っている時、すべてのエラーが無視されます。 それでも、デバッギングが有効である時は、それらは、デバッグ出力にエラーメッセージとして 出力されます。 もし`1`なら、すべてのフェータルエラーが、`OSError`あるいは `IOError` 例外として発生します。 もし`2`なら、すべてのフェータルでないエラーが、`TarError`例外と して、やはり発生します。