msvcrt.md
1> **Источник:** https://python-all.ru/3.2/library/msvcrt.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 32.2. [`msvcrt`](https://python-all.ru/3.2/library/msvcrt.html#module-msvcrt) – Полезные подпрограммы из MS VC++ runtime89*Платформы:* Windows1011Эти функции предоставляют доступ к некоторым полезным возможностям на платформах Windows. Некоторые модули более высокого уровня используют эти функции для создания реализаций своих служб под Windows. Например, модуль [`getpass`](https://python-all.ru/3.2/library/getpass.html#module-getpass) использует их для реализации функции [`getpass()`](https://python-all.ru/3.2/library/getpass.html#module-getpass).1213Дополнительную документацию по этим функциям можно найти в документации Platform API.1415Модуль реализует как обычный, так и широкосимвольный варианты API консольного ввода-вывода. Обычный API работает только с символами ASCII и имеет ограниченную пользу для интернационализированных приложений. Широкосимвольный API следует использовать везде, где это возможно.1617## 32.2.1. Операции с файлами1819#### `msvcrt.locking(fd, mode, nbytes)`2021Блокирует часть файла на основе файлового дескриптора *fd* из среды C. Возбуждает [`IOError`](https://python-all.ru/3.2/library/exceptions.html#IOError) при неудаче. Заблокированная область файла начинается от текущей позиции файла и занимает *nbytes* байт; она может выходить за конец файла. *mode* должен быть одной из констант `LK_*`, перечисленных ниже. Несколько областей в одном файле могут быть заблокированы одновременно, но они не должны пересекаться. Смежные области не объединяются; их нужно разблокировать по отдельности.2223#### `msvcrt.LK_LOCK`2425#### `msvcrt.LK_RLCK`2627Блокирует указанные байты. Если байты не удаётся заблокировать, программа немедленно повторяет попытку через 1 секунду. Если после 10 попыток байты не удаётся заблокировать, возбуждается [`IOError`](https://python-all.ru/3.2/library/exceptions.html#IOError).2829#### `msvcrt.LK_NBLCK`3031#### `msvcrt.LK_NBRLCK`3233Блокирует указанные байты. Если байты не удаётся заблокировать, возбуждается [`IOError`](https://python-all.ru/3.2/library/exceptions.html#IOError).3435#### `msvcrt.LK_UNLCK`3637Разблокирует указанные байты, которые должны быть предварительно заблокированы.3839#### `msvcrt.setmode(fd, flags)`4041Устанавливает режим перевода концов строк для файлового дескриптора *fd*. Для текстового режима *flags* должен быть равен [`os.O_TEXT`](https://python-all.ru/3.2/library/os.html#os.O_TEXT); для двоичного – [`os.O_BINARY`](https://python-all.ru/3.2/library/os.html#os.O_BINARY).4243#### `msvcrt.open_osfhandle(handle, flags)`4445Создаёт файловый дескриптор среды выполнения C из дескриптора файла *handle*. Параметр *flags* должен быть побитовым ИЛИ от [`os.O_APPEND`](https://python-all.ru/3.2/library/os.html#os.O_APPEND), [`os.O_RDONLY`](https://python-all.ru/3.2/library/os.html#os.O_RDONLY) и [`os.O_TEXT`](https://python-all.ru/3.2/library/os.html#os.O_TEXT). Возвращённый файловый дескриптор можно использовать в качестве параметра [`os.fdopen()`](https://python-all.ru/3.2/library/os.html#os.fdopen) для создания файлового объекта.4647#### `msvcrt.get_osfhandle(fd)`4849Возвращает файловый дескриптор (handle) для файлового дескриптора *fd*. Возбуждает [`IOError`](https://python-all.ru/3.2/library/exceptions.html#IOError), если *fd* не распознан.5051## 32.2.2. Консольный ввод/вывод5253#### `msvcrt.kbhit()`5455Возвращает true, если нажатие клавиши ожидает чтения.5657#### `msvcrt.getch()`5859Считывает нажатие клавиши и возвращает полученный символ в виде байтовой строки. Ничего не выводится на консоль. Этот вызов блокируется, если нажатие клавиши ещё не доступно, но не ждёт нажатия `Enter`. Если нажатая клавиша является специальной функциональной клавишей, функция возвращает `'\000'` или `'\xe0'`; следующий вызов вернёт код клавиши. Нажатие `Control-C` не может быть считано этой функцией.6061#### `msvcrt.getwch()`6263Широкосимвольный вариант [`getch()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.getch), возвращающий значение Unicode.6465#### `msvcrt.getche()`6667Аналогична [`getch()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.getch), но нажатие клавиши будет выведено на экран, если оно представляет печатный символ.6869#### `msvcrt.getwche()`7071Широкосимвольный вариант [`getche()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.getche), возвращающий значение Unicode.7273#### `msvcrt.putch(char)`7475Выводит байтовую строку *char* на консоль без буферизации.7677#### `msvcrt.putwch(unicode_char)`7879Широкосимвольный вариант [`putch()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.putch), принимающий значение Unicode.8081#### `msvcrt.ungetch(char)`8283Возвращает байтовую строку *char* в буфер консоли; она будет следующим символом, читаемым [`getch()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.getch) или [`getche()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.getche).8485#### `msvcrt.ungetwch(unicode_char)`8687Широкосимвольный вариант [`ungetch()`](https://python-all.ru/3.2/library/msvcrt.html#msvcrt.ungetch), принимающий значение Unicode.8889## 32.2.3. Прочие функции9091#### `msvcrt.heapmin()`9293Принуждает кучу `malloc()` очиститься и вернуть неиспользуемые блоки операционной системе. В случае неудачи возбуждает [`IOError`](https://python-all.ru/3.2/library/exceptions.html#IOError).94