Archive (아카이브)

  • v1.21.0에서 새로 추가됨

이 클래스는 ZIP 및 TAR 아카이브와 같은 파일 폴더 및 컨테이너 파일의 일반화를 나타냅니다. 아카이브는 파일 폴더, ZIP/TAR 파일 및 단일 바이너리 데이터 요소의 임의 컬렉션에 접근할 수 있게 하며, 모두 하나의 계층적 폴더 트리의 일부인 것처럼 처리합니다.

PyMuPDF 에서 아카이브는 현재 Story 객체에서만 사용되며, 글꼴, 이미지 및 기타 리소스를 찾을 위치를 지정합니다.

메서드 / 속성

간략 설명

Archive.add()

아카이브에 새 데이터 추가

Archive.has_entry()

주어진 이름이 멤버인지 확인

Archive.read_entry()

이름으로 지정된 데이터 읽기

Archive.entry_list

아카이브 항목의 list[dict]

클래스 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")data 가 요소 이름 "path/name" 을 사용하여 찾을 수 있음을 의미합니다. 다른 하위 아카이브도 마찬가지입니다: ZIP 하위 아카이브의 멤버를 검색하려면 이름에 "path/" 접두사가 있어야 합니다. 이 매개변수의 주요 목적은 아마도 중복 이름을 구분하는 것입니다.

참고

아카이브에 중복 항목 이름이 존재하는 경우 항상 해당 이름의 마지막 항목이 찾아지거나 검색됩니다. 아카이브 생성 중 또는 아카이브에 더 많은 데이터를 추가하는 동안(Archive.add() 참조) 중복 확인이 수행되지 않습니다. 이를 방지하려면 path 매개변수를 사용하세요.

add(content[, path])

하위 아카이브를 추가합니다. 매개변수의 의미는 위에서 설명한 것과 정확히 같습니다. 물론 여기서는 content 매개변수가 선택 사항이 아닙니다.

has_entry(name)

항목이 하위 아카이브 중 하나에 존재하는지 확인합니다.

매개변수:

name (str) – 항목의 정규화된 이름. 항목의 하위 아카이브가 추가된 path 접두사를 포함해야 합니다.

반환:

True 또는 False.

read_entry(name)

항목의 데이터를 검색합니다.

매개변수:

name (str) – 항목의 정규화된 이름. 항목의 하위 아카이브가 추가된 path 접두사를 포함해야 합니다.

반환:

항목의 바이너리 데이터(bytes). 찾을 수 없으면 예외가 발생합니다.

entry_list

아카이브의 하위 아카이브 목록. 각 목록 항목은 다음 키를 가진 딕셔너리입니다:

  • entries – 이 하위 아카이브의 (최상위) 항목 이름 목록.

  • fmt – 하위 아카이브의 형식. 문자열 “dir”(파일 폴더), “zip”(ZIP 아카이브), “tar”(TAR 아카이브) 또는 단일 바이너리 항목이나 파일 내용의 경우 “tree” 중 하나입니다.

  • path – 이 하위 아카이브가 추가된 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.