Документация Python неофициальный перевод

importlib.resources.abc – Абстрактные базовые классы для ресурсовimportlib.resources.abc – Abstract base classes for resources

Исходный код: Lib/importlib/resources/abc.py


Новое в версии 3.11.

class importlib.resources.abc.ResourceReader

Заменено на TraversableResources

An abstract base class to provide the ability to read resources.

С точки зрения этого ABC, ресурс – это бинарный артефакт, поставляемый внутри пакета. Обычно это что-то вроде файла данных, который находится рядом с __init__.py файлом пакета. Назначение этого класса – абстрагировать доступ к таким файлам данных, чтобы не имело значения, хранятся ли пакет и его файлы данных, например, в zip-архиве или в файловой системе.

Для любого из методов этого класса аргумент resource должен быть path-подобным объектом, который по сути представляет собой имя файла. Это означает, что в аргументе resource не должно быть путей к подкаталогам. Это связано с тем, что местоположение пакета, для которого предназначен читатель, выступает в роли «каталога». Следовательно, метафора каталогов и имён файлов – это пакеты и ресурсы соответственно. Именно поэтому экземпляры этого класса должны напрямую соответствовать конкретному пакету (а не потенциально представлять несколько пакетов или модуль).

Загрузчики, желающие поддерживать чтение ресурсов, должны предоставить метод с именем get_resource_reader(fullname), который возвращает объект, реализующий интерфейс этого ABC. Если модуль, указанный fullname, не является пакетом, этот метод должен вернуть None. Объект, совместимый с этим ABC, должен возвращаться только тогда, когда указанный модуль является пакетом.

Добавлено в версии 3.7.

abstractmethod open_resource(resource)

Возвращает открытый файлоподобный объект для бинарного чтения ресурса.

Если ресурс не найден, выбрасывается FileNotFoundError.

abstractmethod resource_path(resource)

Возвращает путь в файловой системе к ресурсу.

Если ресурс не существует на файловой системе в конкретном виде, возбуждается FileNotFoundError.

abstractmethod is_resource(name)

Возвращает True, если указанный name считается ресурсом. FileNotFoundError возникает, если name не существует.

abstractmethod contents()

Возвращает итерируемый объект со строками по содержимому пакета. Обратите внимание, что не все имена, возвращаемые итератором, должны быть реальными ресурсами; например, допустимо возвращать имена, для которых is_resource() будет ложным.

Разрешение возвращать имена, не являющиеся ресурсами, предусмотрено для ситуаций, когда заранее известно, как хранятся пакет и его ресурсы, и такие имена могут быть полезны. Например, разрешается возвращать имена подкаталогов, чтобы, когда известно, что пакет и ресурсы хранятся в файловой системе, эти имена подкаталогов можно было использовать напрямую.

Абстрактный метод возвращает итерируемый объект без элементов.

class importlib.resources.abc.Traversable

Объект с подмножеством методов pathlib.Path, подходящих для обхода каталогов и открытия файлов.

Для представления объекта в файловой системе используйте importlib.resources.as_file().

Новое в версии 3.9.

name

Абстрактный. Базовое имя этого объекта без каких-либо ссылок на родительские элементы.

abstractmethod iterdir()

Возвращает объекты Traversable внутри self.

abstractmethod is_dir()

Возвращает True, если self является каталогом.

abstractmethod is_file()

Возвращает True, если self является файлом.

abstractmethod joinpath(child)

Возвращает дочерний элемент Traversable в self.

abstractmethod __truediv__(child)

Возвращает дочерний элемент Traversable в self.

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

mode может быть 'r' или 'rb' для открытия в текстовом или бинарном режиме. Возвращает дескриптор, подходящий для чтения (то же самое, что pathlib.Path.open).

При открытии в текстовом режиме принимает параметры кодировки, аналогичные тем, что принимаются io.TextIOWrapper.

read_bytes()

Читает содержимое self как байты.

read_text(encoding=None)

Читает содержимое self как текст.

class importlib.resources.abc.TraversableResources

Абстрактный базовый класс для считывателей ресурсов, способных обслуживать интерфейс importlib.resources.files(). Подклассы ResourceReader и предоставляют конкретные реализации абстрактных методов ResourceReader. Поэтому любой загрузчик, предоставляющий TraversableResources, также предоставляет ResourceReader.

Загрузчики, поддерживающие чтение ресурсов, должны реализовать этот интерфейс.

Новое в версии 3.9.

abstractmethod files()

Возвращает объект importlib.resources.abc.Traversable для загруженного пакета.