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

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


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

class importlib.resources.abc.ResourceReader

**Заменено проходимыми ресурсами*

abstract base class, чтобы обеспечить возможность чтения ресурсов.

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

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

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

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

abstractmethod open_resource(resource)

Возвращает значение opened, file-like object для двоичного считывания ресурса.

Если ресурс не может быть найден, выводится значение FileNotFoundError.

abstractmethod resource_path(resource)

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

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

abstractmethod is_resource(name)

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

abstractmethod contents()

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

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

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

class importlib.resources.abc.Traversable

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

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

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

name

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

abstractmethod iterdir()

Получайте проходимые объекты в self.

abstractmethod is_dir()

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

abstractmethod is_file()

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

abstractmethod joinpath(child)

Верните проходимого дочернего элемента в self.

abstractmethod __truediv__(child)

Верните проходимого дочернего элемента в 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 объект для загруженного пакета.

Вернуться на верх