importlib.resources
– Package resource reading, opening and access¶
Source code: Lib/importlib/resources/__init__.py
Nuevo en la versión 3.7.
Este módulo aprovecha el sistema de importación de Python para brindar acceso a recursos dentro de paquetes. Si puede importar un paquete, puede acceder a los recursos dentro de ese paquete. Los recursos se pueden abrir o leer, ya sea en modo binario o de texto.
Los recursos son más o menos similares a los archivos dentro de los directorios, aunque es importante tener en cuenta que esto es solo una metáfora. Los recursos y paquetes no deben existir como archivos y directorios físicos en el sistema de archivos: por ejemplo, un paquete y sus recursos se pueden importar desde un archivo zip usando zipimport
.
Nota
Este módulo proporciona una funcionalidad similar a pkg_resources Acceso a los recursos básicos sin la sobrecarga de rendimiento de ese paquete. Esto facilita la lectura de los recursos incluidos en los paquetes, con una semántica más estable y consistente.
El soporte independiente de este módulo proporciona más información sobre el uso de importlib.resources y migración de pkg_resources a importlib.resources.
Los loaders
que deseen soportar la lectura de recursos deben implementar un método get_resource_reader(fullname)
según lo especificado por importlib.resources.abc.ResourceReader
.
- class importlib.resources.Package¶
Cada vez que una función acepta un argumento
Package
, puede pasar unmodule object
o un nombre de módulo como una cadena. Solo puede pasar objetos de módulo cuyo__spec__.submodule_search_locations
no seaNone
.El tipo
Package
se define comoUnion[str, ModuleType]
.
- importlib.resources.files(package)¶
Retorna un objeto
Traversable
que representa el contenedor de recursos para el paquete (imagine directorios) y sus recursos (imagine archivos). Un Traversable puede contener otros contenedores (piense en subdirectorios).package is either a name or a module object which conforms to the
Package
requirements.Nuevo en la versión 3.9.
- importlib.resources.as_file(traversable)¶
Dado un objeto
Traversable
que representa un archivo, generalmente deimportlib.resources.files()
, retorna un administrador de contexto para usar en una declaraciónwith
. El administrador de contexto proporciona un objetopathlib.Path
.Al salir del administrador de contexto, se limpia cualquier archivo temporal creado cuando se extrajo el recurso, p. ej: un archivo comprimido.
Utilice
as_file
cuando los métodos Traversable (read_text
, etc.) sean insuficientes y se requiera un archivo real en el sistema de archivos.Nuevo en la versión 3.9.
Funciones en desuso¶
Todavía está disponible un conjunto de funciones más antiguo y en desuso, pero está programado para eliminarse en una versión futura de Python. El principal inconveniente de estas funciones es que no admiten directorios: asumen que todos los recursos están ubicados directamente dentro de un paquete.
- importlib.resources.Resource¶
Para los argumentos recurso de las siguientes funciones, puede pasar el nombre de un recurso como una cadena o
path-like object
.El tipo
Resource
se define comoUnion[str, os.PathLike]
.
- importlib.resources.open_binary(package, resource)¶
Abierto para lectura binaria de recurso dentro de paquete.
package es un nombre o un objeto de módulo que cumple con los requisitos de
Package
. resource es el nombre del recurso para abrir dentro de package; puede que no contenga separadores de ruta y que no tenga subrecursos (es decir, no puede ser un directorio). Esta función retorna una instanciatyping.BinaryIO
, un flujo de E/S binario abierto para lectura.Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar por:
files(package).joinpath(resource).open('rb')
- importlib.resources.open_text(package, resource, encoding='utf-8', errors='strict')¶
Abierto para texto que lea resource dentro de package. De forma predeterminada, el recurso se abre para lectura como UTF-8.
package es un nombre o un objeto de módulo que cumple con los requisitos de
Package
. resource es el nombre del recurso para abrir dentro de package; puede que no contenga separadores de ruta y que no tenga subrecursos (es decir, no puede ser un directorio). encoding y errors tienen el mismo significado que conopen()
incorporado.Esta función retorna una instancia
typing.TextIO
, un flujo de E/S de texto abierto para lectura.Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar por:
files(package).joinpath(resource).open('r', encoding=encoding)
- importlib.resources.read_binary(package, resource)¶
Lee y retorna el contenido de resource dentro de package como
bytes
.package es un nombre o un objeto de módulo que cumple con los requisitos de
Package
. resource es el nombre del recurso para abrir dentro de package; puede que no contenga separadores de ruta y que no tenga subrecursos (es decir, no puede ser un directorio). Esta función retorna el contenido del recurso comobytes
.Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar por:
files(package).joinpath(resource).read_bytes()
- importlib.resources.read_text(package, resource, encoding='utf-8', errors='strict')¶
Lee y retorna el contenido de resource dentro de package como
str
. De forma predeterminada, los contenidos se leen como UTF-8 estricto.package es un nombre o un objeto de módulo que cumple con los requisitos de
Package
. resource es el nombre del recurso para abrir dentro de package; puede que no contenga separadores de ruta y que no tenga subrecursos (es decir, no puede ser un directorio). encoding y errors tienen el mismo significado que conopen()
integrado. Esta función retorna el contenido del recurso comostr
.Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar por:
files(package).joinpath(resource).read_text(encoding=encoding)
- importlib.resources.path(package, resource)¶
Retorna la ruta al resource como una ruta real del sistema de archivos. Esta función retorna un administrador de contexto para usar en una declaración
with
. El administrador de contexto proporciona un objetopathlib.Path
.Al salir del administrador de contexto, se limpia cualquier archivo temporal creado cuando se necesita extraer el recurso, p. ej: un archivo comprimido.
package es un nombre o un objeto de módulo que cumple con los requisitos de
Package
. resource es el nombre del recurso para abrir dentro de package; puede que no contenga separadores de ruta y que no tenga subrecursos (es decir, no puede ser un directorio).Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar usando
as_file()
:as_file(files(package).joinpath(resource))
- importlib.resources.is_resource(package, name)¶
Retorna
True
si hay un recurso llamado name en el paquete, de lo contrario,False
. Esta función no considera los directorios como recursos. package es un nombre o un objeto de módulo que cumple con los requisitos dePackage
.Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar por:
files(package).joinpath(resource).is_file()
- importlib.resources.contents(package)¶
Retorna un iterable sobre los elementos nombrados dentro del paquete. El iterable retorna recursos
str
(por ejemplo, archivos) y no recursos (por ejemplo, directorios). El iterable no recurre a subdirectorios.package es un nombre o un objeto de módulo que cumple con los requisitos de
Package
.Obsoleto desde la versión 3.11: Las llamadas a esta función se pueden reemplazar por:
(resource.name for resource in files(package).iterdir() if resource.is_file())