17db96d56Sopenharmony_ci:mod:`msvcrt` --- Useful routines from the MS VC++ runtime 27db96d56Sopenharmony_ci========================================================== 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: msvcrt 57db96d56Sopenharmony_ci :platform: Windows 67db96d56Sopenharmony_ci :synopsis: Miscellaneous useful routines from the MS VC++ runtime. 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org> 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci-------------- 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ciThese functions provide access to some useful capabilities on Windows platforms. 137db96d56Sopenharmony_ciSome higher-level modules use these functions to build the Windows 147db96d56Sopenharmony_ciimplementations of their services. For example, the :mod:`getpass` module uses 157db96d56Sopenharmony_cithis in the implementation of the :func:`getpass` function. 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ciFurther documentation on these functions can be found in the Platform API 187db96d56Sopenharmony_cidocumentation. 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ciThe module implements both the normal and wide char variants of the console I/O 217db96d56Sopenharmony_ciapi. The normal API deals only with ASCII characters and is of limited use 227db96d56Sopenharmony_cifor internationalized applications. The wide char API should be used where 237db96d56Sopenharmony_ciever possible. 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci.. versionchanged:: 3.3 267db96d56Sopenharmony_ci Operations in this module now raise :exc:`OSError` where :exc:`IOError` 277db96d56Sopenharmony_ci was raised. 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_ci.. _msvcrt-files: 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ciFile Operations 337db96d56Sopenharmony_ci--------------- 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci.. function:: locking(fd, mode, nbytes) 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci Lock part of a file based on file descriptor *fd* from the C runtime. Raises 397db96d56Sopenharmony_ci :exc:`OSError` on failure. The locked region of the file extends from the 407db96d56Sopenharmony_ci current file position for *nbytes* bytes, and may continue beyond the end of the 417db96d56Sopenharmony_ci file. *mode* must be one of the :const:`LK_\*` constants listed below. Multiple 427db96d56Sopenharmony_ci regions in a file may be locked at the same time, but may not overlap. Adjacent 437db96d56Sopenharmony_ci regions are not merged; they must be unlocked individually. 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci .. audit-event:: msvcrt.locking fd,mode,nbytes msvcrt.locking 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci.. data:: LK_LOCK 497db96d56Sopenharmony_ci LK_RLCK 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci Locks the specified bytes. If the bytes cannot be locked, the program 527db96d56Sopenharmony_ci immediately tries again after 1 second. If, after 10 attempts, the bytes cannot 537db96d56Sopenharmony_ci be locked, :exc:`OSError` is raised. 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci.. data:: LK_NBLCK 577db96d56Sopenharmony_ci LK_NBRLCK 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci Locks the specified bytes. If the bytes cannot be locked, :exc:`OSError` is 607db96d56Sopenharmony_ci raised. 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci.. data:: LK_UNLCK 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci Unlocks the specified bytes, which must have been previously locked. 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci.. function:: setmode(fd, flags) 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ci Set the line-end translation mode for the file descriptor *fd*. To set it to 717db96d56Sopenharmony_ci text mode, *flags* should be :const:`os.O_TEXT`; for binary, it should be 727db96d56Sopenharmony_ci :const:`os.O_BINARY`. 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci.. function:: open_osfhandle(handle, flags) 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci Create a C runtime file descriptor from the file handle *handle*. The *flags* 787db96d56Sopenharmony_ci parameter should be a bitwise OR of :const:`os.O_APPEND`, :const:`os.O_RDONLY`, 797db96d56Sopenharmony_ci and :const:`os.O_TEXT`. The returned file descriptor may be used as a parameter 807db96d56Sopenharmony_ci to :func:`os.fdopen` to create a file object. 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci .. audit-event:: msvcrt.open_osfhandle handle,flags msvcrt.open_osfhandle 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci.. function:: get_osfhandle(fd) 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci Return the file handle for the file descriptor *fd*. Raises :exc:`OSError` if 887db96d56Sopenharmony_ci *fd* is not recognized. 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci .. audit-event:: msvcrt.get_osfhandle fd msvcrt.get_osfhandle 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci.. _msvcrt-console: 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ciConsole I/O 967db96d56Sopenharmony_ci----------- 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci.. function:: kbhit() 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_ci Return ``True`` if a keypress is waiting to be read. 1027db96d56Sopenharmony_ci 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci.. function:: getch() 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci Read a keypress and return the resulting character as a byte string. 1077db96d56Sopenharmony_ci Nothing is echoed to the console. This call will block if a keypress 1087db96d56Sopenharmony_ci is not already available, but will not wait for :kbd:`Enter` to be 1097db96d56Sopenharmony_ci pressed. If the pressed key was a special function key, this will 1107db96d56Sopenharmony_ci return ``'\000'`` or ``'\xe0'``; the next call will return the keycode. 1117db96d56Sopenharmony_ci The :kbd:`Control-C` keypress cannot be read with this function. 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci.. function:: getwch() 1157db96d56Sopenharmony_ci 1167db96d56Sopenharmony_ci Wide char variant of :func:`getch`, returning a Unicode value. 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci.. function:: getche() 1207db96d56Sopenharmony_ci 1217db96d56Sopenharmony_ci Similar to :func:`getch`, but the keypress will be echoed if it represents a 1227db96d56Sopenharmony_ci printable character. 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ci.. function:: getwche() 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ci Wide char variant of :func:`getche`, returning a Unicode value. 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ci.. function:: putch(char) 1317db96d56Sopenharmony_ci 1327db96d56Sopenharmony_ci Print the byte string *char* to the console without buffering. 1337db96d56Sopenharmony_ci 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci.. function:: putwch(unicode_char) 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ci Wide char variant of :func:`putch`, accepting a Unicode value. 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci.. function:: ungetch(char) 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci Cause the byte string *char* to be "pushed back" into the console buffer; 1437db96d56Sopenharmony_ci it will be the next character read by :func:`getch` or :func:`getche`. 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci 1467db96d56Sopenharmony_ci.. function:: ungetwch(unicode_char) 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ci Wide char variant of :func:`ungetch`, accepting a Unicode value. 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci.. _msvcrt-other: 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ciOther Functions 1547db96d56Sopenharmony_ci--------------- 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_ci.. function:: heapmin() 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ci Force the :c:func:`malloc` heap to clean itself up and return unused blocks to 1607db96d56Sopenharmony_ci the operating system. On failure, this raises :exc:`OSError`. 161