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

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

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


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

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.12: Используйте importlib.resources.abc.TraversableResources.

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().

name

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

abstractmethod iterdir()

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

abstractmethod is_dir()

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

abstractmethod is_file()

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

abstractmethod joinpath(*pathsegments)

Обходит каталоги в соответствии с pathsegments и возвращает результат в виде Traversable.

Каждый аргумент pathsegments может содержать несколько имён, разделённых прямыми слешами (/, posixpath.sep ). Например, следующие записи эквивалентны:

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

Обратите внимание: некоторые реализации Traversable могут не соответствовать последней версии протокола. Для совместимости с такими реализациями передавайте единственный аргумент без разделителей пути в каждый вызов joinpath. Например:

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

Изменено в версии 3.11: joinpath принимает несколько pathsegments, и эти сегменты могут содержать прямые слеши в качестве разделителей пути. Ранее принимался только один аргумент child.

abstractmethod __truediv__(child)

Возвращает дочерний элемент Traversable в self. Эквивалентно joinpath(child).

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.

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

abstractmethod files()

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