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