Документация 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(path)

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

Изменено в версии 3.10: Аргумент name был переименован в path.

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 для загруженного пакета.