Archive (アーカイブ)#

  • v1.21.0での新機能

このクラスは、ファイルフォルダーやZIPやTARアーカイブのようなコンテナファイルの一般化を表します。アーカイブは、ファイルフォルダー、ZIP/TARファイル、および単一のバイナリデータ要素の任意のコレクションにアクセスできるようにし、すべてが1つの階層的なフォルダーツリーの一部であるかのようにします。

PyMuPDFでは、アーカイブは現在、フォント、画像、およびその他のリソースを検索する場所を指定するために Story (ストーリー) オブジェクトによってのみ使用されています。

メソッド / 属性

簡単な説明

Archive.add()

アーカイブに新しいデータを追加する

Archive.has_entry()

名前で指定されたデータを読む

Archive.read_entry()

名前で指定されたデータを読む

Archive.entry_list

アーカイブアイテムのリスト[辞書]

クラス API

class Archive#
__init__(self[, content[, path]])#

新しいアーカイブを作成します。パラメーターが指定されない場合、空のアーカイブが作成されます。

提供される場合、content は次のいずれかであることができます:

  • 別の Archive: アーカイブは新しいアーカイブのサブアーカイブになります。

  • 文字列: これはローカルフォルダまたはファイルの名前である必要があります。pathlib.Path オブジェクトもサポートされています。

    • フォルダ はサブアーカイブに変換され、そのファイル(およびサブフォルダ)は名前でアクセスできます。

    • ファイル はモード "rb" で読み取られ、これらのバイナリデータ( bytes オブジェクト)は単一のメンバーサブアーカイブとして扱われます。この場合、path パラメーターは 必須 で、このアイテムが見つかる/取得できるメンバー名である必要があります。

  • zipfile.ZipFile または tarfile.TarFile オブジェクト: サブアーカイブとして追加されます。

  • Python バイナリオブジェクト( bytesbytearrayio.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'}]
>>>

This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at artifex.com or contact Artifex Software Inc., 39 Mesa Street, Suite 108A, San Francisco CA 94129, United States for further information.

Discord logo