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