Home | History | Annotate | Download | only in library
      1 :mod:`os` --- Miscellaneous operating system interfaces
      2 =======================================================
      3 
      4 .. module:: os
      5    :synopsis: Miscellaneous operating system interfaces.
      6 
      7 
      8 This module provides a portable way of using operating system dependent
      9 functionality.  If you just want to read or write a file see :func:`open`, if
     10 you want to manipulate paths, see the :mod:`os.path` module, and if you want to
     11 read all the lines in all the files on the command line see the :mod:`fileinput`
     12 module.  For creating temporary files and directories see the :mod:`tempfile`
     13 module, and for high-level file and directory handling see the :mod:`shutil`
     14 module.
     15 
     16 Notes on the availability of these functions:
     17 
     18 * The design of all built-in operating system dependent modules of Python is
     19   such that as long as the same functionality is available, it uses the same
     20   interface; for example, the function ``os.stat(path)`` returns stat
     21   information about *path* in the same format (which happens to have originated
     22   with the POSIX interface).
     23 
     24 * Extensions peculiar to a particular operating system are also available
     25   through the :mod:`os` module, but using them is of course a threat to
     26   portability.
     27 
     28 * An "Availability: Unix" note means that this function is commonly found on
     29   Unix systems.  It does not make any claims about its existence on a specific
     30   operating system.
     31 
     32 * If not separately noted, all functions that claim "Availability: Unix" are
     33   supported on Mac OS X, which builds on a Unix core.
     34 
     35 .. Availability notes get their own line and occur at the end of the function
     36 .. documentation.
     37 
     38 .. note::
     39 
     40    All functions in this module raise :exc:`OSError` in the case of invalid or
     41    inaccessible file names and paths, or other arguments that have the correct
     42    type, but are not accepted by the operating system.
     43 
     44 
     45 .. exception:: error
     46 
     47    An alias for the built-in :exc:`OSError` exception.
     48 
     49 
     50 .. data:: name
     51 
     52    The name of the operating system dependent module imported.  The following
     53    names have currently been registered: ``'posix'``, ``'nt'``,
     54    ``'os2'``, ``'ce'``, ``'java'``, ``'riscos'``.
     55 
     56    .. seealso::
     57       :attr:`sys.platform` has a finer granularity.  :func:`os.uname` gives
     58       system-dependent version information.
     59 
     60       The :mod:`platform` module provides detailed checks for the
     61       system's identity.
     62 
     63 
     64 .. _os-procinfo:
     65 
     66 Process Parameters
     67 ------------------
     68 
     69 These functions and data items provide information and operate on the current
     70 process and user.
     71 
     72 
     73 .. data:: environ
     74 
     75    A :term:`mapping` object representing the string environment. For example,
     76    ``environ['HOME']`` is the pathname of your home directory (on some platforms),
     77    and is equivalent to ``getenv("HOME")`` in C.
     78 
     79    This mapping is captured the first time the :mod:`os` module is imported,
     80    typically during Python startup as part of processing :file:`site.py`.  Changes
     81    to the environment made after this time are not reflected in ``os.environ``,
     82    except for changes made by modifying ``os.environ`` directly.
     83 
     84    If the platform supports the :func:`putenv` function, this mapping may be used
     85    to modify the environment as well as query the environment.  :func:`putenv` will
     86    be called automatically when the mapping is modified.
     87 
     88    .. note::
     89 
     90       Calling :func:`putenv` directly does not change ``os.environ``, so it's better
     91       to modify ``os.environ``.
     92 
     93    .. note::
     94 
     95       On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
     96       cause memory leaks.  Refer to the system documentation for
     97       :c:func:`putenv`.
     98 
     99    If :func:`putenv` is not provided, a modified copy of this mapping  may be
    100    passed to the appropriate process-creation functions to cause  child processes
    101    to use a modified environment.
    102 
    103    If the platform supports the :func:`unsetenv` function, you can delete items in
    104    this mapping to unset environment variables. :func:`unsetenv` will be called
    105    automatically when an item is deleted from ``os.environ``, and when
    106    one of the :meth:`pop` or :meth:`clear` methods is called.
    107 
    108    .. versionchanged:: 2.6
    109       Also unset environment variables when calling :meth:`os.environ.clear`
    110       and :meth:`os.environ.pop`.
    111 
    112 
    113 .. function:: chdir(path)
    114               fchdir(fd)
    115               getcwd()
    116    :noindex:
    117 
    118    These functions are described in :ref:`os-file-dir`.
    119 
    120 
    121 .. function:: ctermid()
    122 
    123    Return the filename corresponding to the controlling terminal of the process.
    124 
    125    Availability: Unix.
    126 
    127 
    128 .. function:: getegid()
    129 
    130    Return the effective group id of the current process.  This corresponds to the
    131    "set id" bit on the file being executed in the current process.
    132 
    133    Availability: Unix.
    134 
    135 
    136 .. function:: geteuid()
    137 
    138    .. index:: single: user; effective id
    139 
    140    Return the current process's effective user id.
    141 
    142    Availability: Unix.
    143 
    144 
    145 .. function:: getgid()
    146 
    147    .. index:: single: process; group
    148 
    149    Return the real group id of the current process.
    150 
    151    Availability: Unix.
    152 
    153 
    154 .. function:: getgroups()
    155 
    156    Return list of supplemental group ids associated with the current process.
    157 
    158    Availability: Unix.
    159 
    160    .. note::
    161 
    162       On Mac OS X, :func:`getgroups` behavior differs somewhat from
    163       other Unix platforms. If the Python interpreter was built with a
    164       deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
    165       the list of effective group ids associated with the current user process;
    166       this list is limited to a system-defined number of entries, typically 16,
    167       and may be modified by calls to :func:`setgroups` if suitably privileged.
    168       If built with a deployment target greater than :const:`10.5`,
    169       :func:`getgroups` returns the current group access list for the user
    170       associated with the effective user id of the process; the group access
    171       list may change over the lifetime of the process, it is not affected by
    172       calls to :func:`setgroups`, and its length is not limited to 16.  The
    173       deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
    174       obtained with :func:`sysconfig.get_config_var`.
    175 
    176 
    177 .. function:: initgroups(username, gid)
    178 
    179    Call the system initgroups() to initialize the group access list with all of
    180    the groups of which the specified username is a member, plus the specified
    181    group id.
    182 
    183    Availability: Unix.
    184 
    185    .. versionadded:: 2.7
    186 
    187 
    188 .. function:: getlogin()
    189 
    190    Return the name of the user logged in on the controlling terminal of the
    191    process.  For most purposes, it is more useful to use the environment
    192    variable :envvar:`LOGNAME` to find out who the user is, or
    193    ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the process's real
    194    user id.
    195 
    196    Availability: Unix.
    197 
    198 
    199 .. function:: getpgid(pid)
    200 
    201    Return the process group id of the process with process id *pid*. If *pid* is 0,
    202    the process group id of the current process is returned.
    203 
    204    Availability: Unix.
    205 
    206    .. versionadded:: 2.3
    207 
    208 
    209 .. function:: getpgrp()
    210 
    211    .. index:: single: process; group
    212 
    213    Return the id of the current process group.
    214 
    215    Availability: Unix.
    216 
    217 
    218 .. function:: getpid()
    219 
    220    .. index:: single: process; id
    221 
    222    Return the current process id.
    223 
    224    Availability: Unix, Windows.
    225 
    226 
    227 .. function:: getppid()
    228 
    229    .. index:: single: process; id of parent
    230 
    231    Return the parent's process id.
    232 
    233    Availability: Unix.
    234 
    235 
    236 .. function:: getresuid()
    237 
    238    Return a tuple (ruid, euid, suid) denoting the current process's
    239    real, effective, and saved user ids.
    240 
    241    Availability: Unix.
    242 
    243    .. versionadded:: 2.7
    244 
    245 
    246 .. function:: getresgid()
    247 
    248    Return a tuple (rgid, egid, sgid) denoting the current process's
    249    real, effective, and saved group ids.
    250 
    251    Availability: Unix.
    252 
    253    .. versionadded:: 2.7
    254 
    255 
    256 .. function:: getuid()
    257 
    258    .. index:: single: user; id
    259 
    260    Return the current process's real user id.
    261 
    262    Availability: Unix.
    263 
    264 
    265 .. function:: getenv(varname[, value])
    266 
    267    Return the value of the environment variable *varname* if it exists, or *value*
    268    if it doesn't.  *value* defaults to ``None``.
    269 
    270    Availability: most flavors of Unix, Windows.
    271 
    272 
    273 .. function:: putenv(varname, value)
    274 
    275    .. index:: single: environment variables; setting
    276 
    277    Set the environment variable named *varname* to the string *value*.  Such
    278    changes to the environment affect subprocesses started with :func:`os.system`,
    279    :func:`popen` or :func:`fork` and :func:`execv`.
    280 
    281    Availability: most flavors of Unix, Windows.
    282 
    283    .. note::
    284 
    285       On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
    286       cause memory leaks. Refer to the system documentation for putenv.
    287 
    288    When :func:`putenv` is supported, assignments to items in ``os.environ`` are
    289    automatically translated into corresponding calls to :func:`putenv`; however,
    290    calls to :func:`putenv` don't update ``os.environ``, so it is actually
    291    preferable to assign to items of ``os.environ``.
    292 
    293 
    294 .. function:: setegid(egid)
    295 
    296    Set the current process's effective group id.
    297 
    298    Availability: Unix.
    299 
    300 
    301 .. function:: seteuid(euid)
    302 
    303    Set the current process's effective user id.
    304 
    305    Availability: Unix.
    306 
    307 
    308 .. function:: setgid(gid)
    309 
    310    Set the current process' group id.
    311 
    312    Availability: Unix.
    313 
    314 
    315 .. function:: setgroups(groups)
    316 
    317    Set the list of supplemental group ids associated with the current process to
    318    *groups*. *groups* must be a sequence, and each element must be an integer
    319    identifying a group. This operation is typically available only to the superuser.
    320 
    321    Availability: Unix.
    322 
    323    .. versionadded:: 2.2
    324 
    325    .. note:: On Mac OS X, the length of *groups* may not exceed the
    326       system-defined maximum number of effective group ids, typically 16.
    327       See the documentation for :func:`getgroups` for cases where it may not
    328       return the same group list set by calling setgroups().
    329 
    330 .. function:: setpgrp()
    331 
    332    Call the system call :c:func:`setpgrp` or :c:func:`setpgrp(0, 0)` depending on
    333    which version is implemented (if any).  See the Unix manual for the semantics.
    334 
    335    Availability: Unix.
    336 
    337 
    338 .. function:: setpgid(pid, pgrp)
    339 
    340    Call the system call :c:func:`setpgid` to set the process group id of the
    341    process with id *pid* to the process group with id *pgrp*.  See the Unix manual
    342    for the semantics.
    343 
    344    Availability: Unix.
    345 
    346 
    347 .. function:: setregid(rgid, egid)
    348 
    349    Set the current process's real and effective group ids.
    350 
    351    Availability: Unix.
    352 
    353 
    354 .. function:: setresgid(rgid, egid, sgid)
    355 
    356    Set the current process's real, effective, and saved group ids.
    357 
    358    Availability: Unix.
    359 
    360    .. versionadded:: 2.7
    361 
    362 
    363 .. function:: setresuid(ruid, euid, suid)
    364 
    365    Set the current process's real, effective, and saved user ids.
    366 
    367    Availability: Unix.
    368 
    369    .. versionadded:: 2.7
    370 
    371 
    372 .. function:: setreuid(ruid, euid)
    373 
    374    Set the current process's real and effective user ids.
    375 
    376    Availability: Unix.
    377 
    378 
    379 .. function:: getsid(pid)
    380 
    381    Call the system call :c:func:`getsid`.  See the Unix manual for the semantics.
    382 
    383    Availability: Unix.
    384 
    385    .. versionadded:: 2.4
    386 
    387 
    388 .. function:: setsid()
    389 
    390    Call the system call :c:func:`setsid`.  See the Unix manual for the semantics.
    391 
    392    Availability: Unix.
    393 
    394 
    395 .. function:: setuid(uid)
    396 
    397    .. index:: single: user; id, setting
    398 
    399    Set the current process's user id.
    400 
    401    Availability: Unix.
    402 
    403 
    404 .. placed in this section since it relates to errno.... a little weak
    405 .. function:: strerror(code)
    406 
    407    Return the error message corresponding to the error code in *code*.
    408    On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
    409    error number, :exc:`ValueError` is raised.
    410 
    411    Availability: Unix, Windows.
    412 
    413 
    414 .. function:: umask(mask)
    415 
    416    Set the current numeric umask and return the previous umask.
    417 
    418    Availability: Unix, Windows.
    419 
    420 
    421 .. function:: uname()
    422 
    423    .. index::
    424       single: gethostname() (in module socket)
    425       single: gethostbyaddr() (in module socket)
    426 
    427    Return a 5-tuple containing information identifying the current operating
    428    system.  The tuple contains 5 strings: ``(sysname, nodename, release, version,
    429    machine)``.  Some systems truncate the nodename to 8 characters or to the
    430    leading component; a better way to get the hostname is
    431    :func:`socket.gethostname`  or even
    432    ``socket.gethostbyaddr(socket.gethostname())``.
    433 
    434    Availability: recent flavors of Unix.
    435 
    436 
    437 .. function:: unsetenv(varname)
    438 
    439    .. index:: single: environment variables; deleting
    440 
    441    Unset (delete) the environment variable named *varname*. Such changes to the
    442    environment affect subprocesses started with :func:`os.system`, :func:`popen` or
    443    :func:`fork` and :func:`execv`.
    444 
    445    When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
    446    automatically translated into a corresponding call to :func:`unsetenv`; however,
    447    calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
    448    preferable to delete items of ``os.environ``.
    449 
    450    Availability: most flavors of Unix, Windows.
    451 
    452 
    453 .. _os-newstreams:
    454 
    455 File Object Creation
    456 --------------------
    457 
    458 These functions create new file objects. (See also :func:`open`.)
    459 
    460 
    461 .. function:: fdopen(fd[, mode[, bufsize]])
    462 
    463    .. index:: single: I/O control; buffering
    464 
    465    Return an open file object connected to the file descriptor *fd*.  The *mode*
    466    and *bufsize* arguments have the same meaning as the corresponding arguments
    467    to the built-in :func:`open` function.  If :func:`fdopen` raises an
    468    exception, it leaves *fd* untouched (unclosed).
    469 
    470    Availability: Unix, Windows.
    471 
    472    .. versionchanged:: 2.3
    473       When specified, the *mode* argument must now start with one of the letters
    474       ``'r'``, ``'w'``, or ``'a'``, otherwise a :exc:`ValueError` is raised.
    475 
    476    .. versionchanged:: 2.5
    477       On Unix, when the *mode* argument starts with ``'a'``, the *O_APPEND* flag is
    478       set on the file descriptor (which the :c:func:`fdopen` implementation already
    479       does on most platforms).
    480 
    481 
    482 .. function:: popen(command[, mode[, bufsize]])
    483 
    484    Open a pipe to or from *command*.  The return value is an open file object
    485    connected to the pipe, which can be read or written depending on whether *mode*
    486    is ``'r'`` (default) or ``'w'``. The *bufsize* argument has the same meaning as
    487    the corresponding argument to the built-in :func:`open` function.  The exit
    488    status of the command (encoded in the format specified for :func:`wait`) is
    489    available as the return value of the :meth:`~file.close` method of the file object,
    490    except that when the exit status is zero (termination without errors), ``None``
    491    is returned.
    492 
    493    Availability: Unix, Windows.
    494 
    495    .. deprecated:: 2.6
    496       This function is obsolete.  Use the :mod:`subprocess` module.  Check
    497       especially the :ref:`subprocess-replacements` section.
    498 
    499    .. versionchanged:: 2.0
    500       This function worked unreliably under Windows in earlier versions of Python.
    501       This was due to the use of the :c:func:`_popen` function from the libraries
    502       provided with Windows.  Newer versions of Python do not use the broken
    503       implementation from the Windows libraries.
    504 
    505 
    506 .. function:: tmpfile()
    507 
    508    Return a new file object opened in update mode (``w+b``).  The file has no
    509    directory entries associated with it and will be automatically deleted once
    510    there are no file descriptors for the file.
    511 
    512    Availability: Unix, Windows.
    513 
    514 There are a number of different :func:`popen\*` functions that provide slightly
    515 different ways to create subprocesses.
    516 
    517 .. deprecated:: 2.6
    518    All of the :func:`popen\*` functions are obsolete. Use the :mod:`subprocess`
    519    module.
    520 
    521 For each of the :func:`popen\*` variants, if *bufsize* is specified, it
    522 specifies the buffer size for the I/O pipes. *mode*, if provided, should be the
    523 string ``'b'`` or ``'t'``; on Windows this is needed to determine whether the
    524 file objects should be opened in binary or text mode.  The default value for
    525 *mode* is ``'t'``.
    526 
    527 Also, for each of these variants, on Unix, *cmd* may be a sequence, in which
    528 case arguments will be passed directly to the program without shell intervention
    529 (as with :func:`os.spawnv`). If *cmd* is a string it will be passed to the shell
    530 (as with :func:`os.system`).
    531 
    532 These methods do not make it possible to retrieve the exit status from the child
    533 processes.  The only way to control the input and output streams and also
    534 retrieve the return codes is to use the :mod:`subprocess` module; these are only
    535 available on Unix.
    536 
    537 For a discussion of possible deadlock conditions related to the use of these
    538 functions, see :ref:`popen2-flow-control`.
    539 
    540 
    541 .. function:: popen2(cmd[, mode[, bufsize]])
    542 
    543    Execute *cmd* as a sub-process and return the file objects ``(child_stdin,
    544    child_stdout)``.
    545 
    546    .. deprecated:: 2.6
    547       This function is obsolete.  Use the :mod:`subprocess` module.  Check
    548       especially the :ref:`subprocess-replacements` section.
    549 
    550    Availability: Unix, Windows.
    551 
    552    .. versionadded:: 2.0
    553 
    554 
    555 .. function:: popen3(cmd[, mode[, bufsize]])
    556 
    557    Execute *cmd* as a sub-process and return the file objects ``(child_stdin,
    558    child_stdout, child_stderr)``.
    559 
    560    .. deprecated:: 2.6
    561       This function is obsolete.  Use the :mod:`subprocess` module.  Check
    562       especially the :ref:`subprocess-replacements` section.
    563 
    564    Availability: Unix, Windows.
    565 
    566    .. versionadded:: 2.0
    567 
    568 
    569 .. function:: popen4(cmd[, mode[, bufsize]])
    570 
    571    Execute *cmd* as a sub-process and return the file objects ``(child_stdin,
    572    child_stdout_and_stderr)``.
    573 
    574    .. deprecated:: 2.6
    575       This function is obsolete.  Use the :mod:`subprocess` module.  Check
    576       especially the :ref:`subprocess-replacements` section.
    577 
    578    Availability: Unix, Windows.
    579 
    580    .. versionadded:: 2.0
    581 
    582 (Note that ``child_stdin, child_stdout, and child_stderr`` are named from the
    583 point of view of the child process, so *child_stdin* is the child's standard
    584 input.)
    585 
    586 This functionality is also available in the :mod:`popen2` module using functions
    587 of the same names, but the return values of those functions have a different
    588 order.
    589 
    590 
    591 .. _os-fd-ops:
    592 
    593 File Descriptor Operations
    594 --------------------------
    595 
    596 These functions operate on I/O streams referenced using file descriptors.
    597 
    598 File descriptors are small integers corresponding to a file that has been opened
    599 by the current process.  For example, standard input is usually file descriptor
    600 0, standard output is 1, and standard error is 2.  Further files opened by a
    601 process will then be assigned 3, 4, 5, and so forth.  The name "file descriptor"
    602 is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
    603 by file descriptors.
    604 
    605 The :meth:`~file.fileno` method can be used to obtain the file descriptor
    606 associated with a file object when required.  Note that using the file
    607 descriptor directly will bypass the file object methods, ignoring aspects such
    608 as internal buffering of data.
    609 
    610 .. function:: close(fd)
    611 
    612    Close file descriptor *fd*.
    613 
    614    Availability: Unix, Windows.
    615 
    616    .. note::
    617 
    618       This function is intended for low-level I/O and must be applied to a file
    619       descriptor as returned by :func:`os.open` or :func:`pipe`.  To close a "file
    620       object" returned by the built-in function :func:`open` or by :func:`popen` or
    621       :func:`fdopen`, use its :meth:`~io.IOBase.close` method.
    622 
    623 
    624 .. function:: closerange(fd_low, fd_high)
    625 
    626    Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
    627    ignoring errors. Equivalent to::
    628 
    629       for fd in xrange(fd_low, fd_high):
    630           try:
    631               os.close(fd)
    632           except OSError:
    633               pass
    634 
    635    Availability: Unix, Windows.
    636 
    637    .. versionadded:: 2.6
    638 
    639 
    640 .. function:: dup(fd)
    641 
    642    Return a duplicate of file descriptor *fd*.
    643 
    644    Availability: Unix, Windows.
    645 
    646 
    647 .. function:: dup2(fd, fd2)
    648 
    649    Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
    650 
    651    Availability: Unix, Windows.
    652 
    653 
    654 .. function:: fchmod(fd, mode)
    655 
    656    Change the mode of the file given by *fd* to the numeric *mode*.  See the docs
    657    for :func:`chmod` for possible values of *mode*.
    658 
    659    Availability: Unix.
    660 
    661    .. versionadded:: 2.6
    662 
    663 
    664 .. function:: fchown(fd, uid, gid)
    665 
    666    Change the owner and group id of the file given by *fd* to the numeric *uid*
    667    and *gid*.  To leave one of the ids unchanged, set it to -1.
    668 
    669    Availability: Unix.
    670 
    671    .. versionadded:: 2.6
    672 
    673 
    674 .. function:: fdatasync(fd)
    675 
    676    Force write of file with filedescriptor *fd* to disk. Does not force update of
    677    metadata.
    678 
    679    Availability: Unix.
    680 
    681    .. note::
    682       This function is not available on MacOS.
    683 
    684 
    685 .. function:: fpathconf(fd, name)
    686 
    687    Return system configuration information relevant to an open file. *name*
    688    specifies the configuration value to retrieve; it may be a string which is the
    689    name of a defined system value; these names are specified in a number of
    690    standards (POSIX.1, Unix 95, Unix 98, and others).  Some platforms define
    691    additional names as well.  The names known to the host operating system are
    692    given in the ``pathconf_names`` dictionary.  For configuration variables not
    693    included in that mapping, passing an integer for *name* is also accepted.
    694 
    695    If *name* is a string and is not known, :exc:`ValueError` is raised.  If a
    696    specific value for *name* is not supported by the host system, even if it is
    697    included in ``pathconf_names``, an :exc:`OSError` is raised with
    698    :const:`errno.EINVAL` for the error number.
    699 
    700    Availability: Unix.
    701 
    702 
    703 .. function:: fstat(fd)
    704 
    705    Return status for file descriptor *fd*, like :func:`~os.stat`.
    706 
    707    Availability: Unix, Windows.
    708 
    709 
    710 .. function:: fstatvfs(fd)
    711 
    712    Return information about the filesystem containing the file associated with file
    713    descriptor *fd*, like :func:`statvfs`.
    714 
    715    Availability: Unix.
    716 
    717 
    718 .. function:: fsync(fd)
    719 
    720    Force write of file with filedescriptor *fd* to disk.  On Unix, this calls the
    721    native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
    722 
    723    If you're starting with a Python file object *f*, first do ``f.flush()``, and
    724    then do ``os.fsync(f.fileno())``, to ensure that all internal buffers associated
    725    with *f* are written to disk.
    726 
    727    Availability: Unix, and Windows starting in 2.2.3.
    728 
    729 
    730 .. function:: ftruncate(fd, length)
    731 
    732    Truncate the file corresponding to file descriptor *fd*, so that it is at most
    733    *length* bytes in size.
    734 
    735    Availability: Unix.
    736 
    737 
    738 .. function:: isatty(fd)
    739 
    740    Return ``True`` if the file descriptor *fd* is open and connected to a
    741    tty(-like) device, else ``False``.
    742 
    743 
    744 .. function:: lseek(fd, pos, how)
    745 
    746    Set the current position of file descriptor *fd* to position *pos*, modified
    747    by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
    748    beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
    749    current position; :const:`SEEK_END` or ``2`` to set it relative to the end of
    750    the file. Return the new cursor position in bytes, starting from the beginning.
    751 
    752    Availability: Unix, Windows.
    753 
    754 
    755 .. data:: SEEK_SET
    756           SEEK_CUR
    757           SEEK_END
    758 
    759    Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
    760    respectively.
    761 
    762    Availability: Windows, Unix.
    763 
    764    .. versionadded:: 2.5
    765 
    766 
    767 .. function:: open(file, flags[, mode])
    768 
    769    Open the file *file* and set various flags according to *flags* and possibly its
    770    mode according to *mode*. The default *mode* is ``0777`` (octal), and the
    771    current umask value is first masked out.  Return the file descriptor for the
    772    newly opened file.
    773 
    774    For a description of the flag and mode values, see the C run-time documentation;
    775    flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
    776    this module too (see :ref:`open-constants`).  In particular, on Windows adding
    777    :const:`O_BINARY` is needed to open files in binary mode.
    778 
    779    Availability: Unix, Windows.
    780 
    781    .. note::
    782 
    783       This function is intended for low-level I/O.  For normal usage, use the
    784       built-in function :func:`open`, which returns a "file object" with
    785       :meth:`~file.read` and :meth:`~file.write` methods (and many more).  To
    786       wrap a file descriptor in a "file object", use :func:`fdopen`.
    787 
    788 
    789 .. function:: openpty()
    790 
    791    .. index:: module: pty
    792 
    793    Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
    794    slave)`` for the pty and the tty, respectively. For a (slightly) more portable
    795    approach, use the :mod:`pty` module.
    796 
    797    Availability: some flavors of Unix.
    798 
    799 
    800 .. function:: pipe()
    801 
    802    Create a pipe.  Return a pair of file descriptors ``(r, w)`` usable for reading
    803    and writing, respectively.
    804 
    805    Availability: Unix, Windows.
    806 
    807 
    808 .. function:: read(fd, n)
    809 
    810    Read at most *n* bytes from file descriptor *fd*. Return a string containing the
    811    bytes read.  If the end of the file referred to by *fd* has been reached, an
    812    empty string is returned.
    813 
    814    Availability: Unix, Windows.
    815 
    816    .. note::
    817 
    818       This function is intended for low-level I/O and must be applied to a file
    819       descriptor as returned by :func:`os.open` or :func:`pipe`.  To read a "file object"
    820       returned by the built-in function :func:`open` or by :func:`popen` or
    821       :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
    822       :meth:`~file.readline` methods.
    823 
    824 
    825 .. function:: tcgetpgrp(fd)
    826 
    827    Return the process group associated with the terminal given by *fd* (an open
    828    file descriptor as returned by :func:`os.open`).
    829 
    830    Availability: Unix.
    831 
    832 
    833 .. function:: tcsetpgrp(fd, pg)
    834 
    835    Set the process group associated with the terminal given by *fd* (an open file
    836    descriptor as returned by :func:`os.open`) to *pg*.
    837 
    838    Availability: Unix.
    839 
    840 
    841 .. function:: ttyname(fd)
    842 
    843    Return a string which specifies the terminal device associated with
    844    file descriptor *fd*.  If *fd* is not associated with a terminal device, an
    845    exception is raised.
    846 
    847    Availability: Unix.
    848 
    849 
    850 .. function:: write(fd, str)
    851 
    852    Write the string *str* to file descriptor *fd*. Return the number of bytes
    853    actually written.
    854 
    855    Availability: Unix, Windows.
    856 
    857    .. note::
    858 
    859       This function is intended for low-level I/O and must be applied to a file
    860       descriptor as returned by :func:`os.open` or :func:`pipe`.  To write a "file
    861       object" returned by the built-in function :func:`open` or by :func:`popen` or
    862       :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
    863       :meth:`~file.write` method.
    864 
    865 
    866 .. _open-constants:
    867 
    868 ``open()`` flag constants
    869 ~~~~~~~~~~~~~~~~~~~~~~~~~
    870 
    871 The following constants are options for the *flags* parameter to the
    872 :func:`~os.open` function.  They can be combined using the bitwise OR operator
    873 ``|``.  Some of them are not available on all platforms.  For descriptions of
    874 their availability and use, consult the :manpage:`open(2)` manual page on Unix
    875 or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
    876 
    877 
    878 .. data:: O_RDONLY
    879           O_WRONLY
    880           O_RDWR
    881           O_APPEND
    882           O_CREAT
    883           O_EXCL
    884           O_TRUNC
    885 
    886    The above constants are available on Unix and Windows.
    887 
    888 
    889 .. data:: O_DSYNC
    890           O_RSYNC
    891           O_SYNC
    892           O_NDELAY
    893           O_NONBLOCK
    894           O_NOCTTY
    895 
    896    The above constants are only available on Unix.
    897 
    898 
    899 .. data:: O_BINARY
    900           O_NOINHERIT
    901           O_SHORT_LIVED
    902           O_TEMPORARY
    903           O_RANDOM
    904           O_SEQUENTIAL
    905           O_TEXT
    906 
    907    The above constants are only available on Windows.
    908 
    909 
    910 .. data:: O_ASYNC
    911           O_DIRECT
    912           O_DIRECTORY
    913           O_NOFOLLOW
    914           O_NOATIME
    915           O_SHLOCK
    916           O_EXLOCK
    917 
    918    The above constants are extensions and not present if they are not
    919    defined by the C library.
    920 
    921 
    922 .. _os-file-dir:
    923 
    924 Files and Directories
    925 ---------------------
    926 
    927 .. function:: access(path, mode)
    928 
    929    Use the real uid/gid to test for access to *path*.  Note that most operations
    930    will use the effective uid/gid, therefore this routine can be used in a
    931    suid/sgid environment to test if the invoking user has the specified access to
    932    *path*.  *mode* should be :const:`F_OK` to test the existence of *path*, or it
    933    can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
    934    :const:`X_OK` to test permissions.  Return :const:`True` if access is allowed,
    935    :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
    936    information.
    937 
    938    Availability: Unix, Windows.
    939 
    940    .. note::
    941 
    942       Using :func:`access` to check if a user is authorized to e.g. open a file
    943       before actually doing so using :func:`open` creates a security hole,
    944       because the user might exploit the short time interval between checking
    945       and opening the file to manipulate it. It's preferable to use :term:`EAFP`
    946       techniques. For example::
    947 
    948          if os.access("myfile", os.R_OK):
    949              with open("myfile") as fp:
    950                  return fp.read()
    951          return "some default data"
    952 
    953       is better written as::
    954 
    955          try:
    956              fp = open("myfile")
    957          except IOError as e:
    958              if e.errno == errno.EACCES:
    959                  return "some default data"
    960              # Not a permission error.
    961              raise
    962          else:
    963              with fp:
    964                  return fp.read()
    965 
    966    .. note::
    967 
    968       I/O operations may fail even when :func:`access` indicates that they would
    969       succeed, particularly for operations on network filesystems which may have
    970       permissions semantics beyond the usual POSIX permission-bit model.
    971 
    972 
    973 .. data:: F_OK
    974 
    975    Value to pass as the *mode* parameter of :func:`access` to test the existence of
    976    *path*.
    977 
    978 
    979 .. data:: R_OK
    980 
    981    Value to include in the *mode* parameter of :func:`access` to test the
    982    readability of *path*.
    983 
    984 
    985 .. data:: W_OK
    986 
    987    Value to include in the *mode* parameter of :func:`access` to test the
    988    writability of *path*.
    989 
    990 
    991 .. data:: X_OK
    992 
    993    Value to include in the *mode* parameter of :func:`access` to determine if
    994    *path* can be executed.
    995 
    996 
    997 .. function:: chdir(path)
    998 
    999    .. index:: single: directory; changing
   1000 
   1001    Change the current working directory to *path*.
   1002 
   1003    Availability: Unix, Windows.
   1004 
   1005 
   1006 .. function:: fchdir(fd)
   1007 
   1008    Change the current working directory to the directory represented by the file
   1009    descriptor *fd*.  The descriptor must refer to an opened directory, not an open
   1010    file.
   1011 
   1012    Availability: Unix.
   1013 
   1014    .. versionadded:: 2.3
   1015 
   1016 
   1017 .. function:: getcwd()
   1018 
   1019    Return a string representing the current working directory.
   1020 
   1021    Availability: Unix, Windows.
   1022 
   1023 
   1024 .. function:: getcwdu()
   1025 
   1026    Return a Unicode object representing the current working directory.
   1027 
   1028    Availability: Unix, Windows.
   1029 
   1030    .. versionadded:: 2.3
   1031 
   1032 
   1033 .. function:: chflags(path, flags)
   1034 
   1035    Set the flags of *path* to the numeric *flags*. *flags* may take a combination
   1036    (bitwise OR) of the following values (as defined in the :mod:`stat` module):
   1037 
   1038    * :data:`stat.UF_NODUMP`
   1039    * :data:`stat.UF_IMMUTABLE`
   1040    * :data:`stat.UF_APPEND`
   1041    * :data:`stat.UF_OPAQUE`
   1042    * :data:`stat.UF_NOUNLINK`
   1043    * :data:`stat.UF_COMPRESSED`
   1044    * :data:`stat.UF_HIDDEN`
   1045    * :data:`stat.SF_ARCHIVED`
   1046    * :data:`stat.SF_IMMUTABLE`
   1047    * :data:`stat.SF_APPEND`
   1048    * :data:`stat.SF_NOUNLINK`
   1049    * :data:`stat.SF_SNAPSHOT`
   1050 
   1051    Availability: Unix.
   1052 
   1053    .. versionadded:: 2.6
   1054 
   1055 
   1056 .. function:: chroot(path)
   1057 
   1058    Change the root directory of the current process to *path*. Availability:
   1059    Unix.
   1060 
   1061    .. versionadded:: 2.2
   1062 
   1063 
   1064 .. function:: chmod(path, mode)
   1065 
   1066    Change the mode of *path* to the numeric *mode*. *mode* may take one of the
   1067    following values (as defined in the :mod:`stat` module) or bitwise ORed
   1068    combinations of them:
   1069 
   1070 
   1071    * :data:`stat.S_ISUID`
   1072    * :data:`stat.S_ISGID`
   1073    * :data:`stat.S_ENFMT`
   1074    * :data:`stat.S_ISVTX`
   1075    * :data:`stat.S_IREAD`
   1076    * :data:`stat.S_IWRITE`
   1077    * :data:`stat.S_IEXEC`
   1078    * :data:`stat.S_IRWXU`
   1079    * :data:`stat.S_IRUSR`
   1080    * :data:`stat.S_IWUSR`
   1081    * :data:`stat.S_IXUSR`
   1082    * :data:`stat.S_IRWXG`
   1083    * :data:`stat.S_IRGRP`
   1084    * :data:`stat.S_IWGRP`
   1085    * :data:`stat.S_IXGRP`
   1086    * :data:`stat.S_IRWXO`
   1087    * :data:`stat.S_IROTH`
   1088    * :data:`stat.S_IWOTH`
   1089    * :data:`stat.S_IXOTH`
   1090 
   1091    Availability: Unix, Windows.
   1092 
   1093    .. note::
   1094 
   1095       Although Windows supports :func:`chmod`, you can only  set the file's read-only
   1096       flag with it (via the ``stat.S_IWRITE``  and ``stat.S_IREAD``
   1097       constants or a corresponding integer value).  All other bits are
   1098       ignored.
   1099 
   1100 
   1101 .. function:: chown(path, uid, gid)
   1102 
   1103    Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave
   1104    one of the ids unchanged, set it to -1.
   1105 
   1106    Availability: Unix.
   1107 
   1108 
   1109 .. function:: lchflags(path, flags)
   1110 
   1111    Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do not
   1112    follow symbolic links.
   1113 
   1114    Availability: Unix.
   1115 
   1116    .. versionadded:: 2.6
   1117 
   1118 
   1119 .. function:: lchmod(path, mode)
   1120 
   1121    Change the mode of *path* to the numeric *mode*. If path is a symlink, this
   1122    affects the symlink rather than the target. See the docs for :func:`chmod`
   1123    for possible values of *mode*.
   1124 
   1125    Availability: Unix.
   1126 
   1127    .. versionadded:: 2.6
   1128 
   1129 
   1130 .. function:: lchown(path, uid, gid)
   1131 
   1132    Change the owner and group id of *path* to the numeric *uid* and *gid*. This
   1133    function will not follow symbolic links.
   1134 
   1135    Availability: Unix.
   1136 
   1137    .. versionadded:: 2.3
   1138 
   1139 
   1140 .. function:: link(source, link_name)
   1141 
   1142    Create a hard link pointing to *source* named *link_name*.
   1143 
   1144    Availability: Unix.
   1145 
   1146 
   1147 .. function:: listdir(path)
   1148 
   1149    Return a list containing the names of the entries in the directory given by
   1150    *path*.  The list is in arbitrary order.  It does not include the special
   1151    entries ``'.'`` and ``'..'`` even if they are present in the
   1152    directory.
   1153 
   1154    Availability: Unix, Windows.
   1155 
   1156    .. versionchanged:: 2.3
   1157       On Windows NT/2k/XP and Unix, if *path* is a Unicode object, the result will be
   1158       a list of Unicode objects. Undecodable filenames will still be returned as
   1159       string objects.
   1160 
   1161 
   1162 .. function:: lstat(path)
   1163 
   1164    Perform the equivalent of an :c:func:`lstat` system call on the given path.
   1165    Similar to :func:`~os.stat`, but does not follow symbolic links.  On
   1166    platforms that do not support symbolic links, this is an alias for
   1167    :func:`~os.stat`.
   1168 
   1169 
   1170 .. function:: mkfifo(path[, mode])
   1171 
   1172    Create a FIFO (a named pipe) named *path* with numeric mode *mode*.  The default
   1173    *mode* is ``0666`` (octal).  The current umask value is first masked out from
   1174    the mode.
   1175 
   1176    Availability: Unix.
   1177 
   1178    FIFOs are pipes that can be accessed like regular files.  FIFOs exist until they
   1179    are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
   1180    rendezvous between "client" and "server" type processes: the server opens the
   1181    FIFO for reading, and the client opens it for writing.  Note that :func:`mkfifo`
   1182    doesn't open the FIFO --- it just creates the rendezvous point.
   1183 
   1184 
   1185 .. function:: mknod(filename[, mode=0600[, device=0]])
   1186 
   1187    Create a filesystem node (file, device special file or named pipe) named
   1188    *filename*. *mode* specifies both the permissions to use and the type of node to
   1189    be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
   1190    ``stat.S_IFCHR``, ``stat.S_IFBLK``,
   1191    and ``stat.S_IFIFO`` (those constants are available in :mod:`stat`).
   1192    For ``stat.S_IFCHR`` and
   1193    ``stat.S_IFBLK``, *device* defines the newly created device special file (probably using
   1194    :func:`os.makedev`), otherwise it is ignored.
   1195 
   1196    .. versionadded:: 2.3
   1197 
   1198 
   1199 .. function:: major(device)
   1200 
   1201    Extract the device major number from a raw device number (usually the
   1202    :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
   1203 
   1204    .. versionadded:: 2.3
   1205 
   1206 
   1207 .. function:: minor(device)
   1208 
   1209    Extract the device minor number from a raw device number (usually the
   1210    :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
   1211 
   1212    .. versionadded:: 2.3
   1213 
   1214 
   1215 .. function:: makedev(major, minor)
   1216 
   1217    Compose a raw device number from the major and minor device numbers.
   1218 
   1219    .. versionadded:: 2.3
   1220 
   1221 
   1222 .. function:: mkdir(path[, mode])
   1223 
   1224    Create a directory named *path* with numeric mode *mode*. The default *mode* is
   1225    ``0777`` (octal).  If the directory already exists,
   1226    :exc:`OSError` is raised.
   1227 
   1228    .. _mkdir_modebits:
   1229 
   1230    On some systems, *mode* is ignored.  Where it is used, the current umask
   1231    value is first masked out.  If bits other than the last 9 (i.e. the last 3
   1232    digits of the octal representation of the *mode*) are set, their meaning is
   1233    platform-dependent.  On some platforms, they are ignored and you should call
   1234    :func:`chmod` explicitly to set them.
   1235 
   1236    It is also possible to create temporary directories; see the
   1237    :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
   1238 
   1239    Availability: Unix, Windows.
   1240 
   1241 
   1242 .. function:: makedirs(path[, mode])
   1243 
   1244    .. index::
   1245       single: directory; creating
   1246       single: UNC paths; and os.makedirs()
   1247 
   1248    Recursive directory creation function.  Like :func:`mkdir`, but makes all
   1249    intermediate-level directories needed to contain the leaf directory.  Raises an
   1250    :exc:`error` exception if the leaf directory already exists or cannot be
   1251    created.  The default *mode* is ``0777`` (octal).
   1252 
   1253    The *mode* parameter is passed to :func:`mkdir`; see :ref:`the mkdir()
   1254    description <mkdir_modebits>` for how it is interpreted.
   1255 
   1256    .. note::
   1257 
   1258       :func:`makedirs` will become confused if the path elements to create include
   1259       :data:`os.pardir`.
   1260 
   1261    .. versionadded:: 1.5.2
   1262 
   1263    .. versionchanged:: 2.3
   1264       This function now handles UNC paths correctly.
   1265 
   1266 
   1267 .. function:: pathconf(path, name)
   1268 
   1269    Return system configuration information relevant to a named file. *name*
   1270    specifies the configuration value to retrieve; it may be a string which is the
   1271    name of a defined system value; these names are specified in a number of
   1272    standards (POSIX.1, Unix 95, Unix 98, and others).  Some platforms define
   1273    additional names as well.  The names known to the host operating system are
   1274    given in the ``pathconf_names`` dictionary.  For configuration variables not
   1275    included in that mapping, passing an integer for *name* is also accepted.
   1276 
   1277    If *name* is a string and is not known, :exc:`ValueError` is raised.  If a
   1278    specific value for *name* is not supported by the host system, even if it is
   1279    included in ``pathconf_names``, an :exc:`OSError` is raised with
   1280    :const:`errno.EINVAL` for the error number.
   1281 
   1282    Availability: Unix.
   1283 
   1284 
   1285 .. data:: pathconf_names
   1286 
   1287    Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
   1288    the integer values defined for those names by the host operating system.  This
   1289    can be used to determine the set of names known to the system. Availability:
   1290    Unix.
   1291 
   1292 
   1293 .. function:: readlink(path)
   1294 
   1295    Return a string representing the path to which the symbolic link points.  The
   1296    result may be either an absolute or relative pathname; if it is relative, it may
   1297    be converted to an absolute pathname using ``os.path.join(os.path.dirname(path),
   1298    result)``.
   1299 
   1300    .. versionchanged:: 2.6
   1301       If the *path* is a Unicode object the result will also be a Unicode object.
   1302 
   1303    Availability: Unix.
   1304 
   1305 
   1306 .. function:: remove(path)
   1307 
   1308    Remove (delete) the file *path*.  If *path* is a directory, :exc:`OSError` is
   1309    raised; see :func:`rmdir` below to remove a directory.  This is identical to
   1310    the :func:`unlink` function documented below.  On Windows, attempting to
   1311    remove a file that is in use causes an exception to be raised; on Unix, the
   1312    directory entry is removed but the storage allocated to the file is not made
   1313    available until the original file is no longer in use.
   1314 
   1315    Availability: Unix, Windows.
   1316 
   1317 
   1318 .. function:: removedirs(path)
   1319 
   1320    .. index:: single: directory; deleting
   1321 
   1322    Remove directories recursively.  Works like :func:`rmdir` except that, if the
   1323    leaf directory is successfully removed, :func:`removedirs`  tries to
   1324    successively remove every parent directory mentioned in  *path* until an error
   1325    is raised (which is ignored, because it generally means that a parent directory
   1326    is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
   1327    the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
   1328    they are empty. Raises :exc:`OSError` if the leaf directory could not be
   1329    successfully removed.
   1330 
   1331    .. versionadded:: 1.5.2
   1332 
   1333 
   1334 .. function:: rename(src, dst)
   1335 
   1336    Rename the file or directory *src* to *dst*.  If *dst* is a directory,
   1337    :exc:`OSError` will be raised.  On Unix, if *dst* exists and is a file, it will
   1338    be replaced silently if the user has permission.  The operation may fail on some
   1339    Unix flavors if *src* and *dst* are on different filesystems.  If successful,
   1340    the renaming will be an atomic operation (this is a POSIX requirement).  On
   1341    Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
   1342    file; there may be no way to implement an atomic rename when *dst* names an
   1343    existing file.
   1344 
   1345    Availability: Unix, Windows.
   1346 
   1347 
   1348 .. function:: renames(old, new)
   1349 
   1350    Recursive directory or file renaming function. Works like :func:`rename`, except
   1351    creation of any intermediate directories needed to make the new pathname good is
   1352    attempted first. After the rename, directories corresponding to rightmost path
   1353    segments of the old name will be pruned away using :func:`removedirs`.
   1354 
   1355    .. versionadded:: 1.5.2
   1356 
   1357    .. note::
   1358 
   1359       This function can fail with the new directory structure made if you lack
   1360       permissions needed to remove the leaf directory or file.
   1361 
   1362 
   1363 .. function:: rmdir(path)
   1364 
   1365    Remove (delete) the directory *path*.  Only works when the directory is
   1366    empty, otherwise, :exc:`OSError` is raised.  In order to remove whole
   1367    directory trees, :func:`shutil.rmtree` can be used.
   1368 
   1369    Availability: Unix, Windows.
   1370 
   1371 
   1372 .. function:: stat(path)
   1373 
   1374    Perform the equivalent of a :c:func:`stat` system call on the given path.
   1375    (This function follows symlinks; to stat a symlink use :func:`lstat`.)
   1376 
   1377    The return value is an object whose attributes correspond to the members
   1378    of the :c:type:`stat` structure, namely:
   1379 
   1380    * :attr:`st_mode` - protection bits,
   1381    * :attr:`st_ino` - inode number,
   1382    * :attr:`st_dev` - device,
   1383    * :attr:`st_nlink` - number of hard links,
   1384    * :attr:`st_uid` - user id of owner,
   1385    * :attr:`st_gid` - group id of owner,
   1386    * :attr:`st_size` - size of file, in bytes,
   1387    * :attr:`st_atime` - time of most recent access,
   1388    * :attr:`st_mtime` - time of most recent content modification,
   1389    * :attr:`st_ctime` - platform dependent; time of most recent metadata change on
   1390      Unix, or the time of creation on Windows)
   1391 
   1392    .. versionchanged:: 2.3
   1393       If :func:`stat_float_times` returns ``True``, the time values are floats, measuring
   1394       seconds. Fractions of a second may be reported if the system supports that.
   1395       See :func:`stat_float_times` for further discussion.
   1396 
   1397    On some Unix systems (such as Linux), the following attributes may also be
   1398    available:
   1399 
   1400    * :attr:`st_blocks` - number of 512-byte blocks allocated for file
   1401    * :attr:`st_blksize` - filesystem blocksize for efficient file system I/O
   1402    * :attr:`st_rdev` - type of device if an inode device
   1403    * :attr:`st_flags` - user defined flags for file
   1404 
   1405    On other Unix systems (such as FreeBSD), the following attributes may be
   1406    available (but may be only filled out if root tries to use them):
   1407 
   1408    * :attr:`st_gen` - file generation number
   1409    * :attr:`st_birthtime` - time of file creation
   1410 
   1411    On RISCOS systems, the following attributes are also available:
   1412 
   1413    * :attr:`st_ftype` (file type)
   1414    * :attr:`st_attrs` (attributes)
   1415    * :attr:`st_obtype` (object type).
   1416 
   1417    .. note::
   1418 
   1419       The exact meaning and resolution of the :attr:`st_atime`,
   1420       :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
   1421       system and the file system. For example, on Windows systems using the FAT
   1422       or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
   1423       :attr:`st_atime` has only 1-day resolution.  See your operating system
   1424       documentation for details.
   1425 
   1426    For backward compatibility, the return value of :func:`~os.stat` is also accessible
   1427    as a tuple of at least 10 integers giving the most important (and portable)
   1428    members of the :c:type:`stat` structure, in the order :attr:`st_mode`,
   1429    :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, :attr:`st_uid`,
   1430    :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, :attr:`st_mtime`,
   1431    :attr:`st_ctime`. More items may be added at the end by some implementations.
   1432 
   1433    .. index:: module: stat
   1434 
   1435    The standard module :mod:`stat` defines functions and constants that are useful
   1436    for extracting information from a :c:type:`stat` structure. (On Windows, some
   1437    items are filled with dummy values.)
   1438 
   1439    Example::
   1440 
   1441       >>> import os
   1442       >>> statinfo = os.stat('somefile.txt')
   1443       >>> statinfo
   1444       (33188, 422511, 769, 1, 1032, 100, 926, 1105022698,1105022732, 1105022732)
   1445       >>> statinfo.st_size
   1446       926
   1447 
   1448    Availability: Unix, Windows.
   1449 
   1450    .. versionchanged:: 2.2
   1451       Added access to values as attributes of the returned object.
   1452 
   1453    .. versionchanged:: 2.5
   1454       Added :attr:`st_gen` and :attr:`st_birthtime`.
   1455 
   1456 
   1457 .. function:: stat_float_times([newvalue])
   1458 
   1459    Determine whether :class:`stat_result` represents time stamps as float objects.
   1460    If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
   1461    ``False``, future calls return ints. If *newvalue* is omitted, return the
   1462    current setting.
   1463 
   1464    For compatibility with older Python versions, accessing :class:`stat_result` as
   1465    a tuple always returns integers.
   1466 
   1467    .. versionchanged:: 2.5
   1468       Python now returns float values by default. Applications which do not work
   1469       correctly with floating point time stamps can use this function to restore the
   1470       old behaviour.
   1471 
   1472    The resolution of the timestamps (that is the smallest possible fraction)
   1473    depends on the system. Some systems only support second resolution; on these
   1474    systems, the fraction will always be zero.
   1475 
   1476    It is recommended that this setting is only changed at program startup time in
   1477    the *__main__* module; libraries should never change this setting. If an
   1478    application uses a library that works incorrectly if floating point time stamps
   1479    are processed, this application should turn the feature off until the library
   1480    has been corrected.
   1481 
   1482 
   1483 .. function:: statvfs(path)
   1484 
   1485    Perform a :c:func:`statvfs` system call on the given path.  The return value is
   1486    an object whose attributes describe the filesystem on the given path, and
   1487    correspond to the members of the :c:type:`statvfs` structure, namely:
   1488    :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
   1489    :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
   1490    :attr:`f_flag`, :attr:`f_namemax`.
   1491 
   1492    .. index:: module: statvfs
   1493 
   1494    For backward compatibility, the return value is also accessible as a tuple whose
   1495    values correspond to the attributes, in the order given above. The standard
   1496    module :mod:`statvfs` defines constants that are useful for extracting
   1497    information from a :c:type:`statvfs` structure when accessing it as a sequence;
   1498    this remains useful when writing code that needs to work with versions of Python
   1499    that don't support accessing the fields as attributes.
   1500 
   1501    Availability: Unix.
   1502 
   1503    .. versionchanged:: 2.2
   1504       Added access to values as attributes of the returned object.
   1505 
   1506 
   1507 .. function:: symlink(source, link_name)
   1508 
   1509    Create a symbolic link pointing to *source* named *link_name*.
   1510 
   1511    Availability: Unix.
   1512 
   1513 
   1514 .. function:: tempnam([dir[, prefix]])
   1515 
   1516    Return a unique path name that is reasonable for creating a temporary file.
   1517    This will be an absolute path that names a potential directory entry in the
   1518    directory *dir* or a common location for temporary files if *dir* is omitted or
   1519    ``None``.  If given and not ``None``, *prefix* is used to provide a short prefix
   1520    to the filename.  Applications are responsible for properly creating and
   1521    managing files created using paths returned by :func:`tempnam`; no automatic
   1522    cleanup is provided. On Unix, the environment variable :envvar:`TMPDIR`
   1523    overrides *dir*, while on Windows :envvar:`TMP` is used.  The specific
   1524    behavior of this function depends on the C library implementation; some aspects
   1525    are underspecified in system documentation.
   1526 
   1527    .. warning::
   1528 
   1529       Use of :func:`tempnam` is vulnerable to symlink attacks; consider using
   1530       :func:`tmpfile` (section :ref:`os-newstreams`) instead.
   1531 
   1532    Availability: Unix, Windows.
   1533 
   1534 
   1535 .. function:: tmpnam()
   1536 
   1537    Return a unique path name that is reasonable for creating a temporary file.
   1538    This will be an absolute path that names a potential directory entry in a common
   1539    location for temporary files.  Applications are responsible for properly
   1540    creating and managing files created using paths returned by :func:`tmpnam`; no
   1541    automatic cleanup is provided.
   1542 
   1543    .. warning::
   1544 
   1545       Use of :func:`tmpnam` is vulnerable to symlink attacks; consider using
   1546       :func:`tmpfile` (section :ref:`os-newstreams`) instead.
   1547 
   1548    Availability: Unix, Windows.  This function probably shouldn't be used on
   1549    Windows, though: Microsoft's implementation of :func:`tmpnam` always creates a
   1550    name in the root directory of the current drive, and that's generally a poor
   1551    location for a temp file (depending on privileges, you may not even be able to
   1552    open a file using this name).
   1553 
   1554 
   1555 .. data:: TMP_MAX
   1556 
   1557    The maximum number of unique names that :func:`tmpnam` will generate before
   1558    reusing names.
   1559 
   1560 
   1561 .. function:: unlink(path)
   1562 
   1563    Remove (delete) the file *path*.  This is the same function as
   1564    :func:`remove`; the :func:`unlink` name is its traditional Unix
   1565    name.
   1566 
   1567    Availability: Unix, Windows.
   1568 
   1569 
   1570 .. function:: utime(path, times)
   1571 
   1572    Set the access and modified times of the file specified by *path*. If *times*
   1573    is ``None``, then the file's access and modified times are set to the current
   1574    time. (The effect is similar to running the Unix program :program:`touch` on
   1575    the path.)  Otherwise, *times* must be a 2-tuple of numbers, of the form
   1576    ``(atime, mtime)`` which is used to set the access and modified times,
   1577    respectively. Whether a directory can be given for *path* depends on whether
   1578    the operating system implements directories as files (for example, Windows
   1579    does not).  Note that the exact times you set here may not be returned by a
   1580    subsequent :func:`~os.stat` call, depending on the resolution with which your
   1581    operating system records access and modification times; see :func:`~os.stat`.
   1582 
   1583    .. versionchanged:: 2.0
   1584       Added support for ``None`` for *times*.
   1585 
   1586    Availability: Unix, Windows.
   1587 
   1588 
   1589 .. function:: walk(top, topdown=True, onerror=None, followlinks=False)
   1590 
   1591    .. index::
   1592       single: directory; walking
   1593       single: directory; traversal
   1594 
   1595    Generate the file names in a directory tree by walking the tree
   1596    either top-down or bottom-up. For each directory in the tree rooted at directory
   1597    *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
   1598    filenames)``.
   1599 
   1600    *dirpath* is a string, the path to the directory.  *dirnames* is a list of the
   1601    names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
   1602    *filenames* is a list of the names of the non-directory files in *dirpath*.
   1603    Note that the names in the lists contain no path components.  To get a full path
   1604    (which begins with *top*) to a file or directory in *dirpath*, do
   1605    ``os.path.join(dirpath, name)``.
   1606 
   1607    If optional argument *topdown* is ``True`` or not specified, the triple for a
   1608    directory is generated before the triples for any of its subdirectories
   1609    (directories are generated top-down).  If *topdown* is ``False``, the triple
   1610    for a directory is generated after the triples for all of its subdirectories
   1611    (directories are generated bottom-up). No matter the value of *topdown*, the
   1612    list of subdirectories is retrieved before the tuples for the directory and
   1613    its subdirectories are generated.
   1614 
   1615    When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
   1616    (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
   1617    recurse into the subdirectories whose names remain in *dirnames*; this can be
   1618    used to prune the search, impose a specific order of visiting, or even to inform
   1619    :func:`walk` about directories the caller creates or renames before it resumes
   1620    :func:`walk` again.  Modifying *dirnames* when *topdown* is ``False`` has
   1621    no effect on the behavior of the walk, because in bottom-up mode the directories
   1622    in *dirnames* are generated before *dirpath* itself is generated.
   1623 
   1624    By default, errors from the :func:`listdir` call are ignored.  If optional
   1625    argument *onerror* is specified, it should be a function; it will be called with
   1626    one argument, an :exc:`OSError` instance.  It can report the error to continue
   1627    with the walk, or raise the exception to abort the walk.  Note that the filename
   1628    is available as the ``filename`` attribute of the exception object.
   1629 
   1630    By default, :func:`walk` will not walk down into symbolic links that resolve to
   1631    directories. Set *followlinks* to ``True`` to visit directories pointed to by
   1632    symlinks, on systems that support them.
   1633 
   1634    .. versionadded:: 2.6
   1635       The *followlinks* parameter.
   1636 
   1637    .. note::
   1638 
   1639       Be aware that setting *followlinks* to ``True`` can lead to infinite recursion if a
   1640       link points to a parent directory of itself. :func:`walk` does not keep track of
   1641       the directories it visited already.
   1642 
   1643    .. note::
   1644 
   1645       If you pass a relative pathname, don't change the current working directory
   1646       between resumptions of :func:`walk`.  :func:`walk` never changes the current
   1647       directory, and assumes that its caller doesn't either.
   1648 
   1649    This example displays the number of bytes taken by non-directory files in each
   1650    directory under the starting directory, except that it doesn't look under any
   1651    CVS subdirectory::
   1652 
   1653       import os
   1654       from os.path import join, getsize
   1655       for root, dirs, files in os.walk('python/Lib/email'):
   1656           print root, "consumes",
   1657           print sum(getsize(join(root, name)) for name in files),
   1658           print "bytes in", len(files), "non-directory files"
   1659           if 'CVS' in dirs:
   1660               dirs.remove('CVS')  # don't visit CVS directories
   1661 
   1662    In the next example, walking the tree bottom-up is essential: :func:`rmdir`
   1663    doesn't allow deleting a directory before the directory is empty::
   1664 
   1665       # Delete everything reachable from the directory named in "top",
   1666       # assuming there are no symbolic links.
   1667       # CAUTION:  This is dangerous!  For example, if top == '/', it
   1668       # could delete all your disk files.
   1669       import os
   1670       for root, dirs, files in os.walk(top, topdown=False):
   1671           for name in files:
   1672               os.remove(os.path.join(root, name))
   1673           for name in dirs:
   1674               os.rmdir(os.path.join(root, name))
   1675 
   1676    .. versionadded:: 2.3
   1677 
   1678 
   1679 .. _os-process:
   1680 
   1681 Process Management
   1682 ------------------
   1683 
   1684 These functions may be used to create and manage processes.
   1685 
   1686 The various :func:`exec\* <execl>` functions take a list of arguments for the new
   1687 program loaded into the process.  In each case, the first of these arguments is
   1688 passed to the new program as its own name rather than as an argument a user may
   1689 have typed on a command line.  For the C programmer, this is the ``argv[0]``
   1690 passed to a program's :c:func:`main`.  For example, ``os.execv('/bin/echo',
   1691 ['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
   1692 to be ignored.
   1693 
   1694 
   1695 .. function:: abort()
   1696 
   1697    Generate a :const:`SIGABRT` signal to the current process.  On Unix, the default
   1698    behavior is to produce a core dump; on Windows, the process immediately returns
   1699    an exit code of ``3``.  Be aware that calling this function will not call the
   1700    Python signal handler registered for :const:`SIGABRT` with
   1701    :func:`signal.signal`.
   1702 
   1703    Availability: Unix, Windows.
   1704 
   1705 
   1706 .. function:: execl(path, arg0, arg1, ...)
   1707               execle(path, arg0, arg1, ..., env)
   1708               execlp(file, arg0, arg1, ...)
   1709               execlpe(file, arg0, arg1, ..., env)
   1710               execv(path, args)
   1711               execve(path, args, env)
   1712               execvp(file, args)
   1713               execvpe(file, args, env)
   1714 
   1715    These functions all execute a new program, replacing the current process; they
   1716    do not return.  On Unix, the new executable is loaded into the current process,
   1717    and will have the same process id as the caller.  Errors will be reported as
   1718    :exc:`OSError` exceptions.
   1719 
   1720    The current process is replaced immediately. Open file objects and
   1721    descriptors are not flushed, so if there may be data buffered
   1722    on these open files, you should flush them using
   1723    :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
   1724    :func:`exec\* <execl>` function.
   1725 
   1726    The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
   1727    command-line arguments are passed.  The "l" variants are perhaps the easiest
   1728    to work with if the number of parameters is fixed when the code is written; the
   1729    individual parameters simply become additional parameters to the :func:`execl\*`
   1730    functions.  The "v" variants are good when the number of parameters is
   1731    variable, with the arguments being passed in a list or tuple as the *args*
   1732    parameter.  In either case, the arguments to the child process should start with
   1733    the name of the command being run, but this is not enforced.
   1734 
   1735    The variants which include a "p" near the end (:func:`execlp`,
   1736    :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
   1737    :envvar:`PATH` environment variable to locate the program *file*.  When the
   1738    environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
   1739    discussed in the next paragraph), the new environment is used as the source of
   1740    the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
   1741    :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
   1742    locate the executable; *path* must contain an appropriate absolute or relative
   1743    path.
   1744 
   1745    For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
   1746    that these all end in "e"), the *env* parameter must be a mapping which is
   1747    used to define the environment variables for the new process (these are used
   1748    instead of the current process' environment); the functions :func:`execl`,
   1749    :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
   1750    inherit the environment of the current process.
   1751 
   1752    Availability: Unix, Windows.
   1753 
   1754 
   1755 .. function:: _exit(n)
   1756 
   1757    Exit the process with status *n*, without calling cleanup handlers, flushing
   1758    stdio buffers, etc.
   1759 
   1760    Availability: Unix, Windows.
   1761 
   1762    .. note::
   1763 
   1764       The standard way to exit is ``sys.exit(n)``.  :func:`_exit` should
   1765       normally only be used in the child process after a :func:`fork`.
   1766 
   1767 The following exit codes are defined and can be used with :func:`_exit`,
   1768 although they are not required.  These are typically used for system programs
   1769 written in Python, such as a mail server's external command delivery program.
   1770 
   1771 .. note::
   1772 
   1773    Some of these may not be available on all Unix platforms, since there is some
   1774    variation.  These constants are defined where they are defined by the underlying
   1775    platform.
   1776 
   1777 
   1778 .. data:: EX_OK
   1779 
   1780    Exit code that means no error occurred.
   1781 
   1782    Availability: Unix.
   1783 
   1784    .. versionadded:: 2.3
   1785 
   1786 
   1787 .. data:: EX_USAGE
   1788 
   1789    Exit code that means the command was used incorrectly, such as when the wrong
   1790    number of arguments are given.
   1791 
   1792    Availability: Unix.
   1793 
   1794    .. versionadded:: 2.3
   1795 
   1796 
   1797 .. data:: EX_DATAERR
   1798 
   1799    Exit code that means the input data was incorrect.
   1800 
   1801    Availability: Unix.
   1802 
   1803    .. versionadded:: 2.3
   1804 
   1805 
   1806 .. data:: EX_NOINPUT
   1807 
   1808    Exit code that means an input file did not exist or was not readable.
   1809 
   1810    Availability: Unix.
   1811 
   1812    .. versionadded:: 2.3
   1813 
   1814 
   1815 .. data:: EX_NOUSER
   1816 
   1817    Exit code that means a specified user did not exist.
   1818 
   1819    Availability: Unix.
   1820 
   1821    .. versionadded:: 2.3
   1822 
   1823 
   1824 .. data:: EX_NOHOST
   1825 
   1826    Exit code that means a specified host did not exist.
   1827 
   1828    Availability: Unix.
   1829 
   1830    .. versionadded:: 2.3
   1831 
   1832 
   1833 .. data:: EX_UNAVAILABLE
   1834 
   1835    Exit code that means that a required service is unavailable.
   1836 
   1837    Availability: Unix.
   1838 
   1839    .. versionadded:: 2.3
   1840 
   1841 
   1842 .. data:: EX_SOFTWARE
   1843 
   1844    Exit code that means an internal software error was detected.
   1845 
   1846    Availability: Unix.
   1847 
   1848    .. versionadded:: 2.3
   1849 
   1850 
   1851 .. data:: EX_OSERR
   1852 
   1853    Exit code that means an operating system error was detected, such as the
   1854    inability to fork or create a pipe.
   1855 
   1856    Availability: Unix.
   1857 
   1858    .. versionadded:: 2.3
   1859 
   1860 
   1861 .. data:: EX_OSFILE
   1862 
   1863    Exit code that means some system file did not exist, could not be opened, or had
   1864    some other kind of error.
   1865 
   1866    Availability: Unix.
   1867 
   1868    .. versionadded:: 2.3
   1869 
   1870 
   1871 .. data:: EX_CANTCREAT
   1872 
   1873    Exit code that means a user specified output file could not be created.
   1874 
   1875    Availability: Unix.
   1876 
   1877    .. versionadded:: 2.3
   1878 
   1879 
   1880 .. data:: EX_IOERR
   1881 
   1882    Exit code that means that an error occurred while doing I/O on some file.
   1883 
   1884    Availability: Unix.
   1885 
   1886    .. versionadded:: 2.3
   1887 
   1888 
   1889 .. data:: EX_TEMPFAIL
   1890 
   1891    Exit code that means a temporary failure occurred.  This indicates something
   1892    that may not really be an error, such as a network connection that couldn't be
   1893    made during a retryable operation.
   1894 
   1895    Availability: Unix.
   1896 
   1897    .. versionadded:: 2.3
   1898 
   1899 
   1900 .. data:: EX_PROTOCOL
   1901 
   1902    Exit code that means that a protocol exchange was illegal, invalid, or not
   1903    understood.
   1904 
   1905    Availability: Unix.
   1906 
   1907    .. versionadded:: 2.3
   1908 
   1909 
   1910 .. data:: EX_NOPERM
   1911 
   1912    Exit code that means that there were insufficient permissions to perform the
   1913    operation (but not intended for file system problems).
   1914 
   1915    Availability: Unix.
   1916 
   1917    .. versionadded:: 2.3
   1918 
   1919 
   1920 .. data:: EX_CONFIG
   1921 
   1922    Exit code that means that some kind of configuration error occurred.
   1923 
   1924    Availability: Unix.
   1925 
   1926    .. versionadded:: 2.3
   1927 
   1928 
   1929 .. data:: EX_NOTFOUND
   1930 
   1931    Exit code that means something like "an entry was not found".
   1932 
   1933    Availability: Unix.
   1934 
   1935    .. versionadded:: 2.3
   1936 
   1937 
   1938 .. function:: fork()
   1939 
   1940    Fork a child process.  Return ``0`` in the child and the child's process id in the
   1941    parent.  If an error occurs :exc:`OSError` is raised.
   1942 
   1943    Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
   1944    known issues when using fork() from a thread.
   1945 
   1946    .. warning::
   1947 
   1948       See :mod:`ssl` for applications that use the SSL module with fork().
   1949 
   1950    Availability: Unix.
   1951 
   1952 
   1953 .. function:: forkpty()
   1954 
   1955    Fork a child process, using a new pseudo-terminal as the child's controlling
   1956    terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
   1957    new child's process id in the parent, and *fd* is the file descriptor of the
   1958    master end of the pseudo-terminal.  For a more portable approach, use the
   1959    :mod:`pty` module.  If an error occurs :exc:`OSError` is raised.
   1960 
   1961    Availability: some flavors of Unix.
   1962 
   1963 
   1964 .. function:: kill(pid, sig)
   1965 
   1966    .. index::
   1967       single: process; killing
   1968       single: process; signalling
   1969 
   1970    Send signal *sig* to the process *pid*.  Constants for the specific signals
   1971    available on the host platform are defined in the :mod:`signal` module.
   1972 
   1973    Windows: The :data:`signal.CTRL_C_EVENT` and
   1974    :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
   1975    only be sent to console processes which share a common console window,
   1976    e.g., some subprocesses. Any other value for *sig* will cause the process
   1977    to be unconditionally killed by the TerminateProcess API, and the exit code
   1978    will be set to *sig*. The Windows version of :func:`kill` additionally takes
   1979    process handles to be killed.
   1980 
   1981    .. versionadded:: 2.7 Windows support
   1982 
   1983 
   1984 .. function:: killpg(pgid, sig)
   1985 
   1986    .. index::
   1987       single: process; killing
   1988       single: process; signalling
   1989 
   1990    Send the signal *sig* to the process group *pgid*.
   1991 
   1992    Availability: Unix.
   1993 
   1994    .. versionadded:: 2.3
   1995 
   1996 
   1997 .. function:: nice(increment)
   1998 
   1999    Add *increment* to the process's "niceness".  Return the new niceness.
   2000 
   2001    Availability: Unix.
   2002 
   2003 
   2004 .. function:: plock(op)
   2005 
   2006    Lock program segments into memory.  The value of *op* (defined in
   2007    ``<sys/lock.h>``) determines which segments are locked.
   2008 
   2009    Availability: Unix.
   2010 
   2011 
   2012 .. function:: popen(...)
   2013               popen2(...)
   2014               popen3(...)
   2015               popen4(...)
   2016    :noindex:
   2017 
   2018    Run child processes, returning opened pipes for communications.  These functions
   2019    are described in section :ref:`os-newstreams`.
   2020 
   2021 
   2022 .. function:: spawnl(mode, path, ...)
   2023               spawnle(mode, path, ..., env)
   2024               spawnlp(mode, file, ...)
   2025               spawnlpe(mode, file, ..., env)
   2026               spawnv(mode, path, args)
   2027               spawnve(mode, path, args, env)
   2028               spawnvp(mode, file, args)
   2029               spawnvpe(mode, file, args, env)
   2030 
   2031    Execute the program *path* in a new process.
   2032 
   2033    (Note that the :mod:`subprocess` module provides more powerful facilities for
   2034    spawning new processes and retrieving their results; using that module is
   2035    preferable to using these functions.  Check especially the
   2036    :ref:`subprocess-replacements` section.)
   2037 
   2038    If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
   2039    process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
   2040    exits normally, or ``-signal``, where *signal* is the signal that killed the
   2041    process.  On Windows, the process id will actually be the process handle, so can
   2042    be used with the :func:`waitpid` function.
   2043 
   2044    The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
   2045    command-line arguments are passed.  The "l" variants are perhaps the easiest
   2046    to work with if the number of parameters is fixed when the code is written; the
   2047    individual parameters simply become additional parameters to the
   2048    :func:`spawnl\*` functions.  The "v" variants are good when the number of
   2049    parameters is variable, with the arguments being passed in a list or tuple as
   2050    the *args* parameter.  In either case, the arguments to the child process must
   2051    start with the name of the command being run.
   2052 
   2053    The variants which include a second "p" near the end (:func:`spawnlp`,
   2054    :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
   2055    :envvar:`PATH` environment variable to locate the program *file*.  When the
   2056    environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
   2057    discussed in the next paragraph), the new environment is used as the source of
   2058    the :envvar:`PATH` variable.  The other variants, :func:`spawnl`,
   2059    :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
   2060    :envvar:`PATH` variable to locate the executable; *path* must contain an
   2061    appropriate absolute or relative path.
   2062 
   2063    For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
   2064    (note that these all end in "e"), the *env* parameter must be a mapping
   2065    which is used to define the environment variables for the new process (they are
   2066    used instead of the current process' environment); the functions
   2067    :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
   2068    the new process to inherit the environment of the current process.  Note that
   2069    keys and values in the *env* dictionary must be strings; invalid keys or
   2070    values will cause the function to fail, with a return value of ``127``.
   2071 
   2072    As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
   2073    equivalent::
   2074 
   2075       import os
   2076       os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
   2077 
   2078       L = ['cp', 'index.html', '/dev/null']
   2079       os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
   2080 
   2081    Availability: Unix, Windows.  :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
   2082    and :func:`spawnvpe` are not available on Windows.  :func:`spawnle` and
   2083    :func:`spawnve` are not thread-safe on Windows; we advise you to use the
   2084    :mod:`subprocess` module instead.
   2085 
   2086    .. versionadded:: 1.6
   2087 
   2088 
   2089 .. data:: P_NOWAIT
   2090           P_NOWAITO
   2091 
   2092    Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
   2093    functions.  If either of these values is given, the :func:`spawn\*` functions
   2094    will return as soon as the new process has been created, with the process id as
   2095    the return value.
   2096 
   2097    Availability: Unix, Windows.
   2098 
   2099    .. versionadded:: 1.6
   2100 
   2101 
   2102 .. data:: P_WAIT
   2103 
   2104    Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
   2105    functions.  If this is given as *mode*, the :func:`spawn\*` functions will not
   2106    return until the new process has run to completion and will return the exit code
   2107    of the process the run is successful, or ``-signal`` if a signal kills the
   2108    process.
   2109 
   2110    Availability: Unix, Windows.
   2111 
   2112    .. versionadded:: 1.6
   2113 
   2114 
   2115 .. data:: P_DETACH
   2116           P_OVERLAY
   2117 
   2118    Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
   2119    functions.  These are less portable than those listed above. :const:`P_DETACH`
   2120    is similar to :const:`P_NOWAIT`, but the new process is detached from the
   2121    console of the calling process. If :const:`P_OVERLAY` is used, the current
   2122    process will be replaced; the :func:`spawn\*` function will not return.
   2123 
   2124    Availability: Windows.
   2125 
   2126    .. versionadded:: 1.6
   2127 
   2128 
   2129 .. function:: startfile(path[, operation])
   2130 
   2131    Start a file with its associated application.
   2132 
   2133    When *operation* is not specified or ``'open'``, this acts like double-clicking
   2134    the file in Windows Explorer, or giving the file name as an argument to the
   2135    :program:`start` command from the interactive command shell: the file is opened
   2136    with whatever application (if any) its extension is associated.
   2137 
   2138    When another *operation* is given, it must be a "command verb" that specifies
   2139    what should be done with the file. Common verbs documented by Microsoft are
   2140    ``'print'`` and  ``'edit'`` (to be used on files) as well as ``'explore'`` and
   2141    ``'find'`` (to be used on directories).
   2142 
   2143    :func:`startfile` returns as soon as the associated application is launched.
   2144    There is no option to wait for the application to close, and no way to retrieve
   2145    the application's exit status.  The *path* parameter is relative to the current
   2146    directory.  If you want to use an absolute path, make sure the first character
   2147    is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
   2148    doesn't work if it is.  Use the :func:`os.path.normpath` function to ensure that
   2149    the path is properly encoded for Win32.
   2150 
   2151    Availability: Windows.
   2152 
   2153    .. versionadded:: 2.0
   2154 
   2155    .. versionadded:: 2.5
   2156       The *operation* parameter.
   2157 
   2158 
   2159 .. function:: system(command)
   2160 
   2161    Execute the command (a string) in a subshell.  This is implemented by calling
   2162    the Standard C function :c:func:`system`, and has the same limitations.
   2163    Changes to :data:`sys.stdin`, etc. are not reflected in the environment of the
   2164    executed command.
   2165 
   2166    On Unix, the return value is the exit status of the process encoded in the
   2167    format specified for :func:`wait`.  Note that POSIX does not specify the meaning
   2168    of the return value of the C :c:func:`system` function, so the return value of
   2169    the Python function is system-dependent.
   2170 
   2171    On Windows, the return value is that returned by the system shell after running
   2172    *command*, given by the Windows environment variable :envvar:`COMSPEC`: on
   2173    :program:`command.com` systems (Windows 95, 98 and ME) this is always ``0``; on
   2174    :program:`cmd.exe` systems (Windows NT, 2000 and XP) this is the exit status of
   2175    the command run; on systems using a non-native shell, consult your shell
   2176    documentation.
   2177 
   2178    The :mod:`subprocess` module provides more powerful facilities for spawning new
   2179    processes and retrieving their results; using that module is preferable to using
   2180    this function.  See the
   2181    :ref:`subprocess-replacements` section in the :mod:`subprocess` documentation
   2182    for some helpful recipes.
   2183 
   2184    Availability: Unix, Windows.
   2185 
   2186 
   2187 .. function:: times()
   2188 
   2189    Return a 5-tuple of floating point numbers indicating accumulated (processor
   2190    or other) times, in seconds.  The items are: user time, system time,
   2191    children's user time, children's system time, and elapsed real time since a
   2192    fixed point in the past, in that order.  See the Unix manual page
   2193    :manpage:`times(2)` or the corresponding Windows Platform API documentation.
   2194    On Windows, only the first two items are filled, the others are zero.
   2195 
   2196    Availability: Unix, Windows
   2197 
   2198 
   2199 .. function:: wait()
   2200 
   2201    Wait for completion of a child process, and return a tuple containing its pid
   2202    and exit status indication: a 16-bit number, whose low byte is the signal number
   2203    that killed the process, and whose high byte is the exit status (if the signal
   2204    number is zero); the high bit of the low byte is set if a core file was
   2205    produced.
   2206 
   2207    Availability: Unix.
   2208 
   2209 
   2210 .. function:: waitpid(pid, options)
   2211 
   2212    The details of this function differ on Unix and Windows.
   2213 
   2214    On Unix: Wait for completion of a child process given by process id *pid*, and
   2215    return a tuple containing its process id and exit status indication (encoded as
   2216    for :func:`wait`).  The semantics of the call are affected by the value of the
   2217    integer *options*, which should be ``0`` for normal operation.
   2218 
   2219    If *pid* is greater than ``0``, :func:`waitpid` requests status information for
   2220    that specific process.  If *pid* is ``0``, the request is for the status of any
   2221    child in the process group of the current process.  If *pid* is ``-1``, the
   2222    request pertains to any child of the current process.  If *pid* is less than
   2223    ``-1``, status is requested for any process in the process group ``-pid`` (the
   2224    absolute value of *pid*).
   2225 
   2226    An :exc:`OSError` is raised with the value of errno when the syscall
   2227    returns -1.
   2228 
   2229    On Windows: Wait for completion of a process given by process handle *pid*, and
   2230    return a tuple containing *pid*, and its exit status shifted left by 8 bits
   2231    (shifting makes cross-platform use of the function easier). A *pid* less than or
   2232    equal to ``0`` has no special meaning on Windows, and raises an exception. The
   2233    value of integer *options* has no effect. *pid* can refer to any process whose
   2234    id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
   2235    functions called with :const:`P_NOWAIT` return suitable process handles.
   2236 
   2237 
   2238 .. function:: wait3(options)
   2239 
   2240    Similar to :func:`waitpid`, except no process id argument is given and a
   2241    3-element tuple containing the child's process id, exit status indication, and
   2242    resource usage information is returned.  Refer to :mod:`resource`.\
   2243    :func:`~resource.getrusage` for details on resource usage information.  The
   2244    option argument is the same as that provided to :func:`waitpid` and
   2245    :func:`wait4`.
   2246 
   2247    Availability: Unix.
   2248 
   2249    .. versionadded:: 2.5
   2250 
   2251 
   2252 .. function:: wait4(pid, options)
   2253 
   2254    Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
   2255    process id, exit status indication, and resource usage information is returned.
   2256    Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
   2257    resource usage information.  The arguments to :func:`wait4` are the same as
   2258    those provided to :func:`waitpid`.
   2259 
   2260    Availability: Unix.
   2261 
   2262    .. versionadded:: 2.5
   2263 
   2264 
   2265 .. data:: WNOHANG
   2266 
   2267    The option for :func:`waitpid` to return immediately if no child process status
   2268    is available immediately. The function returns ``(0, 0)`` in this case.
   2269 
   2270    Availability: Unix.
   2271 
   2272 
   2273 .. data:: WCONTINUED
   2274 
   2275    This option causes child processes to be reported if they have been continued
   2276    from a job control stop since their status was last reported.
   2277 
   2278    Availability: Some Unix systems.
   2279 
   2280    .. versionadded:: 2.3
   2281 
   2282 
   2283 .. data:: WUNTRACED
   2284 
   2285    This option causes child processes to be reported if they have been stopped but
   2286    their current state has not been reported since they were stopped.
   2287 
   2288    Availability: Unix.
   2289 
   2290    .. versionadded:: 2.3
   2291 
   2292 The following functions take a process status code as returned by
   2293 :func:`system`, :func:`wait`, or :func:`waitpid` as a parameter.  They may be
   2294 used to determine the disposition of a process.
   2295 
   2296 
   2297 .. function:: WCOREDUMP(status)
   2298 
   2299    Return ``True`` if a core dump was generated for the process, otherwise
   2300    return ``False``.
   2301 
   2302    Availability: Unix.
   2303 
   2304    .. versionadded:: 2.3
   2305 
   2306 
   2307 .. function:: WIFCONTINUED(status)
   2308 
   2309    Return ``True`` if the process has been continued from a job control stop,
   2310    otherwise return ``False``.
   2311 
   2312    Availability: Unix.
   2313 
   2314    .. versionadded:: 2.3
   2315 
   2316 
   2317 .. function:: WIFSTOPPED(status)
   2318 
   2319    Return ``True`` if the process has been stopped, otherwise return
   2320    ``False``.
   2321 
   2322    Availability: Unix.
   2323 
   2324 
   2325 .. function:: WIFSIGNALED(status)
   2326 
   2327    Return ``True`` if the process exited due to a signal, otherwise return
   2328    ``False``.
   2329 
   2330    Availability: Unix.
   2331 
   2332 
   2333 .. function:: WIFEXITED(status)
   2334 
   2335    Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
   2336    otherwise return ``False``.
   2337 
   2338    Availability: Unix.
   2339 
   2340 
   2341 .. function:: WEXITSTATUS(status)
   2342 
   2343    If ``WIFEXITED(status)`` is true, return the integer parameter to the
   2344    :manpage:`exit(2)` system call.  Otherwise, the return value is meaningless.
   2345 
   2346    Availability: Unix.
   2347 
   2348 
   2349 .. function:: WSTOPSIG(status)
   2350 
   2351    Return the signal which caused the process to stop.
   2352 
   2353    Availability: Unix.
   2354 
   2355 
   2356 .. function:: WTERMSIG(status)
   2357 
   2358    Return the signal which caused the process to exit.
   2359 
   2360    Availability: Unix.
   2361 
   2362 
   2363 .. _os-path:
   2364 
   2365 Miscellaneous System Information
   2366 --------------------------------
   2367 
   2368 
   2369 .. function:: confstr(name)
   2370 
   2371    Return string-valued system configuration values. *name* specifies the
   2372    configuration value to retrieve; it may be a string which is the name of a
   2373    defined system value; these names are specified in a number of standards (POSIX,
   2374    Unix 95, Unix 98, and others).  Some platforms define additional names as well.
   2375    The names known to the host operating system are given as the keys of the
   2376    ``confstr_names`` dictionary.  For configuration variables not included in that
   2377    mapping, passing an integer for *name* is also accepted.
   2378 
   2379    If the configuration value specified by *name* isn't defined, ``None`` is
   2380    returned.
   2381 
   2382    If *name* is a string and is not known, :exc:`ValueError` is raised.  If a
   2383    specific value for *name* is not supported by the host system, even if it is
   2384    included in ``confstr_names``, an :exc:`OSError` is raised with
   2385    :const:`errno.EINVAL` for the error number.
   2386 
   2387    Availability: Unix
   2388 
   2389 
   2390 .. data:: confstr_names
   2391 
   2392    Dictionary mapping names accepted by :func:`confstr` to the integer values
   2393    defined for those names by the host operating system. This can be used to
   2394    determine the set of names known to the system.
   2395 
   2396    Availability: Unix.
   2397 
   2398 
   2399 .. function:: getloadavg()
   2400 
   2401    Return the number of processes in the system run queue averaged over the last
   2402    1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
   2403    unobtainable.
   2404 
   2405    Availability: Unix.
   2406 
   2407    .. versionadded:: 2.3
   2408 
   2409 
   2410 .. function:: sysconf(name)
   2411 
   2412    Return integer-valued system configuration values. If the configuration value
   2413    specified by *name* isn't defined, ``-1`` is returned.  The comments regarding
   2414    the *name* parameter for :func:`confstr` apply here as well; the dictionary that
   2415    provides information on the known names is given by ``sysconf_names``.
   2416 
   2417    Availability: Unix.
   2418 
   2419 
   2420 .. data:: sysconf_names
   2421 
   2422    Dictionary mapping names accepted by :func:`sysconf` to the integer values
   2423    defined for those names by the host operating system. This can be used to
   2424    determine the set of names known to the system.
   2425 
   2426    Availability: Unix.
   2427 
   2428 The following data values are used to support path manipulation operations.  These
   2429 are defined for all platforms.
   2430 
   2431 Higher-level operations on pathnames are defined in the :mod:`os.path` module.
   2432 
   2433 
   2434 .. data:: curdir
   2435 
   2436    The constant string used by the operating system to refer to the current
   2437    directory. This is ``'.'`` for Windows and POSIX. Also available via
   2438    :mod:`os.path`.
   2439 
   2440 
   2441 .. data:: pardir
   2442 
   2443    The constant string used by the operating system to refer to the parent
   2444    directory. This is ``'..'`` for Windows and POSIX. Also available via
   2445    :mod:`os.path`.
   2446 
   2447 
   2448 .. data:: sep
   2449 
   2450    The character used by the operating system to separate pathname components.
   2451    This is ``'/'`` for POSIX and ``'\\'`` for Windows.  Note that knowing this
   2452    is not sufficient to be able to parse or concatenate pathnames --- use
   2453    :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
   2454    useful. Also available via :mod:`os.path`.
   2455 
   2456 
   2457 .. data:: altsep
   2458 
   2459    An alternative character used by the operating system to separate pathname
   2460    components, or ``None`` if only one separator character exists.  This is set to
   2461    ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
   2462    :mod:`os.path`.
   2463 
   2464 
   2465 .. data:: extsep
   2466 
   2467    The character which separates the base filename from the extension; for example,
   2468    the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
   2469 
   2470    .. versionadded:: 2.2
   2471 
   2472 
   2473 .. data:: pathsep
   2474 
   2475    The character conventionally used by the operating system to separate search
   2476    path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
   2477    Windows. Also available via :mod:`os.path`.
   2478 
   2479 
   2480 .. data:: defpath
   2481 
   2482    The default search path used by :func:`exec\*p\* <execl>` and
   2483    :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
   2484    key. Also available via :mod:`os.path`.
   2485 
   2486 
   2487 .. data:: linesep
   2488 
   2489    The string used to separate (or, rather, terminate) lines on the current
   2490    platform.  This may be a single character, such as ``'\n'`` for POSIX, or
   2491    multiple characters, for example, ``'\r\n'`` for Windows. Do not use
   2492    *os.linesep* as a line terminator when writing files opened in text mode (the
   2493    default); use a single ``'\n'`` instead, on all platforms.
   2494 
   2495 
   2496 .. data:: devnull
   2497 
   2498    The file path of the null device. For example: ``'/dev/null'`` for
   2499    POSIX, ``'nul'`` for Windows.  Also available via :mod:`os.path`.
   2500 
   2501    .. versionadded:: 2.4
   2502 
   2503 
   2504 .. _os-miscfunc:
   2505 
   2506 Miscellaneous Functions
   2507 -----------------------
   2508 
   2509 
   2510 .. function:: urandom(n)
   2511 
   2512    Return a string of *n* random bytes suitable for cryptographic use.
   2513 
   2514    This function returns random bytes from an OS-specific randomness source.  The
   2515    returned data should be unpredictable enough for cryptographic applications,
   2516    though its exact quality depends on the OS implementation.  On a UNIX-like
   2517    system this will query ``/dev/urandom``, and on Windows it will use
   2518    ``CryptGenRandom()``.  If a randomness source is not found,
   2519    :exc:`NotImplementedError` will be raised.
   2520 
   2521    For an easy-to-use interface to the random number generator
   2522    provided by your platform, please see :class:`random.SystemRandom`.
   2523 
   2524    .. versionadded:: 2.4
   2525