This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

# `msvcrt` — Useful routines from the MS VC++ runtime

These functions provide access to some useful capabilities on Windows platforms. Some higher-level modules use these functions to build the Windows implementations of their services. For example, the `getpass` module uses this in the implementation of the `getpass()` function.

Додаткову документацію щодо цих функцій можна знайти в документації API платформи.

Модуль реалізує як звичайний, так і широкий варіанти char API консолі вводу-виводу. Звичайний API працює лише з символами ASCII і обмежено використовується для інтернаціоналізованих програм. Широкий char API слід використовувати, де це можливо.

Змінено в версії 3.3: Операції в цьому модулі тепер викликають `OSError` там, де було викликано `IOError`.

## Операції з файлами

`msvcrt.``locking`(fd, mode, nbytes)

  Lock part of a file based on file descriptor fd from the C runtime. Raises `OSError` on failure. The locked region of the file extends from the current file position for nbytes bytes, and may continue beyond the end of the file. mode must be one of the `LK_*` constants listed below. Multiple regions in a file may be locked at the same time, but may not overlap. Adjacent regions are not merged; they must be unlocked individually.

  Викликає подію аудиту `msvcrt.locking` з аргументами `fd`, `mode`, `nbytes`.

`msvcrt.``LK_LOCK`
`msvcrt.``LK_RLCK`

  Locks the specified bytes. If the bytes cannot be locked, the program immediately tries again after 1 second. If, after 10 attempts, the bytes cannot be locked, `OSError` is raised.

`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)

  Create a C runtime file descriptor from the file handle handle. The flags parameter should be a bitwise OR of `os.O_APPEND`, `os.O_RDONLY`, and `os.O_TEXT`. The returned file descriptor may be used as a parameter to `os.fdopen()` to create a file object.

  Викликає подію аудиту `msvcrt.open_osfhandle` з аргументами `handle`, `flags`.

`msvcrt.``get_osfhandle`(fd)

  Return the file handle for the file descriptor fd. Raises `OSError` if fd is not recognized.

  Викликає подію аудиту `msvcrt.get_osfhandle` з аргументом `fd`.

## Консоль введення/виведення

`msvcrt.``kbhit`()

  Return `True` if a keypress is waiting to be read.

`msvcrt.``getch`()

  Read a keypress and return the resulting character as a byte string. Nothing is echoed to the console. This call will block if a keypress is not already available, but will not wait for `Enter` to be pressed. If the pressed key was a special function key, this will return `'\000'` or `'\xe0'`; the next call will return the keycode. The `Control-C` keypress cannot be read with this function.

`msvcrt.``getwch`()

  Широкосимвольний варіант `getch()`, що повертає значення Unicode.

`msvcrt.``getche`()

  Similar to `getch()`, but the keypress will be echoed if it represents a printable character.

`msvcrt.``getwche`()

  Широкосимвольний варіант `getche()`, що повертає значення Unicode.

`msvcrt.``putch`(char)

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

`msvcrt.``putwch`(unicode_char)

  Широкосимвольний варіант `putch()`, що приймає значення Unicode.

`msvcrt.``ungetch`(char)

  Змусити рядок байтів char «відштовхнути назад» у буфер консолі; це буде наступний символ, який читатиме `getch()` або `getche()`.

`msvcrt.``ungetwch`(unicode_char)

  Широкосимвольний варіант `ungetch()`, який приймає значення Unicode.

## Інші функції

`msvcrt.``heapmin`()

  Force the `malloc()` heap to clean itself up and return unused blocks to the operating system. On failure, this raises `OSError`.