msvcrt — Полезные подпрограммы из среды выполнения MS VC++


Данные функции предоставляют доступ к некоторым полезным возможностям на платформах Windows. Некоторые модули более высокого уровня используют данные функции для создания реализации своих служб в Windows. Например, модуль getpass использует его в реализации функции getpass().

Дополнительную документацию по этим функциям можно найти в документации API платформы.

Модуль реализует как обычный, так и расширенный char варианты консольного API ввода/вывода. Обычный API работает только с ASCII символами и имеет ограниченное применение для интернационализированных приложений. API широких символов следует использовать везде, где это возможно.

Изменено в версии 3.3: Операции в этом модуле теперь вызывают OSError, когда раньше вызывалось IOError.

Файловые операции

msvcrt.locking(fd, mode, nbytes)

Блокирует части файла на основе дескриптора файла fd из среды выполнения C. При сбое вызывает OSError. Заблокированная область файла простирается от текущей позиции файла на nbytes байт и может продолжаться до конца файла. mode должен быть одной из констант LK_*, перечисленных ниже. Несколько областей в файле могут быть заблокированы одновременно, но не могут перекрываться. Соседние регионы не объединяются; они должны быть разблокированы по отдельности.

Вызывает событие аудита msvcrt.locking с аргументами fd, mode, nbytes.

msvcrt.LK_LOCK
msvcrt.LK_RLCK

Блокирует указанные байты. Если байты не могут быть заблокированы, программа немедленно повторяет попытку через 1 секунду. Если после 10 попыток байты не могут быть заблокированы, вызывается OSError.

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

Блокирует указанные байты. Если байты не могут быть заблокированы, вызывается OSError.

msvcrt.LK_UNLCK

Разблокирует указанные байты, которые должны были быть ранее заблокированы.

msvcrt.setmode(fd, flags)

Устанавливает режим перевода конца строки для файлового дескриптора fd. Чтобы установить его в текстовый режим, flags должен быть os.O_TEXT; для двоичного файла это должен быть os.O_BINARY.

msvcrt.open_osfhandle(handle, flags)

Создает дескриптор файла среды выполнения C из дескриптора файла handle. Параметр flags должен быть побитовым ИЛИ os.O_APPEND, os.O_RDONLY и os.O_TEXT. Возвращённый файловый дескриптор может использоваться как параметр os.fdopen() для создания файлового объекта.

Вызывает событие аудита msvcrt.open_osfhandle с аргументами handle, flags.

msvcrt.get_osfhandle(fd)

Возвращает дескриптор файла для файлового дескриптора fd. Вызывает OSError, если fd не распознан.

Вызывает событие аудита msvcrt.get_osfhandle с аргументом fd.

Консольный ввод/вывод

msvcrt.kbhit()

Возвращает True, если нажатие клавиши ожидает чтения.

msvcrt.getch()

Читает нажатие клавиши и возвращает полученный символ в виде строки байтов. На консоль ничего не выводится. Данный вызов будет заблокирован, если нажатие клавиши ещё не доступно, но не будет ждать нажатия Enter. Если нажатая клавиша была специальной функциональной клавишей, возвращается '\000' или '\xe0'; следующий вызов вернёт код ключа. Данная функция не может прочитать нажатие клавиши Control-C.

msvcrt.getwch()

Широкий символьный вариант getch(), возвращающий Юникод значение.

msvcrt.getche()

Аналогична getch(), но нажатие клавиши будет отражено, если оно представляет печатный символ.

msvcrt.getwche()

Широкий символьный вариант getche(), возвращающий Юникод значение.

msvcrt.putch(char)

Выводит строку байтов char на консоль без буферизации.

msvcrt.putwch(unicode_char)

Широкий символьный вариант putch(), принимающий Юникод значение.

msvcrt.ungetch(char)

Заставляет строку байтов char «оттолкнуть» обратно в буфер консоли; это будет следующий символ, прочитанный getch() или getche().

msvcrt.ungetwch(unicode_char)

Широкий символьный вариант ungetch(), принимающий Юникод значение.

Другие функции

msvcrt.heapmin()

Принудительно очищает кучу malloc() и возвращает неиспользуемые блоки в операционную систему. В случае сбоя вызывает OSError.