os — serviços básicos de “sistema operacional”¶
O módulo os contém funções para acesso e montagem do sistema de arquivos, redirecionamento e duplicação do terminal, e as funções uname e urandom.
Funções gerais¶
- os.uname() Tuple[str, str, str, str, str]¶
Retorna uma tupla (possivelmente uma tupla nomeada) contendo informações sobre a máquina subjacente e/ou seu sistema operacional. A tupla tem cinco campos na seguinte ordem, sendo cada um deles uma string:
sysname– O nome do sistema subjacentenodename– O nome de rede (pode ser igual asysname)release– A versão do sistema subjacenteversion– A versão do MicroPython e a data de compilaçãomachine– Um identificador para o hardware subjacente (por exemplo, placa, CPU)
- os.urandom(n: int) bytes¶
Retorna um objeto bytes com n bytes aleatórios. A fonte é criptograficamente adequada em todas as câmeras suportadas, embora a implementação varie por port:
Câmeras STM32 (M4, M7, H7, H7+, PT, N6) usam o periférico RNG de hardware do STM32.
Câmeras i.MX RT1062 (RT1060) usam o TRNG de hardware do chip.
Câmeras Alif Ensemble (AE3) usam o serviço de aleatoriedade de hardware do Secure Enclave.
Arduino Nano 33 BLE Sense usa o periférico RNG de hardware do nRF52.
Arduino Nano RP2040 Connect não possui TRNG de hardware; o PRNG do pico-sdk é semeado e continuamente remisturado com as fontes de entropia internas do RP2040.
Acesso ao sistema de arquivos¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Esta função retorna um iterador que então produz tuplas correspondentes às entradas do diretório que está sendo listado. Sem argumento, ela lista o diretório atual; caso contrário, lista o diretório indicado por dir.
As tuplas têm a forma (name, type, inode[, size]):
name é uma string (ou bytes se dir for um objeto bytes) e é o nome da entrada;
type é um inteiro que especifica o tipo da entrada, com 0x4000 para diretórios e 0x8000 para arquivos comuns;
inode é um inteiro correspondente ao inode do arquivo, e pode ser 0 para sistemas de arquivos que não possuem tal noção.
size é um inteiro que pode ser incluído dependendo do tipo de sistema de arquivos. Para entradas de arquivo, size representa o tamanho do arquivo ou -1 se desconhecido. Seu significado é atualmente indefinido para entradas de diretório.
- os.listdir(dir: str | None = None) List[str]¶
Sem argumento, lista o diretório atual. Caso contrário, lista o diretório fornecido.
- os.statvfs(path: str) Tuple¶
Obtém o status de um sistema de arquivos.
Retorna uma tupla com as informações do sistema de arquivos na seguinte ordem:
f_bsize– Tamanho do bloco do sistema de arquivosf_frsize– Tamanho do fragmentof_blocks– Tamanho do sistema de arquivos em unidades de f_frsizef_bfree– Número de blocos livresf_bavail– Número de blocos livres para usuários sem privilégiosf_files– Número de inodesf_ffree– Número de inodes livresf_favail– Número de inodes livres para usuários sem privilégiosf_flag– Flags de montagemf_namemax– Comprimento máximo do nome de arquivo
Parâmetros relacionados a inodes:
f_files,f_ffree,f_favaile o parâmetrof_flagpodem retornar0, pois podem estar indisponíveis em uma implementação específica do port.
Redirecionamento e duplicação do terminal¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
Duplica ou alterna o terminal do MicroPython (o REPL) para o objeto semelhante a stream fornecido. O argumento stream_object deve ser um objeto stream nativo ou derivar de
io.IOBasee implementar os métodosreadinto()ewrite(). O stream deve estar em modo não bloqueante ereadinto()deve retornarNonese não houver dados disponíveis para leitura.Após chamar esta função, toda a saída do terminal é repetida neste stream, e qualquer entrada disponível no stream é repassada à entrada do terminal.
O parâmetro index deve ser um inteiro não negativo e especifica qual slot de duplicação é configurado. Um determinado port pode implementar mais de um slot (o slot 0 sempre estará disponível) e, nesse caso, a entrada e a saída do terminal são duplicadas em todos os slots configurados.
Se
Nonefor passado como stream_object, a duplicação é cancelada no slot indicado por index.A função retorna o objeto semelhante a stream anterior no slot fornecido.
- os.dupterm_notify(obj_in: Any, /) None¶
Notifica o REPL do MicroPython de que há entrada disponível em um objeto semelhante a stream previamente registrado via
os.dupterm().Esta função deve ser chamada por implementações personalizadas de stream (por exemplo, UART, Bluetooth ou outros streams de REPL não USB) para informar ao REPL que a entrada está pronta para ser lida. O uso correto garante que caracteres especiais como Ctrl+C (usado para disparar KeyboardInterrupt) sejam processados prontamente pelo REPL, possibilitando o comportamento de interrupção esperado para o código do usuário.
O parâmetro obj_in é ignorado por
os.dupterm_notify(), mas é necessário para permitir chamar dupterm_notify a partir de um manipulador de interrupção comoUART.irq().Exemplo:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Nota
Se a função
dupterm_notify()não for chamada, a entrada do stream personalizado pode não ser detectada ou processada até a próxima sondagem do REPL, potencialmente atrasando KeyboardInterrupts ou outros sinais de controle. Isso é especialmente importante para UART, Bluetooth e outras conexões de REPL não padronizadas, onde a notificação automática não é garantida.
Montagem do sistema de arquivos¶
As funções e classes a seguir foram movidas para o módulo vfs. Elas são fornecidas neste módulo apenas para compatibilidade retroativa e serão removidas na versão 2 do MicroPython.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Monta o objeto de sistema de arquivos fsobj no local do VFS indicado pela string mount_point. fsobj pode ser um objeto VFS que possua um método
mount()ou um dispositivo de bloco. Se for um dispositivo de bloco, o tipo de sistema de arquivos é detectado automaticamente (uma exceção é lançada se nenhum sistema de arquivos for reconhecido). mount_point pode ser'/'para montar fsobj na raiz, ou'/<name>'para montá-lo em um subdiretório sob a raiz.Se readonly for
True, o sistema de arquivos é montado somente leitura.Durante o processo de montagem, o método
mount()é chamado no objeto de sistema de arquivos.Lança
OSError(EPERM)se mount_point já estiver montado.
- os.mount() List[Tuple[Any, str]]
Sem argumentos para
mount(), retorna uma lista de tuplas representando todos os pontos de montagem ativos.A lista retornada tem a forma [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Desmonta um sistema de arquivos. mount_point pode ser uma string nomeando o local de montagem, ou um objeto de sistema de arquivos previamente montado. Durante o processo de desmontagem, o método
umount()é chamado no objeto de sistema de arquivos.Lança
OSError(EINVAL)se mount_point não for encontrado.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Cria um objeto de sistema de arquivos que usa o formato de sistema de arquivos FAT. O armazenamento do sistema de arquivos FAT é fornecido por block_dev. Objetos criados por este construtor podem ser montados usando
mount().- static mkfs(block_dev: AbstractBlockDev) None¶
Constrói um sistema de arquivos FAT em block_dev.
- class os.VfsPosix(root: str | None = None)¶
Cria um objeto de sistema de arquivos que acessa o sistema de arquivos POSIX do host. Se root for especificado, ele deve ser um caminho no sistema de arquivos do host a ser usado como raiz do objeto
VfsPosix. Caso contrário, é usado o diretório atual do sistema de arquivos do host.Nota
VfsPosixestá disponível apenas no port Unix; não está presente na OpenMV Cam.