Archive (アーカイブ)#
v1.21.0での新機能
このクラスは、ファイルフォルダーやZIPやTARアーカイブのようなコンテナファイルの一般化を表します。アーカイブは、ファイルフォルダー、ZIP/TARファイル、および単一のバイナリデータ要素の任意のコレクションにアクセスできるようにし、すべてが1つの階層的なフォルダーツリーの一部であるかのようにします。
PyMuPDFでは、アーカイブは現在、フォント、画像、およびその他のリソースを検索する場所を指定するために Story (ストーリー) オブジェクトによってのみ使用されています。
メソッド / 属性 |
簡単な説明 |
---|---|
アーカイブに新しいデータを追加する |
|
名前で指定されたデータを読む |
|
名前で指定されたデータを読む |
|
アーカイブアイテムのリスト[辞書] |
クラス API
- class Archive#
- __init__(self[, content[, path]])#
新しいアーカイブを作成します。パラメーターが指定されない場合、空のアーカイブが作成されます。
提供される場合、
content
は次のいずれかであることができます:別の Archive: アーカイブは新しいアーカイブのサブアーカイブになります。
文字列: これはローカルフォルダまたはファイルの名前である必要があります。
pathlib.Path
オブジェクトもサポートされています。フォルダ はサブアーカイブに変換され、そのファイル(およびサブフォルダ)は名前でアクセスできます。
ファイル はモード
"rb"
で読み取られ、これらのバイナリデータ(bytes
オブジェクト)は単一のメンバーサブアーカイブとして扱われます。この場合、path
パラメーターは 必須 で、このアイテムが見つかる/取得できるメンバー名である必要があります。
zipfile.ZipFile
またはtarfile.TarFile
オブジェクト: サブアーカイブとして追加されます。Python バイナリオブジェクト(
bytes
、bytearray
、io.BytesIO
): これは単一のメンバーサブアーカイブを追加します。この場合、path
パラメーターは 必須 で、このアイテムが見つかる/取得できるメンバー名である必要があります。タプル`(data, name)`: これはメンバー名
name
を持つ単一のメンバーサブアーカイブを追加します。data
はPythonバイナリオブジェクトまたはローカルファイル名である可能性があります(その場合、バイナリファイルのコンテンツが使用されます)。path
を指定する必要がある場合は、このフォーマットを使用してください。Pythonシーケンス: これは上記のいずれかの組み合わせを指定するための便益フォーマットです。
提供される場合、
path
は文字列である必要があります。content
がバイナリデータまたはファイル名の場合、このパラメーターは必須で、データが見つかる名前である必要があります。それ以外の場合、このパラメーターはオプションです。これは、このサブアーカイブの要素が見つかるマウントポイントまたはフォルダ名をシミュレートするために使用できます。たとえば、この仕様
Archive((data, "name"), "path")
は、データが要素名 "`"path/name"` で見つかります。他のサブアーカイブについても同様です:ZIPサブアーカイブのメンバーを取得するには、その名前に"path/"
を接頭辞として追加する必要があります。このパラメーターの主な目的は、重複する名前を区別することである可能性があります。
注釈
アーカイブ内に重複するエントリ名が存在する場合、常にその名前の最後のエントリが見つかり/取得されます。アーカイブの作成中、またはアーカイブにさらにデータを追加する際
Archive.add()
を参照)、重複をチェックしません。この問題を防ぐために path パラメーターを使用してください。
- add(content[, path])#
サブアーカイブを追加します。パラメータの意味は上記とまったく同じです。もちろん、ここではパラメータ
content
はオプションではありません。
- has_entry(name)#
エントリがサブアーカイブのいずれかに存在するかどうかを確認します。
- パラメータ:
name (str) -- エントリの完全修飾名。エントリのサブアーカイブが追加されたパスのプレフィックスを含む必要があります。
- 戻り値:
True
またはFalse
。
- read_entry(name)#
エントリのデータを取得します。
- パラメータ:
name (str) -- エントリの完全修飾名。エントリのサブアーカイブが追加されたパスのプレフィックスを含む必要があります。
- 戻り値:
エントリのバイナリデータ(
bytes
)です。見つからない場合は例外が発生します。
- entry_list#
アーカイブのサブアーカイブのリストです。各リストアイテムは、次のキーを持つ辞書です:
entries
- このサブアーカイブ内の(トップレベルの)エントリ名のリスト。fmt
- サブアーカイブの形式。これは文字列 "dir"(ファイルフォルダ)、"zip"(ZIPアーカイブ)、"tar"(TARアーカイブ)、または単一のバイナリエントリまたはファイルコンテンツの場合は "tree" のいずれかです。path
- このサブアーカイブが追加されたパラメータの値です。
例:
>>> from pprint import pprint >>> import pymupdf >>> dir1 = "fitz-32" # a folder name >>> dir2 = "fitz-64" # a folder name >>> img = ("nur-ruhig.jpg", "img") # an image file >>> members = (dir1, img, dir2) # we want to append these in one go >>> arch = pymupdf.Archive() >>> arch.add(members, path="mypath") >>> pprint(arch.entry_list) [{'entries': ['310', '37', '38', '39'], 'fmt': 'dir', 'path': 'mypath'}, {'entries': ['img'], 'fmt': 'tree', 'path': 'mypath'}, {'entries': ['310', '311', '37', '38', '39', 'pypy'], 'fmt': 'dir', 'path': 'mypath'}] >>>