Home | History | Annotate | Download | only in library
      1 :mod:`msvcrt` --- Useful routines from the MS VC++ runtime
      2 ==========================================================
      3 
      4 .. module:: msvcrt
      5    :platform: Windows
      6    :synopsis: Miscellaneous useful routines from the MS VC++ runtime.
      7 
      8 .. sectionauthor:: Fred L. Drake, Jr. <fdrake (a] acm.org>
      9 
     10 --------------
     11 
     12 These functions provide access to some useful capabilities on Windows platforms.
     13 Some higher-level modules use these functions to build the  Windows
     14 implementations of their services.  For example, the :mod:`getpass` module uses
     15 this in the implementation of the :func:`getpass` function.
     16 
     17 Further documentation on these functions can be found in the Platform API
     18 documentation.
     19 
     20 The module implements both the normal and wide char variants of the console I/O
     21 api. The normal API deals only with ASCII characters and is of limited use
     22 for internationalized applications. The wide char API should be used where
     23 ever possible.
     24 
     25 .. versionchanged:: 3.3
     26    Operations in this module now raise :exc:`OSError` where :exc:`IOError`
     27    was raised.
     28 
     29 
     30 .. _msvcrt-files:
     31 
     32 File Operations
     33 ---------------
     34 
     35 
     36 .. function:: locking(fd, mode, nbytes)
     37 
     38    Lock part of a file based on file descriptor *fd* from the C runtime.  Raises
     39    :exc:`OSError` on failure.  The locked region of the file extends from the
     40    current file position for *nbytes* bytes, and may continue beyond the end of the
     41    file.  *mode* must be one of the :const:`LK_\*` constants listed below. Multiple
     42    regions in a file may be locked at the same time, but may not overlap.  Adjacent
     43    regions are not merged; they must be unlocked individually.
     44 
     45 
     46 .. data:: LK_LOCK
     47           LK_RLCK
     48 
     49    Locks the specified bytes. If the bytes cannot be locked, the program
     50    immediately tries again after 1 second.  If, after 10 attempts, the bytes cannot
     51    be locked, :exc:`OSError` is raised.
     52 
     53 
     54 .. data:: LK_NBLCK
     55           LK_NBRLCK
     56 
     57    Locks the specified bytes. If the bytes cannot be locked, :exc:`OSError` is
     58    raised.
     59 
     60 
     61 .. data:: LK_UNLCK
     62 
     63    Unlocks the specified bytes, which must have been previously locked.
     64 
     65 
     66 .. function:: setmode(fd, flags)
     67 
     68    Set the line-end translation mode for the file descriptor *fd*. To set it to
     69    text mode, *flags* should be :const:`os.O_TEXT`; for binary, it should be
     70    :const:`os.O_BINARY`.
     71 
     72 
     73 .. function:: open_osfhandle(handle, flags)
     74 
     75    Create a C runtime file descriptor from the file handle *handle*.  The *flags*
     76    parameter should be a bitwise OR of :const:`os.O_APPEND`, :const:`os.O_RDONLY`,
     77    and :const:`os.O_TEXT`.  The returned file descriptor may be used as a parameter
     78    to :func:`os.fdopen` to create a file object.
     79 
     80 
     81 .. function:: get_osfhandle(fd)
     82 
     83    Return the file handle for the file descriptor *fd*.  Raises :exc:`OSError` if
     84    *fd* is not recognized.
     85 
     86 
     87 .. _msvcrt-console:
     88 
     89 Console I/O
     90 -----------
     91 
     92 
     93 .. function:: kbhit()
     94 
     95    Return true if a keypress is waiting to be read.
     96 
     97 
     98 .. function:: getch()
     99 
    100    Read a keypress and return the resulting character as a byte string.
    101    Nothing is echoed to the console.  This call will block if a keypress
    102    is not already available, but will not wait for :kbd:`Enter` to be
    103    pressed. If the pressed key was a special function key, this will
    104    return ``'\000'`` or ``'\xe0'``; the next call will return the keycode.
    105    The :kbd:`Control-C` keypress cannot be read with this function.
    106 
    107 
    108 .. function:: getwch()
    109 
    110    Wide char variant of :func:`getch`, returning a Unicode value.
    111 
    112 
    113 .. function:: getche()
    114 
    115    Similar to :func:`getch`, but the keypress will be echoed if it  represents a
    116    printable character.
    117 
    118 
    119 .. function:: getwche()
    120 
    121    Wide char variant of :func:`getche`, returning a Unicode value.
    122 
    123 
    124 .. function:: putch(char)
    125 
    126    Print the byte string *char* to the console without buffering.
    127 
    128 
    129 .. function:: putwch(unicode_char)
    130 
    131    Wide char variant of :func:`putch`, accepting a Unicode value.
    132 
    133 
    134 .. function:: ungetch(char)
    135 
    136    Cause the byte string *char* to be "pushed back" into the console buffer;
    137    it will be the next character read by :func:`getch` or :func:`getche`.
    138 
    139 
    140 .. function:: ungetwch(unicode_char)
    141 
    142    Wide char variant of :func:`ungetch`, accepting a Unicode value.
    143 
    144 
    145 .. _msvcrt-other:
    146 
    147 Other Functions
    148 ---------------
    149 
    150 
    151 .. function:: heapmin()
    152 
    153    Force the :c:func:`malloc` heap to clean itself up and return unused blocks to
    154    the operating system.  On failure, this raises :exc:`OSError`.
    155