importlib.resources.abc
– Абстрактные базовые классы для ресурсов¶
Источник: Lib/importlib/resources/abc.py
Added in version 3.11.
- class importlib.resources.abc.ResourceReader¶
Заменено на TraversableResources.
Значение abstract base class, обеспечивающее возможность чтения ресурсов.
С точки зрения этого букваря, ресурс - это двоичный артефакт, который поставляется в составе пакета. Обычно это что-то вроде файла данных, который находится рядом с
__init__.py
файлом пакета. Цель этого класса - помочь абстрагироваться от доступа к таким файлам данных, чтобы не имело значения, хранится ли пакет и его файл(ы) данных в файле zip, а не в файловой системе.Для любого из методов этого класса аргумент resource должен быть path-like object, который концептуально представляет собой просто имя файла. Это означает, что в аргумент resource не должны включаться пути к подкаталогам. Это происходит потому, что в качестве «каталога» выступает местоположение пакета, для которого предназначен считыватель. Отсюда метафора для каталогов и имен файлов - пакеты и ресурсы, соответственно. Именно поэтому ожидается, что экземпляры этого класса будут напрямую соотноситься с конкретным пакетом (вместо того, чтобы потенциально представлять несколько пакетов или модуль).
Загрузчики, которые хотят поддерживать чтение ресурсов, должны предоставлять метод
get_resource_reader(fullname)
, который возвращает объект, реализующий интерфейс этого ABC. Если модуль, указанный в fullname, не является пакетом, этот метод должен возвращатьNone
. Объект, совместимый с данным ABC, должен возвращаться только в том случае, если указанный модуль является пакетом.Утратил актуальность с версии 3.12, удален в версии 3.14: Вместо этого используйте
importlib.resources.abc.TraversableResources
.- abstractmethod open_resource(resource)¶
Возвращает открытое значение, file-like object для бинарного чтения ресурса.
Если ресурс не может быть найден, выдается сообщение
FileNotFoundError
.
- abstractmethod resource_path(resource)¶
Возвращает путь файловой системы к ресурсу.
Если ресурс конкретно не существует в файловой системе, поднимите
FileNotFoundError
.
- abstractmethod is_resource(name)¶
Возвращает
True
, если имя name считается ресурсом. ВозвращаетсяFileNotFoundError
, если имя name не существует.
- abstractmethod contents()¶
Возвращает iterable строк над содержимым пакета. Обратите внимание, что не обязательно, чтобы все имена, возвращаемые итератором, были реальными ресурсами, например, допустимо возвращать имена, для которых
is_resource()
будет ложным.Разрешение возвращать имена, не относящиеся к ресурсам, необходимо для ситуаций, когда способ хранения пакета и его ресурсов известен априори и имена, не относящиеся к ресурсам, могут быть полезны. Например, возврат имен подкаталогов разрешен для того, чтобы, когда известно, что пакет и ресурсы хранятся в файловой системе, можно было напрямую использовать имена этих подкаталогов.
Абстрактный метод возвращает итерабельную таблицу, не содержащую элементов.
- class importlib.resources.abc.Traversable¶
Объект с подмножеством методов
pathlib.Path
, подходящих для обхода каталогов и открытия файлов.Для представления объекта в файловой системе используйте
importlib.resources.as_file()
.- name¶
Абстрактное. Базовое имя этого объекта без каких-либо родительских ссылок.
- abstractmethod iterdir()¶
Yield Traversable objects in 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
принимает несколько сегментов пути, и эти сегменты могут содержать прямые косые черты в качестве разделителей путей. Ранее принимался только один аргумент 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)¶
Прочитайте содержимое себя как текст.
- class importlib.resources.abc.TraversableResources¶
Абстрактный базовый класс для считывателей ресурсов, способных обслуживать интерфейс
importlib.resources.files()
. ПодклассыResourceReader
и предоставляет конкретные реализации абстрактных методовResourceReader
. Поэтому любой загрузчик, поставляющийTraversableResources
, также поставляетResourceReader
.Загрузчики, которые хотят поддерживать чтение ресурсов, должны реализовать этот интерфейс.
- abstractmethod files()¶
Возвращает объект
importlib.resources.abc.Traversable
для загруженного пакета.