importlib.resources.abc -- Các lớp cơ sở trừu tượng cho tài nguyên

Source code: Lib/importlib/resources/abc.py


Added in version 3.11.

class importlib.resources.abc.ResourceReader

Superseded by TraversableResources

Một abstract base class để cung cấp khả năng đọc resources.

Từ quan điểm của ABC này, resource là một tạo phẩm nhị phân được vận chuyển trong một gói hàng. Thông thường, đây giống như một tệp dữ liệu nằm bên cạnh tệp __init__.py của gói. Mục đích của lớp này là giúp tóm tắt việc truy cập các tệp dữ liệu đó để không thành vấn đề nếu gói và (các) tệp dữ liệu của nó được lưu trữ, ví dụ: trong tệp zip so với trên hệ thống tệp.

Đối với bất kỳ phương thức nào của lớp này, đối số resource được mong đợi là path-like object đại diện về mặt khái niệm chỉ là tên tệp. Điều này có nghĩa là không có đường dẫn thư mục con nào được đưa vào đối số resource. Điều này là do vị trí của gói mà trình đọc dành cho đóng vai trò là "thư mục". Do đó, phép ẩn dụ cho các thư mục và tên tệp tương ứng là các gói và tài nguyên. Đây cũng là lý do tại sao các phiên bản của lớp này dự kiến ​​sẽ tương quan trực tiếp với một gói cụ thể (thay vì có khả năng đại diện cho nhiều gói hoặc một mô-đun).

Các trình tải muốn hỗ trợ việc đọc tài nguyên phải cung cấp một phương thức có tên là get_resource_reader(fullname) để trả về một đối tượng triển khai giao diện của ABC này. Nếu mô-đun được chỉ định bởi tên đầy đủ không phải là một gói thì phương thức này sẽ trả về None. Một đối tượng tương thích với ABC này chỉ nên được trả về khi mô-đun được chỉ định là một gói.

Sắp loại bỏ từ phiên bản 3.12: Thay vào đó hãy sử dụng importlib.resources.abc.TraversableResources.

abstractmethod open_resource(resource)

Trả về một file-like object đã mở để đọc nhị phân của resource.

Nếu không tìm thấy tài nguyên, FileNotFoundError sẽ được nâng lên.

abstractmethod resource_path(resource)

Trả về đường dẫn hệ thống tập tin tới resource.

Nếu tài nguyên không tồn tại cụ thể trên hệ thống tệp, hãy nâng cao FileNotFoundError.

abstractmethod is_resource(path)

Trả về True nếu path có tên được coi là tài nguyên. FileNotFoundError được nâng lên nếu path không tồn tại.

Thay đổi trong phiên bản 3.10: Đối số name được đổi tên thành path.

abstractmethod contents()

Trả về một chuỗi iterable trong nội dung của gói. Xin lưu ý rằng không bắt buộc tất cả các tên được trình vòng lặp trả về phải là tài nguyên thực, ví dụ: có thể chấp nhận trả lại tên mà is_resource() sẽ sai.

Việc cho phép trả về các tên không phải tài nguyên là cho phép các trường hợp trong đó cách gói và tài nguyên của nó được lưu trữ được biết trước và các tên không phải tài nguyên sẽ hữu ích. Ví dụ: cho phép trả về tên thư mục con để khi biết gói và tài nguyên được lưu trữ trên hệ thống tệp thì các tên thư mục con đó có thể được sử dụng trực tiếp.

Phương thức trừu tượng trả về một lần lặp không có mục nào.

class importlib.resources.abc.Traversable

Một đối tượng có tập hợp con các phương thức pathlib.Path phù hợp để duyệt qua các thư mục và mở tệp.

Để thể hiện đối tượng trên hệ thống tệp, hãy sử dụng importlib.resources.as_file().

name

Trừu tượng. Tên cơ sở của đối tượng này mà không có bất kỳ tham chiếu gốc nào.

abstractmethod iterdir()

Mang lại các đối tượng có thể truyền tải trong chính nó.

abstractmethod is_dir()

Trả về True nếu self là một thư mục.

abstractmethod is_file()

Trả về True nếu self là một tập tin.

abstractmethod joinpath(*pathsegments)

Duyệt qua các thư mục theo pathsegments và trả về kết quả là Traversable.

Mỗi đối số pathsegments có thể chứa nhiều tên được phân tách bằng dấu gạch chéo lên (/, posixpath.sep ). Ví dụ: những điều sau đây là tương đương:

files.joinpath('subdir', 'subsuddir', 'file.txt')
files.joinpath('subdir/subsuddir/file.txt')

Lưu ý rằng một số triển khai Traversable có thể không được cập nhật lên phiên bản mới nhất của giao thức. Để tương thích với các cách triển khai như vậy, hãy cung cấp một đối số duy nhất không có dấu phân cách đường dẫn cho mỗi lệnh gọi tới joinpath. Ví dụ:

files.joinpath('subdir').joinpath('subsubdir').joinpath('file.txt')

Thay đổi trong phiên bản 3.11: joinpath chấp nhận nhiều pathsegments và các phân đoạn này có thể chứa dấu gạch chéo lên làm dấu phân cách đường dẫn. Trước đây, chỉ một đối số child duy nhất được chấp nhận.

abstractmethod __truediv__(child)

Trả về bản thân đứa trẻ có thể đi qua. Tương đương với joinpath(child).

abstractmethod open(mode='r', *args, **kwargs)

mode có thể là 'r' hoặc 'rb' để mở dưới dạng văn bản hoặc nhị phân. Trả lại một tay cầm phù hợp để đọc (giống như pathlib.Path.open).

Khi mở dưới dạng văn bản, chấp nhận các tham số mã hóa, chẳng hạn như các tham số được io.TextIOWrapper chấp nhận.

read_bytes()

Đọc nội dung của bản thân dưới dạng byte.

read_text(encoding=None)

Đọc nội dung của bản thân dưới dạng văn bản.

class importlib.resources.abc.TraversableResources

Một lớp cơ sở trừu tượng dành cho các trình đọc tài nguyên có khả năng phục vụ giao diện importlib.resources.files(). Các lớp con ResourceReader và cung cấp các triển khai cụ thể các phương thức trừu tượng của ResourceReader. Do đó, bất kỳ bộ nạp nào cung cấp TraversableResources cũng cung cấp ResourceReader.

Các trình tải muốn hỗ trợ việc đọc tài nguyên phải triển khai giao diện này.

abstractmethod files()

Trả về đối tượng importlib.resources.abc.Traversable cho gói đã tải.