12.5. tarfile — tarアーカイブファイルの読み取りと書き込み—Pythonドキュメント
12.5。 tarfile —tarアーカイブファイルの読み取りと書き込み
バージョン2.3の新機能。
ソースコード: :source: `Lib / tarfile.py`
tarfile モジュールを使用すると、gzipまたはbz2圧縮を使用するアーカイブを含むtarアーカイブの読み取りと書き込みが可能になります。 zipfile モジュールを使用して、.zip
ファイル、または shutil の上位関数を読み書きします。
いくつかの事実と数字:
POSIX.1-1988(ustar)形式の読み取り/書き込みサポート。
longname および longlink 拡張機能を含むGNUtar形式の読み取り/書き込みサポート、 sparse 拡張機能の読み取り専用サポート。
POSIX.1-2001(pax)形式の読み取り/書き込みサポート。
バージョン2.6の新機能。
ディレクトリ、通常のファイル、ハードリンク、シンボリックリンク、FIFO、文字デバイス、ブロックデバイスを処理し、タイムスタンプ、アクセス許可、所有者などのファイル情報を取得および復元できます。
- tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, \*\*kwargs)
パス名 name の TarFile オブジェクトを返します。 TarFile オブジェクトと許可されるキーワード引数の詳細については、 TarFileオブジェクトを参照してください。
mode は、
'filemode[:compression]'
の形式の文字列である必要があり、デフォルトは'r'
です。 モードの組み合わせの完全なリストは次のとおりです。モード
アクション
'r' or 'r:*'
透過圧縮で読むために開きます(推奨)。
'r:'
圧縮せずに排他的に読むために開きます。
'r:gz'
gzip圧縮で読むために開きます。
'r:bz2'
bzip2圧縮で読むために開きます。
'a' or 'a:'
圧縮せずに追加するために開きます。 ファイルが存在しない場合は作成されます。
'w' or 'w:'
非圧縮書き込み用に開きます。
'w:gz'
gzip圧縮書き込み用に開きます。
'w:bz2'
bzip2圧縮書き込み用に開きます。
'a:gz'
または'a:bz2'
は使用できないことに注意してください。 モードが特定の(圧縮された)ファイルを読み取り用に開くのに適していない場合、 ReadError が発生します。 これを回避するには、モード'r'
を使用してください。 圧縮方法がサポートされていない場合、 CompressionError が発生します。fileobj が指定されている場合、 name 用に開かれたファイルオブジェクトの代わりに使用されます。 位置0にあるはずです。
モード
'w:gz'
、'r:gz'
、'w:bz2'
、'r:bz2'
、 tarfile.open()は、キーワード引数 compresslevel [を受け入れます。 X124X](デフォルトは9
)で、ファイルの圧縮レベルを指定します。特別な目的のために、モードの2番目のフォーマットがあります:
'filemode|[compression]'
。 tarfile.open()は、データをブロックのストリームとして処理する TarFile オブジェクトを返します。 ファイルに対してランダムなシークは行われません。 指定した場合、 fileobj は、read()
またはwrite()
メソッド(モードに応じて)を持つ任意のオブジェクトです。 bufsize はブロックサイズを指定し、デフォルトは20 * 512
バイトです。 このバリアントを例と組み合わせて使用しますsys.stdin
、ソケットファイルオブジェクトまたはテープデバイス。 ただし、このような TarFile オブジェクトは、ランダムアクセスを許可しないという制限があります。例を参照してください。 現在可能なモード:モード
アクション
*' 透過圧縮で読み取るために、tarブロックのストリームを開きます。
' 読み取り用に非圧縮タールブロックのストリームを開きます。
gz' 読み取り用にgzip圧縮されたストリームを開きます。
bz2' 読み取り用にbzip2圧縮ストリームを開きます。
' 書き込み用に非圧縮のストリームを開きます。
gz' 書き込み用にgzip圧縮されたストリームを開きます。
bz2' 書き込み用にbzip2圧縮ストリームを開きます。
- class tarfile.TarFile
- tarアーカイブを読み書きするためのクラス。 このクラスを直接使用しないでください。代わりに tarfile.open()を使用することをお勧めします。 TarFileオブジェクトを参照してください。
- class tarfile.TarFileCompat(filename, mode='r', compression=TAR_PLAIN)
zipfile のようなインターフェースを備えたtarアーカイブへの制限付きアクセスのためのクラス。 詳細については、 zipfile モジュールのドキュメントを参照してください。 圧縮は、次の定数のいずれかである必要があります。
- TAR_PLAIN
非圧縮のtarアーカイブの定数。
- TAR_GZIPPED
gzip 圧縮tarアーカイブの定数。
バージョン2.6以降非推奨: TarFileCompat クラスはPython3で削除されました。
- exception tarfile.TarError
- すべての tarfile 例外の基本クラス。
- exception tarfile.ReadError
- tarアーカイブが開かれると発生します。これは、 tarfile モジュールで処理できないか、何らかの理由で無効です。
- exception tarfile.CompressionError
- 圧縮方法がサポートされていない場合、またはデータを適切にデコードできない場合に発生します。
- exception tarfile.StreamError
- ストリームのような TarFile オブジェクトに典型的な制限のために発生します。
- exception tarfile.ExtractError
- TarFile.extract()を使用しているときに、致命的でないエラーに対して発生しますが、
TarFile.errorlevel
== 2
の場合のみです。
モジュールレベルでは、次の定数を使用できます。
- tarfile.ENCODING
- デフォルトの文字エンコード:Windowsでは
'utf-8'
、それ以外の場合は sys.getfilesystemencoding()によって返される値。
- exception tarfile.HeaderError
取得するバッファが無効な場合、 TarInfo.frombuf()によって発生します。
バージョン2.6の新機能。
次の各定数は、 tarfile モジュールが作成できるtarアーカイブ形式を定義します。 詳細については、セクションサポートされているtar形式を参照してください。
- tarfile.USTAR_FORMAT
- POSIX.1-1988(ustar)形式。
- tarfile.GNU_FORMAT
- GNUtar形式。
- tarfile.PAX_FORMAT
- POSIX.1-2001(pax)形式。
- tarfile.DEFAULT_FORMAT
- アーカイブを作成するためのデフォルトの形式。 これは現在 GNU_FORMAT です。
も参照してください
- モジュール zipfile
- zipfile 標準モジュールのドキュメント。
- アーカイブ操作
- 標準の shutil モジュールによって提供される高レベルのアーカイブ機能のドキュメント。
- GNU tarマニュアル、基本的なtar形式
- GNUtar拡張機能を含むtarアーカイブファイルのドキュメント。
12.5.1。 TarFileオブジェクト
TarFile オブジェクトは、tarアーカイブへのインターフェイスを提供します。 tarアーカイブは一連のブロックです。 アーカイブメンバー(保存されたファイル)は、ヘッダーブロックとそれに続くデータブロックで構成されます。 ファイルをtarアーカイブに複数回保存することができます。 各アーカイブメンバーは、 TarInfo オブジェクトで表されます。詳細については、 TarInfoオブジェクトを参照してください。
TarFile オブジェクトは、 with ステートメントのコンテキストマネージャーとして使用できます。 ブロックが完了すると、自動的に閉じられます。 例外が発生した場合、書き込み用に開かれたアーカイブはファイナライズされないことに注意してください。 内部で使用されているファイルオブジェクトのみが閉じられます。 使用例については、例セクションを参照してください。
バージョン2.7の新機能:コンテキスト管理プロトコルのサポートが追加されました。
- class tarfile.TarFile(name=None, mode='r', fileobj=None, format=DEFAULT_FORMAT, tarinfo=TarInfo, dereference=False, ignore_zeros=False, encoding=ENCODING, errors=None, pax_headers=None, debug=0, errorlevel=0)
以下のすべての引数はオプションであり、インスタンス属性としてもアクセスできます。
name はアーカイブのパス名です。 fileobj が指定されている場合は、省略できます。 この場合、ファイルオブジェクトの
name
属性が存在する場合はそれが使用されます。モードは、既存のアーカイブから読み取る
'r'
、既存のファイルにデータを追加する'a'
、または既存のファイルを上書きする新しいファイルを作成する'w'
のいずれかです。一。fileobj を指定すると、データの読み取りまたは書き込みに使用されます。 判別できる場合は、モードが fileobj のモードで上書きされます。 fileobj は位置0から使用されます。
ノート
TarFile が閉じている場合、 fileobj は閉じられません。
format はアーカイブフォーマットを制御します。 モジュールレベルで定義されている定数 USTAR_FORMAT 、 GNU_FORMAT 、または PAX_FORMAT のいずれかである必要があります。
バージョン2.6の新機能。
tarinfo 引数を使用して、デフォルトの TarInfo クラスを別のクラスに置き換えることができます。
バージョン2.6の新機能。
dereference が False の場合、アーカイブにシンボリックリンクとハードリンクを追加します。 True の場合は、ターゲットファイルのコンテンツをアーカイブに追加します。 これは、シンボリックリンクをサポートしていないシステムには影響しません。
ignore_zeros が False の場合、空のブロックをアーカイブの終わりとして扱います。 True の場合は、空の(無効な)ブロックをスキップして、できるだけ多くのメンバーを取得するようにしてください。 これは、連結または破損したアーカイブを読み取る場合にのみ役立ちます。
debug は、
0
(デバッグメッセージなし)から3
(すべてのデバッグメッセージ)まで設定できます。 メッセージはsys.stderr
に書き込まれます。errorlevel が
0
の場合、 TarFile.extract()を使用するとすべてのエラーが無視されます。 それでも、デバッグが有効になっている場合は、デバッグ出力にエラーメッセージとして表示されます。1
の場合、すべての致命的エラーはOSError
またはIOError
例外として発生します。2
の場合、すべての致命的でないエラーは、 TarError 例外としても発生します。encoding および errors 引数は、文字列をUnicodeオブジェクトに変換する方法(またはその逆)を制御します。 デフォルト設定はほとんどのユーザーで機能します。 詳細については、セクション Unicodeの問題を参照してください。
バージョン2.6の新機能。
pax_headers 引数は、 format が PAX_FORMAT の場合、paxグローバルヘッダーとして追加されるUnicode文字列のオプションの辞書です。
バージョン2.6の新機能。
- classmethod TarFile.open(...)
- 代替コンストラクター。 tarfile.open()関数は、実際にはこのクラスメソッドへのショートカットです。
- TarFile.getmember(name)
メンバー name の TarInfo オブジェクトを返します。 name がアーカイブに見つからない場合、
KeyError
が発生します。ノート
メンバーがアーカイブ内で複数回出現する場合、その最後の出現が最新バージョンであると見なされます。
- TarFile.getmembers()
- アーカイブのメンバーを TarInfo オブジェクトのリストとして返します。 リストの順序は、アーカイブのメンバーと同じです。
- TarFile.getnames()
- メンバーを名前のリストとして返します。 getmembers()によって返されるリストと同じ順序です。
- TarFile.list(verbose=True)
sys.stdout
に目次を印刷します。 verbose が False の場合、メンバーの名前のみが出力されます。 True の場合、 ls -l と同様の出力が生成されます。
- TarFile.next()
- TarFile が読み取り用に開かれている場合、アーカイブの次のメンバーを TarInfo オブジェクトとして返します。 利用可能なものがなくなった場合は、なしを返します。
- TarFile.extractall(path='.', members=None)
アーカイブから現在の作業ディレクトリまたはディレクトリパスにすべてのメンバーを抽出します。 オプションの members を指定する場合は、 getmembers()によって返されるリストのサブセットである必要があります。 所有者、変更時間、権限などのディレクトリ情報は、すべてのメンバーが抽出された後に設定されます。 これは、2つの問題を回避するために行われます。ディレクトリにファイルが作成されるたびに、ディレクトリの変更時刻がリセットされます。 また、ディレクトリのアクセス許可で書き込みが許可されていない場合、ディレクトリへのファイルの抽出は失敗します。
警告
事前の検査なしに、信頼できないソースからアーカイブを抽出しないでください。 ファイルがパスの外部で作成される可能性があります。
"/"
で始まる絶対ファイル名または2つのドット".."
で始まるファイル名を持つメンバー。バージョン2.5の新機能。
- TarFile.extract(member, path=)
フルネームを使用して、アーカイブから現在の作業ディレクトリにメンバーを抽出します。 そのファイル情報は可能な限り正確に抽出されます。 member は、ファイル名または TarInfo オブジェクトです。 パスを使用して別のディレクトリを指定できます。
ノート
extract()メソッドは、いくつかの抽出の問題を処理しません。 ほとんどの場合、 extractall()メソッドの使用を検討する必要があります。
警告
extractall()の警告を参照してください。
- TarFile.extractfile(member)
アーカイブからメンバーをファイルオブジェクトとして抽出します。 member は、ファイル名または TarInfo オブジェクトです。 member が通常のファイルの場合、ファイルのようなオブジェクトが返されます。 member がリンクの場合、ファイルのようなオブジェクトがリンクのターゲットから構築されます。 member が上記のいずれでもない場合、 None が返されます。
ノート
ファイルのようなオブジェクトは読み取り専用です。 メソッド
read()
、 readline()、readlines()
、seek()
、tell()
、および close()[ X104X]、およびその行の反復もサポートします。
- TarFile.add(name, arcname=None, recursive=True, exclude=None, filter=None)
ファイル name をアーカイブに追加します。 name は、任意のタイプのファイル(ディレクトリ、FIFO、シンボリックリンクなど)にすることができます。 指定した場合、 arcname は、アーカイブ内のファイルの代替名を指定します。 ディレクトリはデフォルトで再帰的に追加されます。 これは、 recursive を False に設定することで回避できます。 exclude が指定されている場合、それは1つのファイル名引数を取り、ブール値を返す関数である必要があります。 この値に応じて、それぞれのファイルが除外( True )または追加( False )されます。 filter を指定する場合は、 TarInfo オブジェクト引数を取り、変更された TarInfo オブジェクトを返す関数である必要があります。 代わりに None を返す場合、 TarInfo オブジェクトはアーカイブから除外されます。 例については、例を参照してください。
バージョン2.6で変更: exclude パラメーターが追加されました。
バージョン2.7で変更: filter パラメーターが追加されました。
バージョン2.7以降非推奨: exclude パラメーターは非推奨です。代わりに filter パラメーターを使用してください。 移植性を最大限にするには、 exclude が最終的に削除されたときにコードが影響を受けないように、 filter を位置引数としてではなくキーワード引数として使用する必要があります。
- TarFile.addfile(tarinfo, fileobj=None)
TarInfo オブジェクト tarinfo をアーカイブに追加します。 fileobj が指定されている場合、
tarinfo.size
バイトがそこから読み取られ、アーカイブに追加されます。 TarInfo オブジェクトを直接作成することも、 gettarinfo()を使用して作成することもできます。ノート
Windowsプラットフォームでは、ファイルサイズに関する煩わしさを避けるために、 fileobj は常にモード
'rb'
で開く必要があります。
- TarFile.gettarinfo(name=None, arcname=None, fileobj=None)
os.stat()または同等の結果から、既存のファイルに TarInfo オブジェクトを作成します。 ファイルは、 name で名前が付けられるか、ファイル記述子を持つファイルオブジェクト fileobj として指定されます。 指定されている場合、 arcname はアーカイブ内のファイルの代替名を指定します。指定されていない場合、名前は fileobj の name 属性またはから取得されます。 ] name 引数。
addfile()を使用して追加する前に、 TarInfo の属性の一部を変更できます。 ファイルオブジェクトがファイルの先頭にある通常のファイルオブジェクトでない場合は、 size などの属性を変更する必要があります。 これは、 GzipFile などのオブジェクトの場合です。 name も変更できます。その場合、 arcname はダミー文字列になる可能性があります。
- TarFile.close()
- TarFile を閉じます。 書き込みモードでは、2つの終了ゼロブロックがアーカイブに追加されます。
- TarFile.posix
これを True に設定することは、 format 属性を USTAR_FORMAT に設定することと同等であり、 False は GNU_FORMAT と同等です。
バージョン2.4で変更: posix のデフォルトは False です。
バージョン2.6以降非推奨:代わりに format 属性を使用してください。
- TarFile.pax_headers
paxグローバルヘッダーのキーと値のペアを含む辞書。
バージョン2.6の新機能。
12.5.2。 TarInfoオブジェクト
TarInfo オブジェクトは、 TarFile の1つのメンバーを表します。 ファイルに必要なすべての属性(ファイルの種類、サイズ、時間、アクセス許可、所有者など)を保存する以外に、ファイルの種類を判別するための便利な方法がいくつか用意されています。 ファイルのデータ自体は含まれていません。
TarInfo オブジェクトは、 TarFile のメソッドgetmember()
、getmembers()
、およびgettarinfo()
によって返されます。
- class tarfile.TarInfo(name=)
- TarInfo オブジェクトを作成します。
- TarInfo.frombuf(buf)
文字列バッファ buf から TarInfo オブジェクトを作成して返します。
バージョン2.6の新機能:バッファが無効な場合、 HeaderError が発生します。
- TarInfo.fromtarfile(tarfile)
TarFile オブジェクト tarfile から次のメンバーを読み取り、 TarInfo オブジェクトとして返します。
バージョン2.6の新機能。
- TarInfo.tobuf(format=DEFAULT_FORMAT, encoding=ENCODING, errors='strict')
TarInfo オブジェクトから文字列バッファを作成します。 引数の詳細については、 TarFile クラスのコンストラクターを参照してください。
バージョン2.6で変更:引数が追加されました。
TarInfo
オブジェクトには、次のパブリックデータ属性があります。
- TarInfo.name
- アーカイブメンバーの名前。
- TarInfo.size
- バイト単位のサイズ。
- TarInfo.mtime
- 最終変更の時刻。
- TarInfo.mode
- 許可ビット。
- TarInfo.type
- ファイルの種類。 type は通常、次の定数の1つです:
REGTYPE
、AREGTYPE
、LNKTYPE
、SYMTYPE
、DIRTYPE
、[ X104X] 、CONTTYPE
、CHRTYPE
、BLKTYPE
、GNUTYPE_SPARSE
。 TarInfo オブジェクトのタイプをより便利に判別するには、以下のis*()
メソッドを使用します。
- TarInfo.linkname
- タイプ
LNKTYPE
およびSYMTYPE
の TarInfo オブジェクトにのみ存在するターゲットファイル名の名前。
- TarInfo.uid
- このメンバーを最初に保管したユーザーのユーザーID。
- TarInfo.gid
- このメンバーを最初に保存したユーザーのグループID。
- TarInfo.uname
- ユーザー名。
- TarInfo.gname
- グループ名。
- TarInfo.pax_headers
関連するpax拡張ヘッダーのキーと値のペアを含む辞書。
バージョン2.6の新機能。
TarInfo オブジェクトは、いくつかの便利なクエリメソッドも提供します。
- TarInfo.isfile()
Tarinfo
オブジェクトが通常のファイルの場合、 True を返します。
- TarInfo.isreg()
- isfile()と同じです。
- TarInfo.isdir()
- ディレクトリの場合は True を返します。
- TarInfo.issym()
- シンボリックリンクの場合は True を返します。
- TarInfo.islnk()
- ハードリンクの場合は True を返します。
- TarInfo.ischr()
- キャラクターデバイスの場合は True を返します。
- TarInfo.isblk()
- ブロックデバイスの場合は、 True を返します。
- TarInfo.isfifo()
- FIFOの場合は、 True を返します。
- TarInfo.isdev()
- キャラクターデバイス、ブロックデバイス、FIFOのいずれかである場合は、 True を返します。
12.5.3。 例
tarアーカイブ全体を現在の作業ディレクトリに抽出する方法:
import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()
リストの代わりにジェネレーター関数を使用して、 TarFile.extractall()でtarアーカイブのサブセットを抽出する方法:
import os
import tarfile
def py_files(members):
for tarinfo in members:
if os.path.splitext(tarinfo.name)[1] == ".py":
yield tarinfo
tar = tarfile.open("sample.tar.gz")
tar.extractall(members=py_files(tar))
tar.close()
ファイル名のリストから非圧縮のtarアーカイブを作成する方法:
import tarfile
tar = tarfile.open("sample.tar", "w")
for name in ["foo", "bar", "quux"]:
tar.add(name)
tar.close()
with ステートメントを使用した同じ例:
import tarfile
with tarfile.open("sample.tar", "w") as tar:
for name in ["foo", "bar", "quux"]:
tar.add(name)
gzip圧縮されたtarアーカイブを読み取り、いくつかのメンバー情報を表示する方法:
import tarfile
tar = tarfile.open("sample.tar.gz", "r:gz")
for tarinfo in tar:
print tarinfo.name, "is", tarinfo.size, "bytes in size and is",
if tarinfo.isreg():
print "a regular file."
elif tarinfo.isdir():
print "a directory."
else:
print "something else."
tar.close()
TarFile.add()の filter パラメーターを使用してアーカイブを作成し、ユーザー情報をリセットする方法:
import tarfile
def reset(tarinfo):
tarinfo.uid = tarinfo.gid = 0
tarinfo.uname = tarinfo.gname = "root"
return tarinfo
tar = tarfile.open("sample.tar.gz", "w:gz")
tar.add("foo", filter=reset)
tar.close()
12.5.4。 サポートされているtar形式
tarfile モジュールで作成できるtar形式は3つあります。
POSIX.1-1988 ustar形式( USTAR_FORMAT )。 最大256文字の長さのファイル名と最大100文字のリンク名をサポートします。 最大ファイルサイズは8ギガバイトです。 これは古くて制限されていますが、広くサポートされている形式です。
GNU tar形式( GNU_FORMAT )。 長いファイル名とリンク名、8ギガバイトを超えるファイル、およびスパースファイルをサポートします。 これは、GNU / Linuxシステムの事実上の標準です。 tarfile は長い名前のGNUtar拡張機能を完全にサポートし、スパースファイルのサポートは読み取り専用です。
POSIX.1-2001 pax形式( PAX_FORMAT )。 これは、事実上制限のない最も柔軟な形式です。 長いファイル名とリンク名、大きなファイルをサポートし、移植可能な方法でパス名を保存します。 ただし、今日のすべてのtar実装がpaxアーカイブを適切に処理できるわけではありません。
pax 形式は、既存の ustar 形式の拡張です。 他の方法では保存できない情報には、追加のヘッダーを使用します。 paxヘッダーには2つの種類があります。拡張ヘッダーは後続のファイルヘッダーにのみ影響し、グローバルヘッダーは完全なアーカイブに有効であり、後続のすべてのファイルに影響します。 paxヘッダー内のすべてのデータは、移植性の理由から UTF-8 でエンコードされています。
読み取ることはできるが作成できないtar形式には、さらにいくつかのバリエーションがあります。
- 古代のV7フォーマット。 これはUnix第7版からの最初のtar形式であり、通常のファイルとディレクトリのみを格納します。 名前は100文字を超えてはならず、ユーザー/グループ名の情報はありません。 一部のアーカイブでは、ASCII以外の文字を含むフィールドの場合、ヘッダーチェックサムが誤って計算されています。
- SunOStar拡張フォーマット。 この形式はPOSIX.1-2001pax形式の変形ですが、互換性はありません。
12.5.5。 Unicodeの問題
tar形式は元々、ファイルシステム情報の保存に主な焦点を当ててテープドライブにバックアップを作成するために考案されました。 現在、tarアーカイブは、ネットワークを介したファイル配布とアーカイブの交換に一般的に使用されています。 元の形式(他のすべての形式は単なる変形である)の1つの問題は、異なる文字エンコードをサポートするという概念がないことです。 たとえば、 UTF-8 システムで作成された通常のtarアーカイブは、非ASCII文字が含まれている場合、 Latin-1 システムで正しく読み取ることができません。 名前(すなわち これらの文字を含むファイル名、リンク名、ユーザー/グループ名)は破損しているように見えます。 残念ながら、アーカイブのエンコードを自動検出する方法はありません。
pax形式は、この問題を解決するために設計されました。 ユニバーサル文字エンコード UTF-8 を使用して非ASCII名を格納します。 paxアーカイブが読み取られると、これらの UTF-8 名がローカルファイルシステムのエンコーディングに変換されます。
Unicode変換の詳細は、 TarFile クラスの encoding および errors キーワード引数によって制御されます。
encoding のデフォルト値は、ローカル文字エンコードです。 これは、 sys.getfilesystemencoding()および sys.getdefaultencoding()から推定されます。 読み取りモードでは、 encoding は、Unicode名をpaxアーカイブからローカル文字エンコードの文字列に変換するためにのみ使用されます。 書き込みモードでは、 encoding の使用は、選択したアーカイブ形式によって異なります。 PAX_FORMAT の場合、非ASCII文字を含む入力名は、 UTF-8 文字列として保存する前にデコードする必要があります。 他の形式は、Unicodeオブジェクトが入力名として使用されない限り、 encoding を使用しません。 これらは、アーカイブに追加される前に8ビットの文字列に変換されます。
errors 引数は、 encoding との間で変換できない文字の処理方法を定義します。 可能な値は、セクションコーデック基本クラスにリストされています。 読み取りモードでは、追加のスキーム'utf-8'
があります。これは、不正な文字が UTF-8 表現に置き換えられることを意味します。 これがデフォルトのスキームです。 書き込みモードでは、エラーのデフォルト値は'strict'
であり、名前情報が見過ごされないように変更されます。