Archive (아카이브)¶
v1.21.0에서 새로 추가됨
이 클래스는 ZIP 및 TAR 아카이브와 같은 파일 폴더 및 컨테이너 파일의 일반화를 나타냅니다. 아카이브는 파일 폴더, ZIP/TAR 파일 및 단일 바이너리 데이터 요소의 임의 컬렉션에 접근할 수 있게 하며, 모두 하나의 계층적 폴더 트리의 일부인 것처럼 처리합니다.
PyMuPDF 에서 아카이브는 현재 Story 객체에서만 사용되며, 글꼴, 이미지 및 기타 리소스를 찾을 위치를 지정합니다.
메서드 / 속성 |
간략 설명 |
|---|---|
아카이브에 새 데이터 추가 |
|
주어진 이름이 멤버인지 확인 |
|
이름으로 지정된 데이터 읽기 |
|
아카이브 항목의 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'}] >>>
