importlib.resources.abc.md
1> **Источник:** https://python-all.ru/3.11/library/importlib.resources.abc.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`importlib.resources.abc`](https://python-all.ru/3.11/library/importlib.resources.abc.html#module-importlib.resources.abc) – Абстрактные базовые классы для ресурсов89**Исходный код:** [Lib/importlib/resources/abc.py](https://python-all.ru/src/3.11/Lib/importlib/resources/abc.py)1011---1213Новое в версии 3.11.1415#### `class importlib.resources.abc.ResourceReader`1617*Заменено на TraversableResources*1819An [abstract base class](https://python-all.ru/3.11/glossary.html#term-abstract-base-class) to provide the ability to read *resources*.2021С точки зрения этого ABC, *ресурс* – это бинарный артефакт, поставляемый внутри пакета. Обычно это что-то вроде файла данных, который находится рядом с `__init__.py` файлом пакета. Назначение этого класса – абстрагировать доступ к таким файлам данных, чтобы не имело значения, хранятся ли пакет и его файлы данных, например, в zip-архиве или в файловой системе.2223Для любого из методов этого класса аргумент *resource* должен быть [path-подобным объектом](https://python-all.ru/3.11/glossary.html#term-path-like-object), который по сути представляет собой имя файла. Это означает, что в аргументе *resource* не должно быть путей к подкаталогам. Это связано с тем, что местоположение пакета, для которого предназначен читатель, выступает в роли «каталога». Следовательно, метафора каталогов и имён файлов – это пакеты и ресурсы соответственно. Именно поэтому экземпляры этого класса должны напрямую соответствовать конкретному пакету (а не потенциально представлять несколько пакетов или модуль).2425Загрузчики, желающие поддерживать чтение ресурсов, должны предоставить метод с именем `get_resource_reader(fullname)`, который возвращает объект, реализующий интерфейс этого ABC. Если модуль, указанный fullname, не является пакетом, этот метод должен вернуть [`None`](https://python-all.ru/3.11/library/constants.html#None). Объект, совместимый с этим ABC, должен возвращаться только тогда, когда указанный модуль является пакетом.2627Добавлено в версии 3.7.2829#### `abstractmethod open_resource(resource)`3031Возвращает открытый [файлоподобный объект](https://python-all.ru/3.11/glossary.html#term-file-like-object) для бинарного чтения *ресурса*.3233Если ресурс не найден, выбрасывается [`FileNotFoundError`](https://python-all.ru/3.11/library/exceptions.html#FileNotFoundError).3435#### `abstractmethod resource_path(resource)`3637Возвращает путь в файловой системе к *ресурсу*.3839Если ресурс не существует на файловой системе в конкретном виде, возбуждается [`FileNotFoundError`](https://python-all.ru/3.11/library/exceptions.html#FileNotFoundError).4041#### `abstractmethod is_resource(name)`4243Возвращает `True`, если указанный *name* считается ресурсом. [`FileNotFoundError`](https://python-all.ru/3.11/library/exceptions.html#FileNotFoundError) возникает, если *name* не существует.4445#### `abstractmethod contents()`4647Возвращает [итерируемый объект](https://python-all.ru/3.11/glossary.html#term-iterable) со строками по содержимому пакета. Обратите внимание, что не все имена, возвращаемые итератором, должны быть реальными ресурсами; например, допустимо возвращать имена, для которых [`is_resource()`](https://python-all.ru/3.11/library/importlib.resources.abc.html#importlib.resources.abc.ResourceReader.is_resource) будет ложным.4849Разрешение возвращать имена, не являющиеся ресурсами, предусмотрено для ситуаций, когда заранее известно, как хранятся пакет и его ресурсы, и такие имена могут быть полезны. Например, разрешается возвращать имена подкаталогов, чтобы, когда известно, что пакет и ресурсы хранятся в файловой системе, эти имена подкаталогов можно было использовать напрямую.5051Абстрактный метод возвращает итерируемый объект без элементов.5253#### `class importlib.resources.abc.Traversable`5455Объект с подмножеством методов [`pathlib.Path`](https://python-all.ru/3.11/library/pathlib.html#pathlib.Path), подходящих для обхода каталогов и открытия файлов.5657Для представления объекта в файловой системе используйте [`importlib.resources.as_file()`](https://python-all.ru/3.11/library/importlib.resources.html#importlib.resources.as_file).5859Новое в версии 3.9.6061#### `name`6263Абстрактный. Базовое имя этого объекта без каких-либо ссылок на родительские элементы.6465#### `abstractmethod iterdir()`6667Возвращает объекты Traversable внутри self.6869#### `abstractmethod is_dir()`7071Возвращает True, если self является каталогом.7273#### `abstractmethod is_file()`7475Возвращает True, если self является файлом.7677#### `abstractmethod joinpath(child)`7879Возвращает дочерний элемент Traversable в self.8081#### `abstractmethod __truediv__(child)`8283Возвращает дочерний элемент Traversable в self.8485#### `abstractmethod open(mode='r', *args, **kwargs)`8687*mode* может быть 'r' или 'rb' для открытия в текстовом или бинарном режиме. Возвращает дескриптор, подходящий для чтения (то же самое, что [`pathlib.Path.open`](https://python-all.ru/3.11/library/pathlib.html#pathlib.Path.open)).8889При открытии в текстовом режиме принимает параметры кодировки, аналогичные тем, что принимаются [`io.TextIOWrapper`](https://python-all.ru/3.11/library/io.html#io.TextIOWrapper).9091#### `read_bytes()`9293Читает содержимое self как байты.9495#### `read_text(encoding=None)`9697Читает содержимое self как текст.9899#### `class importlib.resources.abc.TraversableResources`100101Абстрактный базовый класс для считывателей ресурсов, способных обслуживать интерфейс [`importlib.resources.files()`](https://python-all.ru/3.11/library/importlib.resources.html#importlib.resources.files). Подклассы [`ResourceReader`](https://python-all.ru/3.11/library/importlib.resources.abc.html#importlib.resources.abc.ResourceReader) и предоставляют конкретные реализации абстрактных методов `ResourceReader`. Поэтому любой загрузчик, предоставляющий `TraversableResources`, также предоставляет `ResourceReader`.102103Загрузчики, поддерживающие чтение ресурсов, должны реализовать этот интерфейс.104105Новое в версии 3.9.106107#### `abstractmethod files()`108109Возвращает объект [`importlib.resources.abc.Traversable`](https://python-all.ru/3.11/library/importlib.resources.abc.html#importlib.resources.abc.Traversable) для загруженного пакета.110