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