34.2. msvcrt — Rotinas úteis do tempo de execução do MS VC++


Essas funções fornecem acesso a alguns recursos úteis nas plataformas Windows. Alguns módulos de nível superior usam essas funções para criar as implementações do Windows de seus serviços. Por exemplo, o módulo getpass usa isso na implementação da função getpass().

Mais documentação sobre essas funções pode ser encontrada na documentação da API da plataforma.

O módulo implementa as variantes normal e ampla de caracteres da API de E/S do console. A API normal lida apenas com caracteres ASCII e é de uso limitado para aplicativos internacionalizados. A API ampla de caracteres deve ser usada sempre que possível.

Alterado na versão 3.3: As operações neste módulo agora levantam OSError onde IOError foi levantado.

34.2.1. Operações com arquivos

msvcrt.locking(fd, mode, nbytes)

Bloqueia parte de um arquivo com base no descritor de arquivo fd no tempo de execução C. Levanta OSError em falha. A região bloqueada do arquivo se estende da posição atual do arquivo para nbytes bytes e pode continuar além do final do arquivo. mode deve ser uma das constantes LK_* listadas abaixo. Várias regiões em um arquivo podem estar bloqueadas ao mesmo tempo, mas não podem se sobrepor. Regiões adjacentes não são mescladas; eles devem ser desbloqueados individualmente.

msvcrt.LK_LOCK
msvcrt.LK_RLCK

Bloqueia os bytes especificados. Se os bytes não puderem ser bloqueados, o programa tentará imediatamente novamente após 1 segundo. Se, após 10 tentativas, os bytes não puderem ser bloqueados, OSError será levantado.

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

Bloqueia os bytes especificados. Se os bytes não puderem ser bloqueados, OSError é levantado.

msvcrt.LK_UNLCK

Desbloqueia os bytes especificados, que devem ter sido bloqueados anteriormente.

msvcrt.setmode(fd, flags)

Defina o modo de conversão de final de linha para o descritor de arquivo fd. Para configurá-lo no modo de texto, flags deve ser os.O_TEXT; para binário, deve ser os.O_BINARY.

msvcrt.open_osfhandle(handle, flags)

Cria um descritor de arquivo em tempo de execução C a partir do identificador de arquivo handle. O parâmetro flags deve ser um OR bit a bit de os.O_APPEND, os.O_RDONLY e os.O_TEXT. O descritor de arquivo retornado pode ser usado como um parâmetro para os.fdopen() para criar um objeto de arquivo.

msvcrt.get_osfhandle(fd)

Retorna o identificador de arquivo para o descritor de arquivo fd. Leva OSError se fd não for reconhecido.

34.2.2. E/S de console

msvcrt.kbhit()

Return true if a keypress is waiting to be read.

msvcrt.getch()

Lê um pressionamento de tecla e retorna o caractere resultante como uma sequência de bytes. Nada é ecoado no console. Essa chamada será bloqueada se um pressionamento de tecla ainda não estiver disponível, mas não esperará que Enter seja pressionado. Se a tecla pressionada for uma tecla de função especial, ela retornará \000' ou '\xe0'; a próxima chamada retornará o código da chave. A tecla Control-C não pode ser lida com esta função.

msvcrt.getwch()

Variante com caractere largo de getch(), retornando um valor Unicode.

msvcrt.getche()

Semelhante a getch(), mas o pressionamento de tecla será repetido se representar um caractere imprimível.

msvcrt.getwche()

Variante com caractere largo de getche(), retornando um valor Unicode.

msvcrt.putch(char)

Imprime a sequência de bytes char no console sem armazenar em buffer.

msvcrt.putwch(unicode_char)

Variante com caractere largo de putch(), retornando um valor Unicode.

msvcrt.ungetch(char)

Faz com que a string de bytes char seja “empurrada” para o buffer do console; será o próximo caractere lido por getch() ou getche().

msvcrt.ungetwch(unicode_char)

Variante com caractere largo de ungetch(), retornando um valor Unicode.

34.2.3. Outras funções

msvcrt.heapmin()

Força o heap malloc() a ser limpado e retorna os blocos não utilizados ao sistema operacional. Em caso de falha, isso gera OSError.