Spec-Zone.ru › Python 3.12

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

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

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

class importlib.resources.abc.ResourceReader

Заменено на TraversableResources

Абстрактный базовый класс, предоставляющий возможность чтения ресурсов.

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

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

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

Устарело начиная с версии 3.12, будет удалено в версии 3.14: Используйте importlib.resources.abc.TraversableResources вместо этого.

abstractmethod open_resource(resource)

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

Если ресурс не найден, поднимается исключение FileNotFoundError.

abstractmethod resource_path(resource)

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

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

abstractmethod is_resource(name)

Возвращает True, если заданное имя рассматривается как ресурс. Если имя не существует, поднимается исключение FileNotFoundError.

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

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/importlib.resources.abc.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API