sys — funções específicas do sistema¶
Este módulo fornece acesso a variáveis e funções específicas do interpretador, incluindo argumentos da linha de comandos, o caminho de pesquisa de módulos, streams padrão e informações sobre a implementação em execução.
Funções¶
- sys.exit(retval: object = 0, /) NoReturn¶
Termina o programa atual com um código de saída indicado. Internamente, esta função lança uma exceção
SystemExit. Se for fornecido um argumento, o seu valor é passado como argumento aSystemExit.Na OpenMV Cam, uma
SystemExitnão tratada provoca atualmente um Reset suave do MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Regista func para ser chamada aquando da terminação. func deve ser um callable sem argumentos, ou
Nonepara desativar a chamada. A funçãoatexitdevolve o valor anterior definido por esta função, que inicialmente éNone.Diferença para o CPython
Esta função é uma extensão do MicroPython destinada a fornecer funcionalidade semelhante ao módulo
atexitdo CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Imprime a exceção com um traceback para um objeto semelhante a ficheiro file (ou
sys.stdoutpor omissão).Diferença para o CPython
Esta é uma versão simplificada de uma função que existe no módulo
tracebackdo CPython. Ao contrário detraceback.print_exception(), esta função recebe apenas o valor da exceção em vez do tipo de exceção, valor de exceção e objeto traceback; o argumento file deve ser posicional; não são suportados argumentos adicionais. O módulotracebackcompatível com CPython pode ser encontrado emmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Ativa o rastreio da execução de bytecode. Para mais detalhes, consulte a documentação do CPython.
Esta função não está disponível na OpenMV Cam. Está desativada por omissão porque abranda a execução do código; para a ativar é necessário compilar firmware personalizado.
Constantes¶
- sys.implementation: object¶
Objeto com informações sobre a implementação Python atual. Para o MicroPython, possui os seguintes atributos:
name - string «micropython»
version - tuplo (major, minor, micro, releaselevel), por ex. (1, 22, 0, “”)
_machine - string que descreve a máquina subjacente
_mpy - versão do formato de ficheiro mpy suportada (atributo opcional)
_build - string que pode ajudar a identificar a configuração com que o MicroPython foi compilado
_thread - atributo string opcional, existe se o destino suportar threading e é «GIL» ou «unsafe»
Este objeto é a forma recomendada de distinguir o MicroPython de outras implementações Python (note que pode não existir em ports minimais).
A partir da versão 1.22.0-preview, o quarto nó releaselevel em implementation.version é uma string vazia ou
"preview".A entrada _build foi adicionada na versão 1.25.0 e é um conjunto de elementos separados por hífenes. Podem ser adicionados novos elementos no futuro, pelo que é preferível aceder a este campo com
sys.implementation._build.split("-"). Os elementos atualmente utilizados são:Na OpenMV Cam, o primeiro elemento é o nome da placa e o segundo elemento (se presente) é a variante da placa.
A entrada _thread foi adicionada na versão 1.26.0 e, se existir, o destino tem o módulo
_thread. Se o destino ativar o GIL (global interpreter lock), este atributo é"GIL". Caso contrário, o atributo é"unsafe"e o destino tem threading mas não ativa o GIL; os objetos Python mutáveis (comobytearray,listedict) partilhados entre threads devem ser protegidos explicitamente por bloqueios como_thread.allocate_lock.Diferença para o CPython
O CPython exige mais atributos para este objeto, mas o mínimo útil está implementado no MicroPython.
- sys.maxsize: int¶
Valor máximo que um tipo inteiro nativo pode conter na plataforma atual, ou valor máximo representável pelo tipo inteiro do MicroPython, se for menor que o valor máximo da plataforma (é o caso dos ports MicroPython sem suporte de inteiros longos).
Este atributo é útil para detetar o «número de bits» de uma plataforma (32 bits vs 64 bits, etc.). Recomenda-se não comparar este atributo diretamente com um valor, mas sim contar o número de bits nele:
bits = 0 v = sys.maxsize while v: bits += 1 v >>= 1 if bits > 32: # 64-bit (or more) platform ... else: # 32-bit (or less) platform # Note that on 32-bit platform, value of bits may be less than 32 # (e.g. 31) due to peculiarities described above, so use "> 16", # "> 32", "> 64" style of comparisons.
- sys.path: list[str]¶
Uma lista mutável de diretórios onde procurar módulos importados.
Diferença para o CPython
No MicroPython, uma entrada com o valor
".frozen"indica que a importação deve pesquisar módulos frozen nesse ponto da pesquisa. Se não for encontrado nenhum módulo frozen, a pesquisa não procurará um diretório chamado.frozen, continuando com a próxima entrada emsys.path.
- sys.platform: str¶
A plataforma em que o MicroPython está a ser executado. Esta é uma string definida pelo port/placa – por exemplo
"mimxrt"na OpenMV RT1060 e"alif"na OpenMV AE3 (algumas OpenMV Cams mais antigas reportam uma string específica do modelo, como"OpenMV4-H7"). Para verificar se o seu programa está a ser executado no MicroPython (em vez de outra implementação Python), usesys.implementation.
- sys.ps1: str¶
Atributo mutável que contém a string usada como prompt primário do REPL. Por omissão, fornece o prompt Python padrão
>>>. Veja tambémsys.ps2para o prompt de continuação.
- sys.ps2: str¶
Atributo mutável que contém a string usada como prompt de continuação do REPL. Por omissão, fornece o prompt Python padrão
.... Veja tambémsys.ps1para o prompt primário.
- sys.tracebacklimit: int¶
Atributo mutável que contém um valor inteiro correspondente ao número máximo de entradas de traceback a armazenar numa exceção. Defina como 0 para desativar a adição de tracebacks. O valor por omissão é 1000.
Nota: este atributo não está disponível na OpenMV Cam.