importlib.resources
– Leitura, abertura e acesso aos recursos de pacote¶
Código-fonte: Lib/importlib/resources/__init__.py
Novo na versão 3.7.
This module leverages Python’s import system to provide access to resources within packages. If you can import a package, you can access resources within that package. Resources can be opened or read, in either binary or text mode.
Os recursos são mais ou menos semelhantes a arquivos dentro de diretórios, embora seja importante ter em mente que isso é apenas uma metáfora. Recursos e pacotes não precisam existir como arquivos e diretórios físicos no sistema de arquivos: por exemplo, um pacote e seus recursos podem ser importados de um arquivo zip usando zipimport
.
Nota
Esse módulo fornece funcionalidade semelhante ao Basic Resource Access do pkg_resources sem a sobrecarga de desempenho desse pacote. Isso facilita a leitura de recursos incluídos em pacotes, com uma semântica mais estável e consistente.
O backport autônomo desse módulo fornece mais informações sobre uso do importlib.resources e migração do pkg_resources para o importlib.resources.
Loaders
que desejam oferecer suporte à leitura de recursos devem implementar um método get_resource_reader(fullname)
conforme especificado por importlib.resources.abc.ResourceReader
.
- class importlib.resources.Package¶
Sempre que uma função aceitar um argumento
Package
, você poderá passar umobjeto módulo
ou um nome de módulo como uma string. Você só pode passar objetos de módulo cujo__spec__.submodule_search_locations
não sejaNone
.O tipo
Package
é definido comoUnion[str, ModuleType]
.
- importlib.resources.files(package)¶
Returns a
Traversable
object representing the resource container for the package (think directory) and its resources (think files). A Traversable may contain other containers (think subdirectories).package is either a name or a module object which conforms to the
Package
requirements.Novo na versão 3.9.
- importlib.resources.as_file(traversable)¶
Given a
Traversable
object representing a file, typically fromimportlib.resources.files()
, return a context manager for use in awith
statement. The context manager provides apathlib.Path
object.Exiting the context manager cleans up any temporary file created when the resource was extracted from e.g. a zip file.
Use
as_file
when the Traversable methods (read_text
, etc) are insufficient and an actual file on the file system is required.Novo na versão 3.9.
Funções descontinuadas¶
Um conjunto de funções mais antigo e descontinuado ainda está disponível, mas está programado para ser removido em uma versão futura do Python. A principal desvantagem dessas funções é que elas não oferecem suporte a diretórios: elas presumem que todos os recursos estão localizados diretamente em um package.
- importlib.resources.Resource¶
Para os argumentos resource das funções abaixo, você pode passar o nome de um recurso como uma string ou um
objeto caminho ou similar
.O tipo
Resource
é definido comoUnion[str, os.PathLike]
.
- importlib.resources.open_binary(package, resource)¶
Abre para leitura binária o resource dentro do package.
package é um nome ou um objeto módulo que está em conformidade com os requisitos do
Package
. resource é o nome do recurso a ser aberto dentro de package; ele não pode conter separadores de caminho e não pode ter sub-recursos (ou seja, não pode ser um diretório). Essa função retorna uma instância detyping.BinaryIO
, um fluxo de E/S binário aberto para leitura.Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas por:
files(package).joinpath(resource).open('rb')
- importlib.resources.open_text(package, resource, encoding='utf-8', errors='strict')¶
Abre para leitura de texto o resource dentro do package. Por padrão, o recurso é aberto para leitura como UTF-8.
package é um nome ou um objeto módulo que está em conformidade com os requisitos do
Package
. resource é o nome do recurso a ser aberto dentro de package; ele não pode conter separadores de caminho e não pode ter sub-recursos (ou seja, não pode ser um diretório). encoding e errors têm o mesmo significado que comopen()
embutido.Essa função retorna uma instância de
typing.TextIO
, um fluxo de E/S de texto aberto para leitura.Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas por:
files(package).joinpath(resource).open('r', encoding=encoding)
- importlib.resources.read_binary(package, resource)¶
Lê e retorna o conteúdo do resource dentro do package como
bytes
.package é um nome ou um objeto módulo que está em conformidade com os requisitos do
Package
. resource é o nome do recurso a ser aberto dentro de package; ele não pode conter separadores de caminho e não pode ter sub-recursos (ou seja, não pode ser um diretório). Essa função retorna o conteúdo do recurso comobytes
.Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas por:
files(package).joinpath(resource).read_bytes()
- importlib.resources.read_text(package, resource, encoding='utf-8', errors='strict')¶
Lê e retorna o conteúdo de resource em package como
str
. Por padrão, o conteúdo é lido como UTF-8 estrito.package é um nome ou um objeto módulo que está em conformidade com os requisitos do
Package
. resource é o nome do recurso a ser aberto dentro de package; ele não pode conter separadores de caminho e não pode ter sub-recursos (ou seja, não pode ser um diretório). encoding e errors têm o mesmo significado que comopen()
embutido. Esta função retorna o conteúdo do recurso comostr
.Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas por:
files(package).joinpath(resource).read_text(encoding=encoding)
- importlib.resources.path(package, resource)¶
Retorna o caminho para o resource como um caminho real do sistema de arquivos. Essa função retorna um gerenciador de contexto para uso em uma instrução
with
. O gerenciador de contexto fornece um objetopathlib.Path
.Sair do gerenciador de contexto limpa qualquer arquivo temporário criado quando o recurso precisa ser extraído, por exemplo, de um arquivo zip.
package é um nome ou um objeto módulo que está em conformidade com os requisitos do
Package
. resource é o nome do recurso a ser aberto dentro de package; ele não pode conter separadores de caminho e não pode ter sub-recursos (ou seja, não pode ser um diretório).Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas usando
as_file()
:as_file(files(package).joinpath(resource))
- importlib.resources.is_resource(package, name)¶
Retorna
True
se houver um recurso chamado name no pacote; caso contrário, retornaFalse
. Essa função não considera os diretórios como recursos. package é um nome ou um objeto módulo que está em conformidade com os requisitos dePackage
.Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas por:
files(package).joinpath(resource).is_file()
- importlib.resources.contents(package)¶
Retorna um iterável sobre os itens nomeados no pacote. O iterável retorna
str
recursos (por exemplo, arquivos) e não recursos (por exemplo, diretórios). O iterável não recorre a subdiretórios.package é um nome ou um objeto módulo que está em conformidade com os requisitos de
Package
.Obsoleto desde a versão 3.11: Chamadas para essa função podem ser substituídas por:
(resource.name for resource in files(package).iterdir() if resource.is_file())