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