blob: e185e479ce54cb74f30f46f500a50b08ec1e1680 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`os` --- Miscellaneous operating system interfaces
2=======================================================
3
4.. module:: os
5 :synopsis: Miscellaneous operating system interfaces.
6
7
Christian Heimesa62da1d2008-01-12 19:39:10 +00008This module provides a portable way of using operating system dependent
9functionality. If you just want to read or write a file see :func:`open`, if
10you want to manipulate paths, see the :mod:`os.path` module, and if you want to
11read all the lines in all the files on the command line see the :mod:`fileinput`
12module. For creating temporary files and directories see the :mod:`tempfile`
13module, and for high-level file and directory handling see the :mod:`shutil`
14module.
Georg Brandl116aa622007-08-15 14:28:22 +000015
Benjamin Peterson1baf4652009-12-31 03:11:23 +000016Notes on the availability of these functions:
Georg Brandl116aa622007-08-15 14:28:22 +000017
Benjamin Peterson1baf4652009-12-31 03:11:23 +000018* 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 Brandl116aa622007-08-15 14:28:22 +000023
Benjamin Peterson1baf4652009-12-31 03:11:23 +000024* 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 Brandl116aa622007-08-15 14:28:22 +000027
Benjamin Peterson1baf4652009-12-31 03:11:23 +000028* 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 Brandl76e55382008-10-08 16:34:57 +000031
Benjamin Peterson1baf4652009-12-31 03:11:23 +000032* 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 Petersonf650e462010-05-06 23:03:05 +000039.. Availability notes get their own line and occur at the end of the function
40.. documentation.
41
Georg Brandlc575c902008-09-13 17:46:05 +000042.. note::
43
Christian Heimesa62da1d2008-01-12 19:39:10 +000044 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 Brandl116aa622007-08-15 14:28:22 +000047
Georg Brandl116aa622007-08-15 14:28:22 +000048.. exception:: error
49
Christian Heimesa62da1d2008-01-12 19:39:10 +000050 An alias for the built-in :exc:`OSError` exception.
Georg Brandl116aa622007-08-15 14:28:22 +000051
52
53.. data:: name
54
Benjamin Peterson1baf4652009-12-31 03:11:23 +000055 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 Brandl116aa622007-08-15 14:28:22 +000058
Antoine Pitroua83cdaa2011-07-09 15:54:23 +020059 .. 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 Brandl116aa622007-08-15 14:28:22 +000066
Martin v. Löwis011e8422009-05-05 04:43:17 +000067.. _os-filenames:
68
69File Names, Command Line Arguments, and Environment Variables
70-------------------------------------------------------------
71
Georg Brandl67b21b72010-08-17 15:07:14 +000072In Python, file names, command line arguments, and environment variables are
73represented using the string type. On some systems, decoding these strings to
74and from bytes is necessary before passing them to the operating system. Python
75uses the file system encoding to perform this conversion (see
76:func:`sys.getfilesystemencoding`).
Martin v. Löwis011e8422009-05-05 04:43:17 +000077
78.. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +000079 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öwis011e8422009-05-05 04:43:17 +000083
84
Georg Brandl67b21b72010-08-17 15:07:14 +000085The file system encoding must guarantee to successfully decode all bytes
86below 128. If the file system encoding fails to provide this guarantee, API
87functions may raise UnicodeErrors.
Martin v. Löwis011e8422009-05-05 04:43:17 +000088
89
Georg Brandl116aa622007-08-15 14:28:22 +000090.. _os-procinfo:
91
92Process Parameters
93------------------
94
95These functions and data items provide information and operate on the current
96process 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 Stinner84ae1182010-05-06 22:05:07 +0000114 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 Brandl116aa622007-08-15 14:28:22 +0000118 .. 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 Brandlc575c902008-09-13 17:46:05 +0000125 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
126 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000127 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000128
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 Brandl9afde1c2007-11-01 20:32:30 +0000133 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000134 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000135 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 Brandl116aa622007-08-15 14:28:22 +0000138
Victor Stinner84ae1182010-05-06 22:05:07 +0000139.. 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 Stinnerb745a742010-05-18 17:17:23 +0000146 :data:`environb` is only available if :data:`supports_bytes_environ` is
147 True.
Victor Stinner84ae1182010-05-06 22:05:07 +0000148
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000149 .. versionadded:: 3.2
150
Victor Stinner84ae1182010-05-06 22:05:07 +0000151
Georg Brandl116aa622007-08-15 14:28:22 +0000152.. function:: chdir(path)
153 fchdir(fd)
154 getcwd()
155 :noindex:
156
157 These functions are described in :ref:`os-file-dir`.
158
159
Victor Stinnere8d51452010-08-19 01:05:19 +0000160.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000161
Victor Stinnere8d51452010-08-19 01:05:19 +0000162 Encode *filename* to the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000163 error handler, or ``'strict'`` on Windows; return :class:`bytes` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000164
Antoine Pitroua305ca72010-09-25 22:12:00 +0000165 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000166
167 .. versionadded:: 3.2
168
169
170.. function:: fsdecode(filename)
171
172 Decode *filename* from the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000173 error handler, or ``'strict'`` on Windows; return :class:`str` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000174
175 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000176
177 .. versionadded:: 3.2
178
179
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000180.. 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 Brandl116aa622007-08-15 14:28:22 +0000191.. function:: ctermid()
192
193 Return the filename corresponding to the controlling terminal of the process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000194
Georg Brandl116aa622007-08-15 14:28:22 +0000195 Availability: Unix.
196
197
198.. function:: getegid()
199
200 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000201 "set id" bit on the file being executed in the current process.
202
203 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000204
205
206.. function:: geteuid()
207
208 .. index:: single: user; effective id
209
Benjamin Petersonf650e462010-05-06 23:03:05 +0000210 Return the current process's effective user id.
211
212 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000213
214
215.. function:: getgid()
216
217 .. index:: single: process; group
218
Benjamin Petersonf650e462010-05-06 23:03:05 +0000219 Return the real group id of the current process.
220
221 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000222
223
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200224.. function:: getgrouplist(user, group)
225
226 Return list of group ids that *user* belongs to. If *group* is not in the
227 list, it is included; typically, *group* is specified as the group ID
228 field from the password record for *user*.
229
230 Availability: Unix.
231
232 .. versionadded:: 3.3
233
234
Georg Brandl116aa622007-08-15 14:28:22 +0000235.. function:: getgroups()
236
237 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000238
Georg Brandl116aa622007-08-15 14:28:22 +0000239 Availability: Unix.
240
Ned Deily2e209682012-04-30 11:14:02 -0700241 .. note:: On Mac OS X, :func:`getgroups` behavior differs somewhat from
242 other Unix platforms. If the Python interpreter was built with a
243 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
244 the list of effective group ids associated with the current user process;
245 this list is limited to a system-defined number of entries, typically 16,
246 and may be modified by calls to :func:`setgroups` if suitably privileged.
247 If built with a deployment target greater than :const:`10.5`,
248 :func:`getgroups` returns the current group access list for the user
249 associated with the effective user id of the process; the group access
250 list may change over the lifetime of the process, it is not affected by
251 calls to :func:`setgroups`, and its length is not limited to 16. The
252 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
253 obtained with :func:`sysconfig.get_config_var`.
254
Georg Brandl116aa622007-08-15 14:28:22 +0000255
Antoine Pitroub7572f02009-12-02 20:46:48 +0000256.. function:: initgroups(username, gid)
257
258 Call the system initgroups() to initialize the group access list with all of
259 the groups of which the specified username is a member, plus the specified
Benjamin Petersonf650e462010-05-06 23:03:05 +0000260 group id.
261
262 Availability: Unix.
Antoine Pitroub7572f02009-12-02 20:46:48 +0000263
264 .. versionadded:: 3.2
265
266
Georg Brandl116aa622007-08-15 14:28:22 +0000267.. function:: getlogin()
268
269 Return the name of the user logged in on the controlling terminal of the
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000270 process. For most purposes, it is more useful to use the environment variables
271 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, or
Georg Brandl116aa622007-08-15 14:28:22 +0000272 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently
Benjamin Petersonf650e462010-05-06 23:03:05 +0000273 effective user id.
274
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000275 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000276
277
278.. function:: getpgid(pid)
279
280 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000281 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000282
Benjamin Petersonf650e462010-05-06 23:03:05 +0000283 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000284
285.. function:: getpgrp()
286
287 .. index:: single: process; group
288
Benjamin Petersonf650e462010-05-06 23:03:05 +0000289 Return the id of the current process group.
290
291 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000292
293
294.. function:: getpid()
295
296 .. index:: single: process; id
297
Benjamin Petersonf650e462010-05-06 23:03:05 +0000298 Return the current process id.
299
300 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000301
302
303.. function:: getppid()
304
305 .. index:: single: process; id of parent
306
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000307 Return the parent's process id. When the parent process has exited, on Unix
308 the id returned is the one of the init process (1), on Windows it is still
309 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000310
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000311 Availability: Unix, Windows
Georg Brandl116aa622007-08-15 14:28:22 +0000312
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000313 .. versionchanged:: 3.2
314 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000315
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000316.. function:: getpriority(which, who)
317
318 .. index:: single: process; scheduling priority
319
320 Get program scheduling priority. The value *which* is one of
321 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
322 is interpreted relative to *which* (a process identifier for
323 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
324 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
325 (respectively) the calling process, the process group of the calling process,
326 or the real user ID of the calling process.
327
328 Availability: Unix
329
330 .. versionadded:: 3.3
331
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000332.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000333
334 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000335 real, effective, and saved user ids.
336
337 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000338
Georg Brandl1b83a452009-11-28 11:12:26 +0000339 .. versionadded:: 3.2
340
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000341
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000342.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000343
344 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000345 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000346
347 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000348
Georg Brandl1b83a452009-11-28 11:12:26 +0000349 .. versionadded:: 3.2
350
Georg Brandl116aa622007-08-15 14:28:22 +0000351
352.. function:: getuid()
353
354 .. index:: single: user; id
355
Benjamin Petersonf650e462010-05-06 23:03:05 +0000356 Return the current process's user id.
357
358 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000359
360
Georg Brandl18244152009-09-02 20:34:52 +0000361.. function:: getenv(key, default=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000362
Georg Brandl18244152009-09-02 20:34:52 +0000363 Return the value of the environment variable *key* if it exists, or
Victor Stinner84ae1182010-05-06 22:05:07 +0000364 *default* if it doesn't. *key*, *default* and the result are str.
Victor Stinner84ae1182010-05-06 22:05:07 +0000365
366 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
367 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
368 would like to use a different encoding.
369
Benjamin Petersonf650e462010-05-06 23:03:05 +0000370 Availability: most flavors of Unix, Windows.
371
Victor Stinner84ae1182010-05-06 22:05:07 +0000372
373.. function:: getenvb(key, default=None)
374
375 Return the value of the environment variable *key* if it exists, or
376 *default* if it doesn't. *key*, *default* and the result are bytes.
Benjamin Peterson0d6fe512010-05-06 22:13:11 +0000377
Victor Stinner84ae1182010-05-06 22:05:07 +0000378 Availability: most flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000379
Benjamin Peterson0d6fe512010-05-06 22:13:11 +0000380 .. versionadded:: 3.2
381
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000382.. data:: PRIO_PROCESS
383 PRIO_PGRP
384 PRIO_USER
385
386 Parameters for :func:`getpriority` and :func:`setpriority` functions.
387
388 Availability: Unix.
389
390 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +0000391
Georg Brandl18244152009-09-02 20:34:52 +0000392.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000393
394 .. index:: single: environment variables; setting
395
Georg Brandl18244152009-09-02 20:34:52 +0000396 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000397 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000398 :func:`popen` or :func:`fork` and :func:`execv`.
399
400 Availability: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000401
402 .. note::
403
Georg Brandlc575c902008-09-13 17:46:05 +0000404 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
405 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000406
407 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
408 automatically translated into corresponding calls to :func:`putenv`; however,
409 calls to :func:`putenv` don't update ``os.environ``, so it is actually
410 preferable to assign to items of ``os.environ``.
411
412
413.. function:: setegid(egid)
414
Benjamin Petersonf650e462010-05-06 23:03:05 +0000415 Set the current process's effective group id.
416
417 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000418
419
420.. function:: seteuid(euid)
421
Benjamin Petersonf650e462010-05-06 23:03:05 +0000422 Set the current process's effective user id.
423
424 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000425
426
427.. function:: setgid(gid)
428
Benjamin Petersonf650e462010-05-06 23:03:05 +0000429 Set the current process' group id.
430
431 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000432
433
434.. function:: setgroups(groups)
435
436 Set the list of supplemental group ids associated with the current process to
437 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000438 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000439
Georg Brandl116aa622007-08-15 14:28:22 +0000440 Availability: Unix.
441
Ned Deily2e209682012-04-30 11:14:02 -0700442 .. note:: On Mac OS X, the length of *groups* may not exceed the
443 system-defined maximum number of effective group ids, typically 16.
444 See the documentation for :func:`getgroups` for cases where it may not
445 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000446
447.. function:: setpgrp()
448
Georg Brandl60203b42010-10-06 10:11:56 +0000449 Call the system call :c:func:`setpgrp` or :c:func:`setpgrp(0, 0)` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000450 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000451
Georg Brandl116aa622007-08-15 14:28:22 +0000452 Availability: Unix.
453
454
455.. function:: setpgid(pid, pgrp)
456
Georg Brandl60203b42010-10-06 10:11:56 +0000457 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000458 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000459 for the semantics.
460
461 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000462
463
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000464.. function:: setpriority(which, who, priority)
465
466 .. index:: single: process; scheduling priority
467
468 Set program scheduling priority. The value *which* is one of
469 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
470 is interpreted relative to *which* (a process identifier for
471 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
472 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
473 (respectively) the calling process, the process group of the calling process,
474 or the real user ID of the calling process.
475 *priority* is a value in the range -20 to 19. The default priority is 0;
476 lower priorities cause more favorable scheduling.
477
478 Availability: Unix
479
480 .. versionadded:: 3.3
481
482
Georg Brandl116aa622007-08-15 14:28:22 +0000483.. function:: setregid(rgid, egid)
484
Benjamin Petersonf650e462010-05-06 23:03:05 +0000485 Set the current process's real and effective group ids.
486
487 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000488
Georg Brandl1b83a452009-11-28 11:12:26 +0000489
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000490.. function:: setresgid(rgid, egid, sgid)
491
492 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000493
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000494 Availability: Unix.
495
Georg Brandl1b83a452009-11-28 11:12:26 +0000496 .. versionadded:: 3.2
497
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000498
499.. function:: setresuid(ruid, euid, suid)
500
501 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000502
Georg Brandl6faee4e2010-09-21 14:48:28 +0000503 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000504
Georg Brandl1b83a452009-11-28 11:12:26 +0000505 .. versionadded:: 3.2
506
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000507
508.. function:: setreuid(ruid, euid)
509
Benjamin Petersonf650e462010-05-06 23:03:05 +0000510 Set the current process's real and effective user ids.
511
512 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000513
Georg Brandl116aa622007-08-15 14:28:22 +0000514
515.. function:: getsid(pid)
516
Georg Brandl60203b42010-10-06 10:11:56 +0000517 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000518
Georg Brandl116aa622007-08-15 14:28:22 +0000519 Availability: Unix.
520
Georg Brandl116aa622007-08-15 14:28:22 +0000521
522.. function:: setsid()
523
Georg Brandl60203b42010-10-06 10:11:56 +0000524 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000525
Georg Brandl116aa622007-08-15 14:28:22 +0000526 Availability: Unix.
527
528
529.. function:: setuid(uid)
530
531 .. index:: single: user; id, setting
532
Benjamin Petersonf650e462010-05-06 23:03:05 +0000533 Set the current process's user id.
534
535 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000536
Georg Brandl116aa622007-08-15 14:28:22 +0000537
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000538.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000539.. function:: strerror(code)
540
541 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000542 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000543 error number, :exc:`ValueError` is raised.
544
545 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000546
547
Victor Stinnerb745a742010-05-18 17:17:23 +0000548.. data:: supports_bytes_environ
549
550 True if the native OS type of the environment is bytes (eg. False on
551 Windows).
552
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000553 .. versionadded:: 3.2
554
Victor Stinnerb745a742010-05-18 17:17:23 +0000555
Georg Brandl116aa622007-08-15 14:28:22 +0000556.. function:: umask(mask)
557
Benjamin Petersonf650e462010-05-06 23:03:05 +0000558 Set the current numeric umask and return the previous umask.
559
560 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562
563.. function:: uname()
564
565 .. index::
566 single: gethostname() (in module socket)
567 single: gethostbyaddr() (in module socket)
568
569 Return a 5-tuple containing information identifying the current operating
570 system. The tuple contains 5 strings: ``(sysname, nodename, release, version,
571 machine)``. Some systems truncate the nodename to 8 characters or to the
572 leading component; a better way to get the hostname is
573 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000574 ``socket.gethostbyaddr(socket.gethostname())``.
575
576 Availability: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
578
Georg Brandl18244152009-09-02 20:34:52 +0000579.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000580
581 .. index:: single: environment variables; deleting
582
Georg Brandl18244152009-09-02 20:34:52 +0000583 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000584 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000585 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000586
587 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
588 automatically translated into a corresponding call to :func:`unsetenv`; however,
589 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
590 preferable to delete items of ``os.environ``.
591
Benjamin Petersonf650e462010-05-06 23:03:05 +0000592 Availability: most flavors of Unix, Windows.
593
Georg Brandl116aa622007-08-15 14:28:22 +0000594
595.. _os-newstreams:
596
597File Object Creation
598--------------------
599
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000600These functions create new :term:`file objects <file object>`. (See also :func:`open`.)
Georg Brandl116aa622007-08-15 14:28:22 +0000601
602
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300603.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000604
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300605 Return an open file object connected to the file descriptor *fd*.
606 This is an alias of :func:`open` and accepts the same arguments.
607 The only difference is that the first argument of :func:`fdopen`
608 must always be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000609
Georg Brandl116aa622007-08-15 14:28:22 +0000610
Georg Brandl116aa622007-08-15 14:28:22 +0000611.. _os-fd-ops:
612
613File Descriptor Operations
614--------------------------
615
616These functions operate on I/O streams referenced using file descriptors.
617
618File descriptors are small integers corresponding to a file that has been opened
619by the current process. For example, standard input is usually file descriptor
6200, standard output is 1, and standard error is 2. Further files opened by a
621process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
622is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
623by file descriptors.
624
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000625The :meth:`~file.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000626associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000627descriptor directly will bypass the file object methods, ignoring aspects such
628as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000629
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000630
Georg Brandl116aa622007-08-15 14:28:22 +0000631.. function:: close(fd)
632
Benjamin Petersonf650e462010-05-06 23:03:05 +0000633 Close file descriptor *fd*.
634
635 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000636
637 .. note::
638
639 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000640 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000641 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000642 :func:`fdopen`, use its :meth:`~file.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000643
644
Christian Heimesfdab48e2008-01-20 09:06:41 +0000645.. function:: closerange(fd_low, fd_high)
646
647 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200648 ignoring errors. Equivalent to (but much faster than)::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000649
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000650 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000651 try:
652 os.close(fd)
653 except OSError:
654 pass
655
Benjamin Petersonf650e462010-05-06 23:03:05 +0000656 Availability: Unix, Windows.
657
Christian Heimesfdab48e2008-01-20 09:06:41 +0000658
Georg Brandl81f11302007-12-21 08:45:42 +0000659.. function:: device_encoding(fd)
660
661 Return a string describing the encoding of the device associated with *fd*
662 if it is connected to a terminal; else return :const:`None`.
663
664
Georg Brandl116aa622007-08-15 14:28:22 +0000665.. function:: dup(fd)
666
Benjamin Petersonf650e462010-05-06 23:03:05 +0000667 Return a duplicate of file descriptor *fd*.
668
669 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000670
671
672.. function:: dup2(fd, fd2)
673
674 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000675
Georg Brandlc575c902008-09-13 17:46:05 +0000676 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000677
678
Christian Heimes4e30a842007-11-30 22:12:06 +0000679.. function:: fchmod(fd, mode)
680
681 Change the mode of the file given by *fd* to the numeric *mode*. See the docs
Benjamin Petersonf650e462010-05-06 23:03:05 +0000682 for :func:`chmod` for possible values of *mode*.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700683 Equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000684
685 Availability: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000686
687
688.. function:: fchown(fd, uid, gid)
689
690 Change the owner and group id of the file given by *fd* to the numeric *uid*
Larry Hastings9cf065c2012-06-22 16:30:09 -0700691 and *gid*. To leave one of the ids unchanged, set it to -1. Equivalent
692 to ``os.chown(fd, uid, gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000693
Christian Heimes4e30a842007-11-30 22:12:06 +0000694 Availability: Unix.
695
696
Georg Brandl116aa622007-08-15 14:28:22 +0000697.. function:: fdatasync(fd)
698
699 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000700 metadata.
701
702 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000703
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000704 .. note::
705 This function is not available on MacOS.
706
Georg Brandl116aa622007-08-15 14:28:22 +0000707
708.. function:: fpathconf(fd, name)
709
710 Return system configuration information relevant to an open file. *name*
711 specifies the configuration value to retrieve; it may be a string which is the
712 name of a defined system value; these names are specified in a number of
713 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
714 additional names as well. The names known to the host operating system are
715 given in the ``pathconf_names`` dictionary. For configuration variables not
716 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000717
718 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
719 specific value for *name* is not supported by the host system, even if it is
720 included in ``pathconf_names``, an :exc:`OSError` is raised with
721 :const:`errno.EINVAL` for the error number.
722
Benjamin Petersonf650e462010-05-06 23:03:05 +0000723 Availability: Unix.
724
Georg Brandl116aa622007-08-15 14:28:22 +0000725
Victor Stinner4195b5c2012-02-08 23:03:19 +0100726.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000727
R. David Murray7b1aae92011-01-24 19:34:58 +0000728 Return status for file descriptor *fd*, like :func:`~os.stat`.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000729
730 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000731
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200732
Georg Brandl116aa622007-08-15 14:28:22 +0000733.. function:: fstatvfs(fd)
734
735 Return information about the filesystem containing the file associated with file
Benjamin Petersonf650e462010-05-06 23:03:05 +0000736 descriptor *fd*, like :func:`statvfs`.
737
738 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000739
740
741.. function:: fsync(fd)
742
743 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000744 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000745
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000746 If you're starting with a buffered Python :term:`file object` *f*, first do
747 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
748 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000749
750 Availability: Unix, and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000751
752
753.. function:: ftruncate(fd, length)
754
755 Truncate the file corresponding to file descriptor *fd*, so that it is at most
Benjamin Petersonf650e462010-05-06 23:03:05 +0000756 *length* bytes in size.
757
758 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000759
760
761.. function:: isatty(fd)
762
763 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000764 tty(-like) device, else ``False``.
765
766 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000767
768
Ross Lagerwall7807c352011-03-17 20:20:30 +0200769.. function:: lockf(fd, cmd, len)
770
771 Apply, test or remove a POSIX lock on an open file descriptor.
772 *fd* is an open file descriptor.
773 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
774 :data:`F_ULOCK` or :data:`F_TEST`.
775 *len* specifies the section of the file to lock.
776
777 Availability: Unix.
778
779 .. versionadded:: 3.3
780
781
782.. data:: F_LOCK
783 F_TLOCK
784 F_ULOCK
785 F_TEST
786
787 Flags that specify what action :func:`lockf` will take.
788
789 Availability: Unix.
790
791 .. versionadded:: 3.3
792
Georg Brandl116aa622007-08-15 14:28:22 +0000793.. function:: lseek(fd, pos, how)
794
Christian Heimesfaf2f632008-01-06 16:59:19 +0000795 Set the current position of file descriptor *fd* to position *pos*, modified
796 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
797 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
798 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100799 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000800
801 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000802
803
Georg Brandl8569e582010-05-19 20:57:08 +0000804.. data:: SEEK_SET
805 SEEK_CUR
806 SEEK_END
807
808 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
809 respectively. Availability: Windows, Unix.
810
Jesus Cea94363612012-06-22 18:32:07 +0200811 .. versionadded:: 3.3
812 Some operating systems could support additional values, like
813 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
814
Georg Brandl8569e582010-05-19 20:57:08 +0000815
Larry Hastings9cf065c2012-06-22 16:30:09 -0700816.. function:: open(file, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000817
Georg Brandlf4a41232008-05-26 17:55:52 +0000818 Open the file *file* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700819 its mode according to *mode*. When computing *mode*, the current umask value
820 is first masked out. Return the file descriptor for the newly opened file.
Georg Brandl116aa622007-08-15 14:28:22 +0000821
822 For a description of the flag and mode values, see the C run-time documentation;
823 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Georg Brandl8569e582010-05-19 20:57:08 +0000824 this module too (see :ref:`open-constants`). In particular, on Windows adding
825 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000826
Georg Brandl50c40002012-06-24 11:45:20 +0200827 This function can support :ref:`paths relative to directory descriptors
828 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700829
Benjamin Petersonf650e462010-05-06 23:03:05 +0000830 Availability: Unix, Windows.
831
Georg Brandl116aa622007-08-15 14:28:22 +0000832 .. note::
833
Georg Brandl502d9a52009-07-26 15:02:41 +0000834 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000835 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bc2010-07-13 14:47:01 +0000836 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000837 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000838
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000839 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700840 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000841
842
Georg Brandl116aa622007-08-15 14:28:22 +0000843.. function:: openpty()
844
845 .. index:: module: pty
846
847 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
848 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Benjamin Petersonf650e462010-05-06 23:03:05 +0000849 approach, use the :mod:`pty` module.
850
851 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000852
853
854.. function:: pipe()
855
856 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Benjamin Petersonf650e462010-05-06 23:03:05 +0000857 and writing, respectively.
858
859 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000860
861
Charles-François Natali368f34b2011-06-06 19:49:47 +0200862.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200863
864 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +0200865 *flags* can be constructed by ORing together one or more of these values:
866 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200867 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
868 respectively.
869
870 Availability: some flavors of Unix.
871
872 .. versionadded:: 3.3
873
874
Ross Lagerwall7807c352011-03-17 20:20:30 +0200875.. function:: posix_fallocate(fd, offset, len)
876
877 Ensures that enough disk space is allocated for the file specified by *fd*
878 starting from *offset* and continuing for *len* bytes.
879
880 Availability: Unix.
881
882 .. versionadded:: 3.3
883
884
885.. function:: posix_fadvise(fd, offset, len, advice)
886
887 Announces an intention to access data in a specific pattern thus allowing
888 the kernel to make optimizations.
889 The advice applies to the region of the file specified by *fd* starting at
890 *offset* and continuing for *len* bytes.
891 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
892 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
893 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
894
895 Availability: Unix.
896
897 .. versionadded:: 3.3
898
899
900.. data:: POSIX_FADV_NORMAL
901 POSIX_FADV_SEQUENTIAL
902 POSIX_FADV_RANDOM
903 POSIX_FADV_NOREUSE
904 POSIX_FADV_WILLNEED
905 POSIX_FADV_DONTNEED
906
907 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
908 the access pattern that is likely to be used.
909
910 Availability: Unix.
911
912 .. versionadded:: 3.3
913
914
915.. function:: pread(fd, buffersize, offset)
916
917 Read from a file descriptor, *fd*, at a position of *offset*. It will read up
918 to *buffersize* number of bytes. The file offset remains unchanged.
919
920 Availability: Unix.
921
922 .. versionadded:: 3.3
923
924
925.. function:: pwrite(fd, string, offset)
926
927 Write *string* to a file descriptor, *fd*, from *offset*, leaving the file
928 offset unchanged.
929
930 Availability: Unix.
931
932 .. versionadded:: 3.3
933
934
Georg Brandl116aa622007-08-15 14:28:22 +0000935.. function:: read(fd, n)
936
Georg Brandlb90be692009-07-29 16:14:16 +0000937 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +0000938 bytes read. If the end of the file referred to by *fd* has been reached, an
Benjamin Petersonf650e462010-05-06 23:03:05 +0000939 empty bytes object is returned.
940
941 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000942
943 .. note::
944
945 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000946 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a "file object"
Georg Brandl116aa622007-08-15 14:28:22 +0000947 returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000948 :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
949 :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000950
951
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000952.. function:: sendfile(out, in, offset, nbytes)
953 sendfile(out, in, offset, nbytes, headers=None, trailers=None, flags=0)
954
955 Copy *nbytes* bytes from file descriptor *in* to file descriptor *out*
956 starting at *offset*.
957 Return the number of bytes sent. When EOF is reached return 0.
958
959 The first function notation is supported by all platforms that define
960 :func:`sendfile`.
961
962 On Linux, if *offset* is given as ``None``, the bytes are read from the
963 current position of *in* and the position of *in* is updated.
964
965 The second case may be used on Mac OS X and FreeBSD where *headers* and
966 *trailers* are arbitrary sequences of buffers that are written before and
967 after the data from *in* is written. It returns the same as the first case.
968
969 On Mac OS X and FreeBSD, a value of 0 for *nbytes* specifies to send until
970 the end of *in* is reached.
971
972 On Solaris, *out* may be the file descriptor of a regular file or the file
973 descriptor of a socket. On all other platforms, *out* must be the file
974 descriptor of an open socket.
975
976 Availability: Unix.
977
978 .. versionadded:: 3.3
979
980
981.. data:: SF_NODISKIO
982 SF_MNOWAIT
983 SF_SYNC
984
985 Parameters to the :func:`sendfile` function, if the implementation supports
986 them.
987
988 Availability: Unix.
989
990 .. versionadded:: 3.3
991
992
Ross Lagerwall7807c352011-03-17 20:20:30 +0200993.. function:: readv(fd, buffers)
994
995 Read from a file descriptor into a number of writable buffers. *buffers* is
996 an arbitrary sequence of writable buffers. Returns the total number of bytes
997 read.
998
999 Availability: Unix.
1000
1001 .. versionadded:: 3.3
1002
1003
Georg Brandl116aa622007-08-15 14:28:22 +00001004.. function:: tcgetpgrp(fd)
1005
1006 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001007 file descriptor as returned by :func:`os.open`).
1008
1009 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001010
1011
1012.. function:: tcsetpgrp(fd, pg)
1013
1014 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001015 descriptor as returned by :func:`os.open`) to *pg*.
1016
1017 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001018
1019
1020.. function:: ttyname(fd)
1021
1022 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001023 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001024 exception is raised.
1025
1026 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001027
1028
1029.. function:: write(fd, str)
1030
Georg Brandlb90be692009-07-29 16:14:16 +00001031 Write the bytestring in *str* to file descriptor *fd*. Return the number of
Benjamin Petersonf650e462010-05-06 23:03:05 +00001032 bytes actually written.
1033
1034 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001035
1036 .. note::
1037
1038 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001039 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001040 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001041 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1042 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001043
Georg Brandl8569e582010-05-19 20:57:08 +00001044
Ross Lagerwall7807c352011-03-17 20:20:30 +02001045.. function:: writev(fd, buffers)
1046
Ezio Melottif1064492011-10-19 11:06:26 +03001047 Write the contents of *buffers* to file descriptor *fd*, where *buffers*
Ross Lagerwall7807c352011-03-17 20:20:30 +02001048 is an arbitrary sequence of buffers.
1049 Returns the total number of bytes written.
1050
1051 Availability: Unix.
1052
1053 .. versionadded:: 3.3
1054
1055
Georg Brandl8569e582010-05-19 20:57:08 +00001056.. _open-constants:
1057
1058``open()`` flag constants
1059~~~~~~~~~~~~~~~~~~~~~~~~~
1060
Georg Brandlaf265f42008-12-07 15:06:20 +00001061The following constants are options for the *flags* parameter to the
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001062:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandlaf265f42008-12-07 15:06:20 +00001063``|``. Some of them are not available on all platforms. For descriptions of
1064their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmanneb097fc2009-09-20 20:56:56 +00001065or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001066
1067
1068.. data:: O_RDONLY
1069 O_WRONLY
1070 O_RDWR
1071 O_APPEND
1072 O_CREAT
1073 O_EXCL
1074 O_TRUNC
1075
Georg Brandlaf265f42008-12-07 15:06:20 +00001076 These constants are available on Unix and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001077
1078
1079.. data:: O_DSYNC
1080 O_RSYNC
1081 O_SYNC
1082 O_NDELAY
1083 O_NONBLOCK
1084 O_NOCTTY
1085 O_SHLOCK
1086 O_EXLOCK
Charles-François Natali1e045b12011-05-22 20:42:32 +02001087 O_CLOEXEC
Georg Brandl116aa622007-08-15 14:28:22 +00001088
Georg Brandlaf265f42008-12-07 15:06:20 +00001089 These constants are only available on Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001090
Victor Stinnere3455c02011-10-20 00:46:21 +02001091 .. versionchanged:: 3.3
1092 Add :data:`O_CLOEXEC` constant.
Georg Brandl116aa622007-08-15 14:28:22 +00001093
1094.. data:: O_BINARY
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001095 O_NOINHERIT
Georg Brandl116aa622007-08-15 14:28:22 +00001096 O_SHORT_LIVED
1097 O_TEMPORARY
1098 O_RANDOM
1099 O_SEQUENTIAL
1100 O_TEXT
1101
Georg Brandlaf265f42008-12-07 15:06:20 +00001102 These constants are only available on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001103
1104
Alexandre Vassalottibee32532008-05-16 18:15:12 +00001105.. data:: O_ASYNC
1106 O_DIRECT
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001107 O_DIRECTORY
1108 O_NOFOLLOW
1109 O_NOATIME
1110
Georg Brandlaf265f42008-12-07 15:06:20 +00001111 These constants are GNU extensions and not present if they are not defined by
1112 the C library.
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001113
1114
Victor Stinner8b905bd2011-10-25 13:34:04 +02001115.. data:: RTLD_LAZY
1116 RTLD_NOW
1117 RTLD_GLOBAL
1118 RTLD_LOCAL
1119 RTLD_NODELETE
1120 RTLD_NOLOAD
1121 RTLD_DEEPBIND
1122
1123 See the Unix manual page :manpage:`dlopen(3)`.
1124
1125 .. versionadded:: 3.3
1126
1127
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001128.. _terminal-size:
1129
1130Querying the size of a terminal
1131~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1132
1133.. versionadded:: 3.3
1134
1135.. function:: get_terminal_size(fd=STDOUT_FILENO)
1136
1137 Return the size of the terminal window as ``(columns, lines)``,
1138 tuple of type :class:`terminal_size`.
1139
1140 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1141 output) specifies which file descriptor should be queried.
1142
1143 If the file descriptor is not connected to a terminal, an :exc:`OSError`
1144 is thrown.
1145
1146 :func:`shutil.get_terminal_size` is the high-level function which
1147 should normally be used, ``os.get_terminal_size`` is the low-level
1148 implementation.
1149
1150 Availability: Unix, Windows.
1151
1152.. class:: terminal_size(tuple)
1153
1154 A tuple of ``(columns, lines)`` for holding terminal window size.
1155
1156 .. attribute:: columns
1157
1158 Width of the terminal window in characters.
1159
1160 .. attribute:: lines
1161
1162 Height of the terminal window in characters.
1163
1164
Georg Brandl116aa622007-08-15 14:28:22 +00001165.. _os-file-dir:
1166
1167Files and Directories
1168---------------------
1169
Georg Brandl50c40002012-06-24 11:45:20 +02001170On some Unix platforms, many of these functions support one or more of these
1171features:
1172
1173.. _path_fd:
1174
1175* For some functions, the *path* argument can be not only a string giving a path
1176 name, but also a file descriptor. The function will then operate on the file
1177 referred to by the descriptor. (For POSIX systems, this will use the ``f...``
1178 versions of the function.)
1179
1180 You can check whether or not *path* can be specified as a file descriptor on
1181 your platform using :data:`os.supports_fd`. If it is unavailable, using it
1182 will raise a :exc:`NotImplementedError`.
1183
1184 If the function also supports *dir_fd* or *follow_symlinks* arguments, it is
1185 an error to specify one of those when supplying *path* as a file descriptor.
1186
1187.. _dir_fd:
1188
1189* For functions with a *dir_fd* parameter: If *dir_fd* is not ``None``, it
1190 should be a file descriptor referring to a directory, and the path to operate
1191 on should be relative; path will then be relative to that directory. If the
1192 path is absolute, *dir_fd* is ignored. (For POSIX systems, this will use the
1193 ``f...at`` versions of the function.)
1194
1195 You can check whether or not *dir_fd* is supported on your platform using
1196 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise a
1197 :exc:`NotImplementedError`.
1198
1199.. _follow_symlinks:
1200
1201* For functions ith a *follow_symlinks* parameter: If *follow_symlinks* is
1202 ``False``, and the last element of the path to operate on is a symbolic link,
1203 the function will operate on the symbolic link itself instead of the file the
1204 link points to. (For POSIX systems, this will use the ``l...`` versions of
1205 the function.)
1206
1207 You can check whether or not *follow_symlinks* is supported on your platform
1208 using :data:`os.supports_follow_symlinks`. If it is unavailable, using it
1209 will raise a :exc:`NotImplementedError`.
1210
1211
1212
Larry Hastings9cf065c2012-06-22 16:30:09 -07001213.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001214
1215 Use the real uid/gid to test for access to *path*. Note that most operations
1216 will use the effective uid/gid, therefore this routine can be used in a
1217 suid/sgid environment to test if the invoking user has the specified access to
1218 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1219 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1220 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1221 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001222 information.
1223
Georg Brandl50c40002012-06-24 11:45:20 +02001224 This function can support specifying :ref:`paths relative to directory
1225 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001226
1227 If *effective_ids* is ``True``, :func:`access` will perform its access
1228 checks using the effective uid/gid instead of the real uid/gid.
1229 *effective_ids* may not be supported on your platform; you can check whether
1230 or not it is available using :data:`os.supports_effective_ids`. If it is
1231 unavailable, using it will raise a :exc:`NotImplementedError`.
1232
Benjamin Petersonf650e462010-05-06 23:03:05 +00001233 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001234
1235 .. note::
1236
Georg Brandl502d9a52009-07-26 15:02:41 +00001237 Using :func:`access` to check if a user is authorized to e.g. open a file
1238 before actually doing so using :func:`open` creates a security hole,
1239 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001240 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1241 techniques. For example::
1242
1243 if os.access("myfile", os.R_OK):
1244 with open("myfile") as fp:
1245 return fp.read()
1246 return "some default data"
1247
1248 is better written as::
1249
1250 try:
1251 fp = open("myfile")
Antoine Pitrou62ab10a2011-10-12 20:10:51 +02001252 except PermissionError:
1253 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001254 else:
1255 with fp:
1256 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001257
1258 .. note::
1259
1260 I/O operations may fail even when :func:`access` indicates that they would
1261 succeed, particularly for operations on network filesystems which may have
1262 permissions semantics beyond the usual POSIX permission-bit model.
1263
Larry Hastings9cf065c2012-06-22 16:30:09 -07001264 .. versionchanged:: 3.3
1265 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1266
Georg Brandl116aa622007-08-15 14:28:22 +00001267
1268.. data:: F_OK
1269
1270 Value to pass as the *mode* parameter of :func:`access` to test the existence of
1271 *path*.
1272
1273
1274.. data:: R_OK
1275
1276 Value to include in the *mode* parameter of :func:`access` to test the
1277 readability of *path*.
1278
1279
1280.. data:: W_OK
1281
1282 Value to include in the *mode* parameter of :func:`access` to test the
1283 writability of *path*.
1284
1285
1286.. data:: X_OK
1287
1288 Value to include in the *mode* parameter of :func:`access` to determine if
1289 *path* can be executed.
1290
1291
1292.. function:: chdir(path)
1293
1294 .. index:: single: directory; changing
1295
Benjamin Petersonf650e462010-05-06 23:03:05 +00001296 Change the current working directory to *path*.
1297
Georg Brandl50c40002012-06-24 11:45:20 +02001298 This function can support :ref:`working on a file descriptor <path_fd>`. The
1299 descriptor must refer to an opened directory, not an open file.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001300
Benjamin Petersonf650e462010-05-06 23:03:05 +00001301 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001302
Larry Hastings9cf065c2012-06-22 16:30:09 -07001303 .. versionadded:: 3.3
1304 Added support for specifying *path* as a file descriptor
Georg Brandl50c40002012-06-24 11:45:20 +02001305 on some platforms.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001306
Georg Brandl116aa622007-08-15 14:28:22 +00001307
1308.. function:: fchdir(fd)
1309
1310 Change the current working directory to the directory represented by the file
Georg Brandl50c40002012-06-24 11:45:20 +02001311 descriptor *fd*. The descriptor must refer to an opened directory, not an
1312 open file. Equivalent to ``os.chdir(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001313
1314 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001315
Georg Brandl116aa622007-08-15 14:28:22 +00001316
1317.. function:: getcwd()
1318
Martin v. Löwis011e8422009-05-05 04:43:17 +00001319 Return a string representing the current working directory.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001320
Martin v. Löwis011e8422009-05-05 04:43:17 +00001321 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001322
Benjamin Petersonf650e462010-05-06 23:03:05 +00001323
Martin v. Löwisa731b992008-10-07 06:36:31 +00001324.. function:: getcwdb()
Georg Brandl116aa622007-08-15 14:28:22 +00001325
Georg Brandl76e55382008-10-08 16:34:57 +00001326 Return a bytestring representing the current working directory.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001327
Georg Brandlc575c902008-09-13 17:46:05 +00001328 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001329
Georg Brandl116aa622007-08-15 14:28:22 +00001330
Larry Hastings9cf065c2012-06-22 16:30:09 -07001331.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001332
1333 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1334 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1335
R David Murray30178062011-03-10 17:18:33 -05001336 * :data:`stat.UF_NODUMP`
1337 * :data:`stat.UF_IMMUTABLE`
1338 * :data:`stat.UF_APPEND`
1339 * :data:`stat.UF_OPAQUE`
1340 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001341 * :data:`stat.UF_COMPRESSED`
1342 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001343 * :data:`stat.SF_ARCHIVED`
1344 * :data:`stat.SF_IMMUTABLE`
1345 * :data:`stat.SF_APPEND`
1346 * :data:`stat.SF_NOUNLINK`
1347 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001348
Georg Brandl50c40002012-06-24 11:45:20 +02001349 This function can support :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001350
Georg Brandlc575c902008-09-13 17:46:05 +00001351 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001352
Larry Hastings9cf065c2012-06-22 16:30:09 -07001353 .. versionadded:: 3.3
1354 The *follow_symlinks* argument.
1355
Georg Brandl116aa622007-08-15 14:28:22 +00001356
1357.. function:: chroot(path)
1358
1359 Change the root directory of the current process to *path*. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001360 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001361
Georg Brandl116aa622007-08-15 14:28:22 +00001362
Larry Hastings9cf065c2012-06-22 16:30:09 -07001363.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001364
1365 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001366 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001367 combinations of them:
1368
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001369 * :data:`stat.S_ISUID`
1370 * :data:`stat.S_ISGID`
1371 * :data:`stat.S_ENFMT`
1372 * :data:`stat.S_ISVTX`
1373 * :data:`stat.S_IREAD`
1374 * :data:`stat.S_IWRITE`
1375 * :data:`stat.S_IEXEC`
1376 * :data:`stat.S_IRWXU`
1377 * :data:`stat.S_IRUSR`
1378 * :data:`stat.S_IWUSR`
1379 * :data:`stat.S_IXUSR`
1380 * :data:`stat.S_IRWXG`
1381 * :data:`stat.S_IRGRP`
1382 * :data:`stat.S_IWGRP`
1383 * :data:`stat.S_IXGRP`
1384 * :data:`stat.S_IRWXO`
1385 * :data:`stat.S_IROTH`
1386 * :data:`stat.S_IWOTH`
1387 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001388
Georg Brandl50c40002012-06-24 11:45:20 +02001389 This function can support :ref:`specifying a file descriptor <path_fd>`,
1390 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1391 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001392
Georg Brandlc575c902008-09-13 17:46:05 +00001393 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
1395 .. note::
1396
Georg Brandl50c40002012-06-24 11:45:20 +02001397 Although Windows supports :func:`chmod`, you can only set the file's
1398 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1399 constants or a corresponding integer value). All other bits are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001400
Larry Hastings9cf065c2012-06-22 16:30:09 -07001401 .. versionadded:: 3.3
1402 Added support for specifying *path* as an open file descriptor,
1403 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001404
Larry Hastings9cf065c2012-06-22 16:30:09 -07001405
1406.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001407
Georg Brandl50c40002012-06-24 11:45:20 +02001408 Change the owner and group id of *path* to the numeric *uid* and *gid*. To
1409 leave one of the ids unchanged, set it to -1.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001410
Georg Brandl50c40002012-06-24 11:45:20 +02001411 This function can support :ref:`specifying a file descriptor <path_fd>`,
1412 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1413 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001414
Sandro Tosid902a142011-08-22 23:28:27 +02001415 See :func:`shutil.chown` for a higher-level function that accepts names in
1416 addition to numeric ids.
1417
Benjamin Petersonf650e462010-05-06 23:03:05 +00001418 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001419
Larry Hastings9cf065c2012-06-22 16:30:09 -07001420 .. versionadded:: 3.3
1421 Added support for specifying an open file descriptor for *path*,
1422 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001423
Benjamin Peterson799bd802011-08-31 22:15:17 -04001424
Georg Brandl116aa622007-08-15 14:28:22 +00001425.. function:: lchflags(path, flags)
1426
Georg Brandl50c40002012-06-24 11:45:20 +02001427 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do
1428 not follow symbolic links. Equivalent to ``os.chflags(path, flags,
1429 follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001430
1431 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001432
Georg Brandl116aa622007-08-15 14:28:22 +00001433
Christian Heimes93852662007-12-01 12:22:32 +00001434.. function:: lchmod(path, mode)
1435
1436 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
Georg Brandl50c40002012-06-24 11:45:20 +02001437 affects the symlink rather than the target. See the docs for :func:`chmod`
1438 for possible values of *mode*. Equivalent to ``os.chmod(path, mode,
1439 follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001440
1441 Availability: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001442
Christian Heimes93852662007-12-01 12:22:32 +00001443
Georg Brandl116aa622007-08-15 14:28:22 +00001444.. function:: lchown(path, uid, gid)
1445
Georg Brandl50c40002012-06-24 11:45:20 +02001446 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
1447 function will not follow symbolic links. Equivalent to ``os.chown(path, uid,
1448 gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001449
1450 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001451
Georg Brandl116aa622007-08-15 14:28:22 +00001452
Larry Hastings9cf065c2012-06-22 16:30:09 -07001453.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001454
Larry Hastings9cf065c2012-06-22 16:30:09 -07001455 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001456
Georg Brandl50c40002012-06-24 11:45:20 +02001457 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a file
1458 descriptor referring to a directory, and the corresponding path (*src* or
1459 *dst*) should be relative; that path will then be relative to that directory.
1460 (If *src* is absolute, *src_dir_fd* is ignored; the same goes for *dst* and
1461 *dst_dir_fd*.) *src_dir_fd* and *dst_dir_fd* may not be supported on your
1462 platform; you can check whether or not they are available using
1463 :data:`os.supports_dir_fd`. If they are unavailable, using either will raise
1464 a :exc:`NotImplementedError`.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001465
Georg Brandl50c40002012-06-24 11:45:20 +02001466 This function can also support :ref:`not following symlinks
1467 <follow_symlinks>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001468
Brian Curtin1b9df392010-11-24 20:24:31 +00001469 Availability: Unix, Windows.
1470
1471 .. versionchanged:: 3.2
1472 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001473
Larry Hastings9cf065c2012-06-22 16:30:09 -07001474 .. versionadded:: 3.3
1475 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1476
Georg Brandl116aa622007-08-15 14:28:22 +00001477
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001478.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001479
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001480 Return a list containing the names of the entries in the directory given by
Georg Brandl50c40002012-06-24 11:45:20 +02001481 *path* (default: ``'.'``). The list is in arbitrary order. It does not
1482 include the special entries ``'.'`` and ``'..'`` even if they are present in
1483 the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001484
Martin v. Löwis011e8422009-05-05 04:43:17 +00001485 This function can be called with a bytes or string argument, and returns
1486 filenames of the same datatype.
Georg Brandl116aa622007-08-15 14:28:22 +00001487
Georg Brandl50c40002012-06-24 11:45:20 +02001488 This function can also support :ref:`specifying an open file descriptor
1489 <path_fd>` (referring to a directory).
Larry Hastings9cf065c2012-06-22 16:30:09 -07001490
Benjamin Petersonf650e462010-05-06 23:03:05 +00001491 Availability: Unix, Windows.
1492
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001493 .. versionchanged:: 3.2
1494 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001495
Larry Hastings9cf065c2012-06-22 16:30:09 -07001496 .. versionadded:: 3.3
1497 Added support for specifying an open file descriptor for *path*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001498
Georg Brandl50c40002012-06-24 11:45:20 +02001499
Larry Hastings9cf065c2012-06-22 16:30:09 -07001500.. function:: lstat(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001501
R. David Murray7b1aae92011-01-24 19:34:58 +00001502 Perform the equivalent of an :c:func:`lstat` system call on the given path.
1503 Similar to :func:`~os.stat`, but does not follow symbolic links. On
1504 platforms that do not support symbolic links, this is an alias for
Larry Hastings9cf065c2012-06-22 16:30:09 -07001505 :func:`~os.stat`. (Equivalent to ``os.stat(path, follow_symlinks=False)``.)
1506
Georg Brandl50c40002012-06-24 11:45:20 +02001507 This function can also support :ref:`paths relative to directory descriptors
1508 <dir_fd>`.
Brian Curtinc7395692010-07-09 15:15:09 +00001509
Georg Brandlb3823372010-07-10 08:58:37 +00001510 .. versionchanged:: 3.2
1511 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001512
Larry Hastings9cf065c2012-06-22 16:30:09 -07001513 .. versionchanged:: 3.3
1514 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001515
1516
Larry Hastings9cf065c2012-06-22 16:30:09 -07001517.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001518
Larry Hastings9cf065c2012-06-22 16:30:09 -07001519 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1520 The current umask value is first masked out from the mode.
1521
Georg Brandl50c40002012-06-24 11:45:20 +02001522 This function can also support :ref:`paths relative to directory descriptors
1523 <dir_fd>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001524
1525 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1526 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1527 rendezvous between "client" and "server" type processes: the server opens the
1528 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1529 doesn't open the FIFO --- it just creates the rendezvous point.
1530
Benjamin Petersonf650e462010-05-06 23:03:05 +00001531 Availability: Unix.
1532
Larry Hastings9cf065c2012-06-22 16:30:09 -07001533 .. versionadded:: 3.3
1534 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001535
Larry Hastings9cf065c2012-06-22 16:30:09 -07001536
1537.. function:: mknod(filename, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001538
1539 Create a filesystem node (file, device special file or named pipe) named
Georg Brandl18244152009-09-02 20:34:52 +00001540 *filename*. *mode* specifies both the permissions to use and the type of node
1541 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1542 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1543 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
1544 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00001545 :func:`os.makedev`), otherwise it is ignored.
1546
Georg Brandl50c40002012-06-24 11:45:20 +02001547 This function can also support :ref:`paths relative to directory descriptors
1548 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001549
1550 .. versionadded:: 3.3
1551 The *dir_fd* argument.
1552
Georg Brandl116aa622007-08-15 14:28:22 +00001553
1554.. function:: major(device)
1555
Christian Heimesfaf2f632008-01-06 16:59:19 +00001556 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001557 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001558
Georg Brandl116aa622007-08-15 14:28:22 +00001559
1560.. function:: minor(device)
1561
Christian Heimesfaf2f632008-01-06 16:59:19 +00001562 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001563 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001564
Georg Brandl116aa622007-08-15 14:28:22 +00001565
1566.. function:: makedev(major, minor)
1567
Christian Heimesfaf2f632008-01-06 16:59:19 +00001568 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00001569
Georg Brandl116aa622007-08-15 14:28:22 +00001570
Larry Hastings9cf065c2012-06-22 16:30:09 -07001571.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001572
Larry Hastings9cf065c2012-06-22 16:30:09 -07001573 Create a directory named *path* with numeric mode *mode*.
1574
Georg Brandl50c40002012-06-24 11:45:20 +02001575 On some systems, *mode* is ignored. Where it is used, the current umask
1576 value is first masked out. If the directory already exists, :exc:`OSError`
1577 is raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001578
Georg Brandl50c40002012-06-24 11:45:20 +02001579 This function can also support :ref:`paths relative to directory descriptors
1580 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001581
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001582 It is also possible to create temporary directories; see the
1583 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1584
Benjamin Petersonf650e462010-05-06 23:03:05 +00001585 Availability: Unix, Windows.
1586
Larry Hastings9cf065c2012-06-22 16:30:09 -07001587 .. versionadded:: 3.3
1588 The *dir_fd* argument.
1589
Georg Brandl116aa622007-08-15 14:28:22 +00001590
Georg Brandlc1673682010-12-02 09:06:12 +00001591.. function:: makedirs(path, mode=0o777, exist_ok=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001592
1593 .. index::
1594 single: directory; creating
1595 single: UNC paths; and os.makedirs()
1596
1597 Recursive directory creation function. Like :func:`mkdir`, but makes all
Terry Reedy5a22b652010-12-02 07:05:56 +00001598 intermediate-level directories needed to contain the leaf directory. If
Georg Brandlc1673682010-12-02 09:06:12 +00001599 the target directory with the same mode as specified already exists,
Terry Reedy5a22b652010-12-02 07:05:56 +00001600 raises an :exc:`OSError` exception if *exist_ok* is False, otherwise no
1601 exception is raised. If the directory cannot be created in other cases,
1602 raises an :exc:`OSError` exception. The default *mode* is ``0o777`` (octal).
Georg Brandlc1673682010-12-02 09:06:12 +00001603 On some systems, *mode* is ignored. Where it is used, the current umask
Terry Reedy5a22b652010-12-02 07:05:56 +00001604 value is first masked out.
Georg Brandl116aa622007-08-15 14:28:22 +00001605
1606 .. note::
1607
Georg Brandlc1673682010-12-02 09:06:12 +00001608 :func:`makedirs` will become confused if the path elements to create
1609 include :data:`pardir`.
Georg Brandl116aa622007-08-15 14:28:22 +00001610
Georg Brandl55ac8f02007-09-01 13:51:09 +00001611 This function handles UNC paths correctly.
Georg Brandl116aa622007-08-15 14:28:22 +00001612
Terry Reedy5a22b652010-12-02 07:05:56 +00001613 .. versionadded:: 3.2
1614 The *exist_ok* parameter.
1615
Georg Brandl116aa622007-08-15 14:28:22 +00001616
1617.. function:: pathconf(path, name)
1618
1619 Return system configuration information relevant to a named file. *name*
1620 specifies the configuration value to retrieve; it may be a string which is the
1621 name of a defined system value; these names are specified in a number of
1622 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1623 additional names as well. The names known to the host operating system are
1624 given in the ``pathconf_names`` dictionary. For configuration variables not
1625 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00001626
1627 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1628 specific value for *name* is not supported by the host system, even if it is
1629 included in ``pathconf_names``, an :exc:`OSError` is raised with
1630 :const:`errno.EINVAL` for the error number.
1631
Benjamin Petersonf650e462010-05-06 23:03:05 +00001632 Availability: Unix.
1633
Georg Brandl116aa622007-08-15 14:28:22 +00001634
1635.. data:: pathconf_names
1636
1637 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1638 the integer values defined for those names by the host operating system. This
1639 can be used to determine the set of names known to the system. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001640 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001641
1642
Larry Hastings9cf065c2012-06-22 16:30:09 -07001643.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001644
1645 Return a string representing the path to which the symbolic link points. The
Georg Brandl50c40002012-06-24 11:45:20 +02001646 result may be either an absolute or relative pathname; if it is relative, it
1647 may be converted to an absolute pathname using
1648 ``os.path.join(os.path.dirname(path), result)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001649
Georg Brandl76e55382008-10-08 16:34:57 +00001650 If the *path* is a string object, the result will also be a string object,
1651 and the call may raise an UnicodeDecodeError. If the *path* is a bytes
1652 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00001653
Georg Brandl50c40002012-06-24 11:45:20 +02001654 This function can also support :ref:`paths relative to directory descriptors
1655 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001656
Brian Curtinc7395692010-07-09 15:15:09 +00001657 Availability: Unix, Windows
1658
Georg Brandlb3823372010-07-10 08:58:37 +00001659 .. versionchanged:: 3.2
1660 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001661
Larry Hastings9cf065c2012-06-22 16:30:09 -07001662 .. versionadded:: 3.3
1663 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001664
Georg Brandl116aa622007-08-15 14:28:22 +00001665
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001666.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07001667
Georg Brandl50c40002012-06-24 11:45:20 +02001668 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
1669 raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001670
Georg Brandl50c40002012-06-24 11:45:20 +02001671 This function can support :ref:`paths relative to directory descriptors
1672 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001673
1674 On Windows, attempting to remove a file that is in use causes an exception to
1675 be raised; on Unix, the directory entry is removed but the storage allocated
1676 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001677
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001678 This function is identical to :func:`unlink`.
1679
Benjamin Petersonf650e462010-05-06 23:03:05 +00001680 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001681
Larry Hastings9cf065c2012-06-22 16:30:09 -07001682 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001683 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001684
Georg Brandl116aa622007-08-15 14:28:22 +00001685
1686.. function:: removedirs(path)
1687
1688 .. index:: single: directory; deleting
1689
Christian Heimesfaf2f632008-01-06 16:59:19 +00001690 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00001691 leaf directory is successfully removed, :func:`removedirs` tries to
1692 successively remove every parent directory mentioned in *path* until an error
1693 is raised (which is ignored, because it generally means that a parent directory
1694 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1695 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1696 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1697 successfully removed.
1698
Georg Brandl116aa622007-08-15 14:28:22 +00001699
Larry Hastings9cf065c2012-06-22 16:30:09 -07001700.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001701
1702 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1703 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001704 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001705 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1706 the renaming will be an atomic operation (this is a POSIX requirement). On
1707 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001708 file.
1709
Larry Hastings9cf065c2012-06-22 16:30:09 -07001710 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1711 file descriptor referring to a directory, and the corresponding path
1712 (*src* or *dst*) should be relative; that path will then be relative to
1713 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1714 goes for *dst* and *dst_dir_fd*.)
1715 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1716 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1717 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1718
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001719 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001720
1721 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001722
Larry Hastings9cf065c2012-06-22 16:30:09 -07001723 .. versionadded:: 3.3
1724 The *src_dir_fd* and *dst_dir_fd* arguments.
1725
Georg Brandl116aa622007-08-15 14:28:22 +00001726
1727.. function:: renames(old, new)
1728
1729 Recursive directory or file renaming function. Works like :func:`rename`, except
1730 creation of any intermediate directories needed to make the new pathname good is
1731 attempted first. After the rename, directories corresponding to rightmost path
1732 segments of the old name will be pruned away using :func:`removedirs`.
1733
Georg Brandl116aa622007-08-15 14:28:22 +00001734 .. note::
1735
1736 This function can fail with the new directory structure made if you lack
1737 permissions needed to remove the leaf directory or file.
1738
1739
Larry Hastings9cf065c2012-06-22 16:30:09 -07001740.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001741
1742 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1743 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
1744 be replaced silently if the user has permission. The operation may fail
1745 if *src* and *dst* are on different filesystems. If successful,
1746 the renaming will be an atomic operation (this is a POSIX requirement).
1747
Larry Hastings9cf065c2012-06-22 16:30:09 -07001748 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1749 file descriptor referring to a directory, and the corresponding path
1750 (*src* or *dst*) should be relative; that path will then be relative to
1751 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1752 goes for *dst* and *dst_dir_fd*.)
1753 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1754 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1755 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1756
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001757 Availability: Unix, Windows
1758
1759 .. versionadded:: 3.3
1760
1761
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001762.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001763
Georg Brandla6053b42009-09-01 08:11:14 +00001764 Remove (delete) the directory *path*. Only works when the directory is
1765 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
Benjamin Petersonf650e462010-05-06 23:03:05 +00001766 directory trees, :func:`shutil.rmtree` can be used.
1767
Georg Brandl50c40002012-06-24 11:45:20 +02001768 This function can support :ref:`paths relative to directory descriptors
1769 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001770
Benjamin Petersonf650e462010-05-06 23:03:05 +00001771 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001772
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001773 .. versionadded:: 3.3
1774 The *dir_fd* parameter.
1775
Georg Brandl116aa622007-08-15 14:28:22 +00001776
Larry Hastings9cf065c2012-06-22 16:30:09 -07001777.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001778
R. David Murray7b1aae92011-01-24 19:34:58 +00001779 Perform the equivalent of a :c:func:`stat` system call on the given path.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001780 *path* may be specified as either a string or as an open file descriptor.
1781 (This function normally follows symlinks; to stat a symlink add the argument
1782 ``follow_symlinks=False``, or use :func:`lstat`.)
Georg Brandl116aa622007-08-15 14:28:22 +00001783
Larry Hastings6fe20b32012-04-19 15:07:49 -07001784 The return value is an object whose attributes correspond roughly
1785 to the members of the :c:type:`stat` structure, namely:
R. David Murray7b1aae92011-01-24 19:34:58 +00001786
1787 * :attr:`st_mode` - protection bits,
1788 * :attr:`st_ino` - inode number,
1789 * :attr:`st_dev` - device,
1790 * :attr:`st_nlink` - number of hard links,
1791 * :attr:`st_uid` - user id of owner,
1792 * :attr:`st_gid` - group id of owner,
1793 * :attr:`st_size` - size of file, in bytes,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001794 * :attr:`st_atime` - time of most recent access expressed in seconds,
1795 * :attr:`st_mtime` - time of most recent content modification
1796 expressed in seconds,
1797 * :attr:`st_ctime` - platform dependent; time of most recent metadata
1798 change on Unix, or the time of creation on Windows, expressed in seconds
1799 * :attr:`st_atime_ns` - time of most recent access
1800 expressed in nanoseconds as an integer,
1801 * :attr:`st_mtime_ns` - time of most recent content modification
1802 expressed in nanoseconds as an integer,
1803 * :attr:`st_ctime_ns` - platform dependent; time of most recent metadata
1804 change on Unix, or the time of creation on Windows,
1805 expressed in nanoseconds as an integer
Georg Brandl116aa622007-08-15 14:28:22 +00001806
1807 On some Unix systems (such as Linux), the following attributes may also be
R. David Murray7b1aae92011-01-24 19:34:58 +00001808 available:
1809
1810 * :attr:`st_blocks` - number of blocks allocated for file
1811 * :attr:`st_blksize` - filesystem blocksize
1812 * :attr:`st_rdev` - type of device if an inode device
1813 * :attr:`st_flags` - user defined flags for file
Georg Brandl116aa622007-08-15 14:28:22 +00001814
1815 On other Unix systems (such as FreeBSD), the following attributes may be
R. David Murray7b1aae92011-01-24 19:34:58 +00001816 available (but may be only filled out if root tries to use them):
1817
1818 * :attr:`st_gen` - file generation number
1819 * :attr:`st_birthtime` - time of file creation
Georg Brandl116aa622007-08-15 14:28:22 +00001820
1821 On Mac OS systems, the following attributes may also be available:
Georg Brandl116aa622007-08-15 14:28:22 +00001822
R. David Murray7b1aae92011-01-24 19:34:58 +00001823 * :attr:`st_rsize`
1824 * :attr:`st_creator`
1825 * :attr:`st_type`
Georg Brandl116aa622007-08-15 14:28:22 +00001826
1827 .. note::
1828
Senthil Kumaran3aac1792011-07-04 11:43:51 -07001829 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07001830 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
1831 system and the file system. For example, on Windows systems using the FAT
1832 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
1833 :attr:`st_atime` has only 1-day resolution. See your operating system
1834 documentation for details.
Larry Hastings6fe20b32012-04-19 15:07:49 -07001835 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
1836 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
1837 systems do not provide nanosecond precision. On systems that do
1838 provide nanosecond precision, the floating-point object used to
1839 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
1840 cannot preserve all of it, and as such will be slightly inexact.
1841 If you need the exact timestamps you should always use
1842 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00001843
Georg Brandl50c40002012-06-24 11:45:20 +02001844 For backward compatibility, the return value of :func:`~os.stat` is also
1845 accessible as a tuple of at least 10 integers giving the most important (and
1846 portable) members of the :c:type:`stat` structure, in the order
1847 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
1848 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
1849 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
1850 some implementations.
R. David Murray7b1aae92011-01-24 19:34:58 +00001851
Georg Brandl50c40002012-06-24 11:45:20 +02001852 This function can support :ref:`specifying an open file descriptor
1853 <path_fd>`, :ref:`specifying a file descriptor <path_fd>` and :ref:`not
1854 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001855
R. David Murray7b1aae92011-01-24 19:34:58 +00001856 .. index:: module: stat
1857
1858 The standard module :mod:`stat` defines functions and constants that are useful
1859 for extracting information from a :c:type:`stat` structure. (On Windows, some
1860 items are filled with dummy values.)
1861
1862 Example::
1863
1864 >>> import os
1865 >>> statinfo = os.stat('somefile.txt')
1866 >>> statinfo
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00001867 posix.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
1868 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
1869 st_mtime=1297230027, st_ctime=1297230027)
R. David Murray7b1aae92011-01-24 19:34:58 +00001870 >>> statinfo.st_size
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00001871 264
R. David Murray7b1aae92011-01-24 19:34:58 +00001872
Georg Brandlc575c902008-09-13 17:46:05 +00001873 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001874
Larry Hastings6fe20b32012-04-19 15:07:49 -07001875 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07001876 Added the *dir_fd* and *follow_symlinks* arguments,
1877 specifying a file descriptor instead of a path,
1878 and the :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001879 and :attr:`st_ctime_ns` members.
1880
Georg Brandl116aa622007-08-15 14:28:22 +00001881
1882.. function:: stat_float_times([newvalue])
1883
1884 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00001885 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00001886 ``False``, future calls return ints. If *newvalue* is omitted, return the
1887 current setting.
1888
1889 For compatibility with older Python versions, accessing :class:`stat_result` as
1890 a tuple always returns integers.
1891
Georg Brandl55ac8f02007-09-01 13:51:09 +00001892 Python now returns float values by default. Applications which do not work
1893 correctly with floating point time stamps can use this function to restore the
1894 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00001895
1896 The resolution of the timestamps (that is the smallest possible fraction)
1897 depends on the system. Some systems only support second resolution; on these
1898 systems, the fraction will always be zero.
1899
1900 It is recommended that this setting is only changed at program startup time in
1901 the *__main__* module; libraries should never change this setting. If an
1902 application uses a library that works incorrectly if floating point time stamps
1903 are processed, this application should turn the feature off until the library
1904 has been corrected.
1905
Victor Stinner034d0aa2012-06-05 01:22:15 +02001906 .. deprecated:: 3.3
1907
Georg Brandl116aa622007-08-15 14:28:22 +00001908
1909.. function:: statvfs(path)
1910
Georg Brandl60203b42010-10-06 10:11:56 +00001911 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00001912 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00001913 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00001914 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
1915 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00001916 :attr:`f_flag`, :attr:`f_namemax`.
1917
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00001918 Two module-level constants are defined for the :attr:`f_flag` attribute's
1919 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
1920 read-only, and if :const:`ST_NOSUID` is set, the semantics of
1921 setuid/setgid bits are disabled or not supported.
1922
Georg Brandl50c40002012-06-24 11:45:20 +02001923 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001924
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00001925 .. versionchanged:: 3.2
1926 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
1927
Benjamin Petersonf650e462010-05-06 23:03:05 +00001928 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001929
Larry Hastings9cf065c2012-06-22 16:30:09 -07001930 .. versionadded:: 3.3
1931 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00001932
Larry Hastings9cf065c2012-06-22 16:30:09 -07001933
1934.. data:: supports_dir_fd
1935
1936 An object implementing collections.Set indicating which functions in the
1937 :mod:`os` permit use of their *dir_fd* parameter. Different platforms
1938 provide different functionality, and an option that might work on one might
1939 be unsupported on another. For consistency's sakes, functions that support
1940 *dir_fd* always allow specifying the parameter, but will throw an exception
1941 if the functionality is not actually available.
1942
1943 To check whether a particular function permits use of its *dir_fd*
1944 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
1945 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
1946 is locally available::
1947
1948 os.stat in os.supports_dir_fd
1949
1950 Currently *dir_fd* parameters only work on UNIX platforms;
1951 none of them work on Windows.
1952
1953 .. versionadded:: 3.3
1954
1955.. data:: supports_effective_ids
1956
1957 An object implementing collections.Set indicating which functions in the
Georg Brandl50c40002012-06-24 11:45:20 +02001958 :mod:`os` permit use of the *effective_ids* parameter for :func:`os.access`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001959 If the local platform supports it, the collection will contain
1960 :func:`os.access`, otherwise it will be empty.
1961
Georg Brandl50c40002012-06-24 11:45:20 +02001962 To check whether you can use the *effective_ids* parameter for
Larry Hastings9cf065c2012-06-22 16:30:09 -07001963 :func:`os.access`, use the ``in`` operator on ``supports_dir_fd``, like so::
1964
1965 os.access in os.supports_effective_ids
1966
Georg Brandl50c40002012-06-24 11:45:20 +02001967 Currently *effective_ids* only works on Unix platforms; it does not work on
1968 Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001969
1970 .. versionadded:: 3.3
1971
1972.. data:: supports_fd
1973
1974 An object implementing collections.Set indicating which functions in the
1975 :mod:`os` permit specifying their *path* parameter as an open file
1976 descriptor. Different platforms provide different functionality, and an
1977 option that might work on one might be unsupported on another. For
1978 consistency's sakes, functions that support *fd* always allow specifying
1979 the parameter, but will throw an exception if the functionality is not
1980 actually available.
1981
1982 To check whether a particular function permits specifying an open file
1983 descriptor for its *path* parameter, use the ``in`` operator on
1984 ``supports_fd``. As an example, this expression determines whether
1985 :func:`os.chdir` accepts open file descriptors when called on your local
1986 platform::
1987
1988 os.chdir in os.supports_fd
1989
1990 .. versionadded:: 3.3
1991
1992.. data:: supports_follow_symlinks
1993
1994 An object implementing collections.Set indicating which functions in the
1995 :mod:`os` permit use of their *follow_symlinks* parameter. Different
1996 platforms provide different functionality, and an option that might work on
1997 one might be unsupported on another. For consistency's sakes, functions that
1998 support *follow_symlinks* always allow specifying the parameter, but will
1999 throw an exception if the functionality is not actually available.
2000
2001 To check whether a particular function permits use of its *follow_symlinks*
2002 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2003 example, this expression determines whether the *follow_symlinks* parameter
2004 of :func:`os.stat` is locally available::
2005
2006 os.stat in os.supports_follow_symlinks
2007
2008 .. versionadded:: 3.3
2009
2010.. function:: symlink(source, link_name, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002011
Brian Curtinc7395692010-07-09 15:15:09 +00002012 Create a symbolic link pointing to *source* named *link_name*.
2013
Larry Hastings9cf065c2012-06-22 16:30:09 -07002014 On Windows, a symlink represents either a file or a directory, and does not
2015 morph to the target dynamically. If *target_is_directory* is set to ``True``,
2016 the symlink will be created as a directory symlink, otherwise as a file symlink
2017 (the default). On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002018
Georg Brandl64a41ed2010-10-06 08:52:48 +00002019 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2020 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002021
Georg Brandl50c40002012-06-24 11:45:20 +02002022 This function can support :ref:`paths relative to directory descriptors
2023 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002024
Brian Curtin52173d42010-12-02 18:29:18 +00002025 .. note::
2026
Larry Hastings9cf065c2012-06-22 16:30:09 -07002027 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2028 successfully create symlinks. This privilege is not typically granted to
2029 regular users but is available to accounts which can escalate privileges
2030 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002031 application as an administrator are ways to successfully create symlinks.
2032
Brian Curtin96245592010-12-28 17:08:22 +00002033 :exc:`OSError` is raised when the function is called by an unprivileged
2034 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002035
Georg Brandl64a41ed2010-10-06 08:52:48 +00002036 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002037
Georg Brandlb3823372010-07-10 08:58:37 +00002038 .. versionchanged:: 3.2
2039 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002040
Larry Hastings9cf065c2012-06-22 16:30:09 -07002041 .. versionadded:: 3.3
2042 Added the *dir_fd* argument, and now allow *target_is_directory*
2043 on non-Windows platforms.
2044
Georg Brandl116aa622007-08-15 14:28:22 +00002045
Ross Lagerwall7807c352011-03-17 20:20:30 +02002046.. function:: sync()
2047
2048 Force write of everything to disk.
2049
2050 Availability: Unix.
2051
2052 .. versionadded:: 3.3
2053
2054
2055.. function:: truncate(path, length)
2056
2057 Truncate the file corresponding to *path*, so that it is at most
2058 *length* bytes in size.
2059
2060 Availability: Unix.
2061
2062 .. versionadded:: 3.3
2063
2064
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002065.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002066
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002067 Remove (delete) the file *path*. This function is identical to
Georg Brandl50c40002012-06-24 11:45:20 +02002068 :func:`remove`; the ``unlink`` name is its traditional Unix
Larry Hastings9cf065c2012-06-22 16:30:09 -07002069 name. Please see the documentation for :func:`remove` for
2070 further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002071
2072 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002073
Larry Hastings9cf065c2012-06-22 16:30:09 -07002074 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002075 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002076
Larry Hastings9cf065c2012-06-22 16:30:09 -07002077
2078.. function:: utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002079
Larry Hastings76ad59b2012-05-03 00:30:07 -07002080 Set the access and modified times of the file specified by *path*.
2081
2082 :func:`utime` takes two optional parameters, *times* and *ns*.
2083 These specify the times set on *path* and are used as follows:
2084
Larry Hastings9cf065c2012-06-22 16:30:09 -07002085 - If *ns* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002086 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2087 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002088 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002089 it must be a 2-tuple of the form ``(atime, mtime)``
2090 where each member is an int or float expressing seconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002091 - If *times* and *ns* are both ``None``,
2092 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002093 where both times are the current time.
2094 (The effect is similar to running the Unix program
2095 :program:`touch` on *path*.)
Larry Hastings76ad59b2012-05-03 00:30:07 -07002096
Larry Hastings9cf065c2012-06-22 16:30:09 -07002097 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002098
2099 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002100 depends on whether the operating system implements directories as files
2101 (for example, Windows does not). Note that the exact times you set here may
2102 not be returned by a subsequent :func:`~os.stat` call, depending on the
2103 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002104 times; see :func:`~os.stat`. The best way to preserve exact times is to
2105 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2106 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002107
Georg Brandl50c40002012-06-24 11:45:20 +02002108 This function can support :ref:`specifying a file descriptor <path_fd>`,
2109 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
2110 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002111
Georg Brandlc575c902008-09-13 17:46:05 +00002112 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002113
Larry Hastings76ad59b2012-05-03 00:30:07 -07002114 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002115 Added support for specifying an open file descriptor for *path*,
2116 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002117
Georg Brandl116aa622007-08-15 14:28:22 +00002118
Georg Brandl18244152009-09-02 20:34:52 +00002119.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002120
2121 .. index::
2122 single: directory; walking
2123 single: directory; traversal
2124
Christian Heimesfaf2f632008-01-06 16:59:19 +00002125 Generate the file names in a directory tree by walking the tree
2126 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002127 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2128 filenames)``.
2129
2130 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2131 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2132 *filenames* is a list of the names of the non-directory files in *dirpath*.
2133 Note that the names in the lists contain no path components. To get a full path
2134 (which begins with *top*) to a file or directory in *dirpath*, do
2135 ``os.path.join(dirpath, name)``.
2136
Christian Heimesfaf2f632008-01-06 16:59:19 +00002137 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002138 directory is generated before the triples for any of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002139 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002140 directory is generated after the triples for all of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002141 (directories are generated bottom-up).
Georg Brandl116aa622007-08-15 14:28:22 +00002142
Christian Heimesfaf2f632008-01-06 16:59:19 +00002143 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002144 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2145 recurse into the subdirectories whose names remain in *dirnames*; this can be
2146 used to prune the search, impose a specific order of visiting, or even to inform
2147 :func:`walk` about directories the caller creates or renames before it resumes
Christian Heimesfaf2f632008-01-06 16:59:19 +00002148 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl116aa622007-08-15 14:28:22 +00002149 ineffective, because in bottom-up mode the directories in *dirnames* are
2150 generated before *dirpath* itself is generated.
2151
Ezio Melotti67494f22011-10-18 12:59:39 +03002152 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002153 argument *onerror* is specified, it should be a function; it will be called with
2154 one argument, an :exc:`OSError` instance. It can report the error to continue
2155 with the walk, or raise the exception to abort the walk. Note that the filename
2156 is available as the ``filename`` attribute of the exception object.
2157
2158 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002159 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002160 symlinks, on systems that support them.
2161
Georg Brandl116aa622007-08-15 14:28:22 +00002162 .. note::
2163
Georg Brandl50c40002012-06-24 11:45:20 +02002164 Be aware that setting *followlinks* to ``True`` can lead to infinite
2165 recursion if a link points to a parent directory of itself. :func:`walk`
2166 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00002167
2168 .. note::
2169
2170 If you pass a relative pathname, don't change the current working directory
2171 between resumptions of :func:`walk`. :func:`walk` never changes the current
2172 directory, and assumes that its caller doesn't either.
2173
2174 This example displays the number of bytes taken by non-directory files in each
2175 directory under the starting directory, except that it doesn't look under any
2176 CVS subdirectory::
2177
2178 import os
2179 from os.path import join, getsize
2180 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002181 print(root, "consumes", end=" ")
2182 print(sum(getsize(join(root, name)) for name in files), end=" ")
2183 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002184 if 'CVS' in dirs:
2185 dirs.remove('CVS') # don't visit CVS directories
2186
Christian Heimesfaf2f632008-01-06 16:59:19 +00002187 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl116aa622007-08-15 14:28:22 +00002188 doesn't allow deleting a directory before the directory is empty::
2189
Christian Heimesfaf2f632008-01-06 16:59:19 +00002190 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002191 # assuming there are no symbolic links.
2192 # CAUTION: This is dangerous! For example, if top == '/', it
2193 # could delete all your disk files.
2194 import os
2195 for root, dirs, files in os.walk(top, topdown=False):
2196 for name in files:
2197 os.remove(os.path.join(root, name))
2198 for name in dirs:
2199 os.rmdir(os.path.join(root, name))
2200
Georg Brandl116aa622007-08-15 14:28:22 +00002201
Charles-François Natali7372b062012-02-05 15:15:38 +01002202.. function:: fwalk(top, topdown=True, onerror=None, followlinks=False)
2203
2204 .. index::
2205 single: directory; walking
2206 single: directory; traversal
2207
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002208 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
2209 ``(dirpath, dirnames, filenames, dirfd)``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002210
2211 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2212 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2213
2214 .. note::
2215
2216 Since :func:`fwalk` yields file descriptors, those are only valid until
2217 the next iteration step, so you should duplicate them (e.g. with
2218 :func:`dup`) if you want to keep them longer.
2219
2220 This example displays the number of bytes taken by non-directory files in each
2221 directory under the starting directory, except that it doesn't look under any
2222 CVS subdirectory::
2223
2224 import os
2225 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2226 print(root, "consumes", end="")
2227 print(sum([os.fstatat(rootfd, name).st_size for name in files]),
2228 end="")
2229 print("bytes in", len(files), "non-directory files")
2230 if 'CVS' in dirs:
2231 dirs.remove('CVS') # don't visit CVS directories
2232
2233 In the next example, walking the tree bottom-up is essential:
2234 :func:`unlinkat` doesn't allow deleting a directory before the directory is
2235 empty::
2236
2237 # Delete everything reachable from the directory named in "top",
2238 # assuming there are no symbolic links.
2239 # CAUTION: This is dangerous! For example, if top == '/', it
2240 # could delete all your disk files.
2241 import os
2242 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2243 for name in files:
2244 os.unlinkat(rootfd, name)
2245 for name in dirs:
2246 os.unlinkat(rootfd, name, os.AT_REMOVEDIR)
2247
2248 Availability: Unix.
2249
2250 .. versionadded:: 3.3
2251
2252
Georg Brandlb9831ab2012-06-24 11:57:07 +02002253Linux extended attributes
2254~~~~~~~~~~~~~~~~~~~~~~~~~
2255
2256.. versionadded:: 3.3
2257
2258These functions are all available on Linux only.
2259
2260.. function:: getxattr(path, attribute, *, follow_symlinks=True)
2261
2262 Return the value of the extended filesystem attribute *attribute* for
2263 *path*. *attribute* can be bytes or str. If it is str, it is encoded
2264 with the filesystem encoding.
2265
2266 This function can support :ref:`specifying a file descriptor <path_fd>` and
2267 :ref:`not following symlinks <follow_symlinks>`.
2268
2269
2270.. function:: listxattr(path=None, *, follow_symlinks=True)
2271
2272 Return a list of the extended filesystem attributes on *path*. The
2273 attributes in the list are represented as strings decoded with the filesystem
2274 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
2275 directory.
2276
2277 This function can support :ref:`specifying a file descriptor <path_fd>` and
2278 :ref:`not following symlinks <follow_symlinks>`.
2279
2280
2281.. function:: removexattr(path, attribute, *, follow_symlinks=True)
2282
2283 Removes the extended filesystem attribute *attribute* from *path*.
2284 *attribute* should be bytes or str. If it is a string, it is encoded
2285 with the filesystem encoding.
2286
2287 This function can support :ref:`specifying a file descriptor <path_fd>` and
2288 :ref:`not following symlinks <follow_symlinks>`.
2289
2290
2291.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
2292
2293 Set the extended filesystem attribute *attribute* on *path* to *value*.
2294 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
2295 it is encoded with the filesystem encoding. *flags* may be
2296 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
2297 given and the attribute does not exist, ``EEXISTS`` will be raised.
2298 If :data:`XATTR_CREATE` is given and the attribute already exists, the
2299 attribute will not be created and ``ENODATA`` will be raised.
2300
2301 This function can support :ref:`specifying a file descriptor <path_fd>` and
2302 :ref:`not following symlinks <follow_symlinks>`.
2303
2304 .. note::
2305
2306 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
2307 to be ignored on some filesystems.
2308
2309
2310.. data:: XATTR_SIZE_MAX
2311
2312 The maximum size the value of an extended attribute can be. Currently, this
2313 is 64 kilobytes on Linux.
2314
2315
2316.. data:: XATTR_CREATE
2317
2318 This is a possible value for the flags argument in :func:`setxattr`. It
2319 indicates the operation must create an attribute.
2320
2321
2322.. data:: XATTR_REPLACE
2323
2324 This is a possible value for the flags argument in :func:`setxattr`. It
2325 indicates the operation must replace an existing attribute.
2326
2327
Georg Brandl116aa622007-08-15 14:28:22 +00002328.. _os-process:
2329
2330Process Management
2331------------------
2332
2333These functions may be used to create and manage processes.
2334
2335The various :func:`exec\*` functions take a list of arguments for the new
2336program loaded into the process. In each case, the first of these arguments is
2337passed to the new program as its own name rather than as an argument a user may
2338have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002339passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002340['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2341to be ignored.
2342
2343
2344.. function:: abort()
2345
2346 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2347 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002348 an exit code of ``3``. Be aware that calling this function will not call the
2349 Python signal handler registered for :const:`SIGABRT` with
2350 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002351
Georg Brandlc575c902008-09-13 17:46:05 +00002352 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002353
2354
2355.. function:: execl(path, arg0, arg1, ...)
2356 execle(path, arg0, arg1, ..., env)
2357 execlp(file, arg0, arg1, ...)
2358 execlpe(file, arg0, arg1, ..., env)
2359 execv(path, args)
2360 execve(path, args, env)
2361 execvp(file, args)
2362 execvpe(file, args, env)
2363
2364 These functions all execute a new program, replacing the current process; they
2365 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002366 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002367 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002368
2369 The current process is replaced immediately. Open file objects and
2370 descriptors are not flushed, so if there may be data buffered
2371 on these open files, you should flush them using
2372 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
2373 :func:`exec\*` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002374
Christian Heimesfaf2f632008-01-06 16:59:19 +00002375 The "l" and "v" variants of the :func:`exec\*` functions differ in how
2376 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002377 to work with if the number of parameters is fixed when the code is written; the
2378 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002379 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002380 variable, with the arguments being passed in a list or tuple as the *args*
2381 parameter. In either case, the arguments to the child process should start with
2382 the name of the command being run, but this is not enforced.
2383
Christian Heimesfaf2f632008-01-06 16:59:19 +00002384 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002385 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2386 :envvar:`PATH` environment variable to locate the program *file*. When the
2387 environment is being replaced (using one of the :func:`exec\*e` variants,
2388 discussed in the next paragraph), the new environment is used as the source of
2389 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2390 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2391 locate the executable; *path* must contain an appropriate absolute or relative
2392 path.
2393
2394 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002395 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002396 used to define the environment variables for the new process (these are used
2397 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002398 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002399 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002400
Larry Hastings9cf065c2012-06-22 16:30:09 -07002401 For :func:`execve` on some platforms, *path* may also be specified as an open
2402 file descriptor. This functionality may not be supported on your platform;
2403 you can check whether or not it is available using :data:`os.supports_fd`.
2404 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2405
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002406 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002407
Larry Hastings9cf065c2012-06-22 16:30:09 -07002408 .. versionadded:: 3.3
2409 Added support for specifying an open file descriptor for *path*
2410 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002411
2412.. function:: _exit(n)
2413
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002414 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002415 stdio buffers, etc.
2416
2417 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002418
2419 .. note::
2420
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002421 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2422 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002423
Christian Heimesfaf2f632008-01-06 16:59:19 +00002424The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002425although they are not required. These are typically used for system programs
2426written in Python, such as a mail server's external command delivery program.
2427
2428.. note::
2429
2430 Some of these may not be available on all Unix platforms, since there is some
2431 variation. These constants are defined where they are defined by the underlying
2432 platform.
2433
2434
2435.. data:: EX_OK
2436
Benjamin Petersonf650e462010-05-06 23:03:05 +00002437 Exit code that means no error occurred.
2438
2439 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002440
Georg Brandl116aa622007-08-15 14:28:22 +00002441
2442.. data:: EX_USAGE
2443
2444 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002445 number of arguments are given.
2446
2447 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002448
Georg Brandl116aa622007-08-15 14:28:22 +00002449
2450.. data:: EX_DATAERR
2451
Benjamin Petersonf650e462010-05-06 23:03:05 +00002452 Exit code that means the input data was incorrect.
2453
2454 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002455
Georg Brandl116aa622007-08-15 14:28:22 +00002456
2457.. data:: EX_NOINPUT
2458
2459 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002460
Georg Brandlc575c902008-09-13 17:46:05 +00002461 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002462
Georg Brandl116aa622007-08-15 14:28:22 +00002463
2464.. data:: EX_NOUSER
2465
Benjamin Petersonf650e462010-05-06 23:03:05 +00002466 Exit code that means a specified user did not exist.
2467
2468 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002469
Georg Brandl116aa622007-08-15 14:28:22 +00002470
2471.. data:: EX_NOHOST
2472
Benjamin Petersonf650e462010-05-06 23:03:05 +00002473 Exit code that means a specified host did not exist.
2474
2475 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002476
Georg Brandl116aa622007-08-15 14:28:22 +00002477
2478.. data:: EX_UNAVAILABLE
2479
Benjamin Petersonf650e462010-05-06 23:03:05 +00002480 Exit code that means that a required service is unavailable.
2481
2482 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002483
Georg Brandl116aa622007-08-15 14:28:22 +00002484
2485.. data:: EX_SOFTWARE
2486
Benjamin Petersonf650e462010-05-06 23:03:05 +00002487 Exit code that means an internal software error was detected.
2488
2489 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002490
Georg Brandl116aa622007-08-15 14:28:22 +00002491
2492.. data:: EX_OSERR
2493
2494 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002495 inability to fork or create a pipe.
2496
2497 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002498
Georg Brandl116aa622007-08-15 14:28:22 +00002499
2500.. data:: EX_OSFILE
2501
2502 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002503 some other kind of error.
2504
2505 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002506
Georg Brandl116aa622007-08-15 14:28:22 +00002507
2508.. data:: EX_CANTCREAT
2509
2510 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002511
Georg Brandlc575c902008-09-13 17:46:05 +00002512 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002513
Georg Brandl116aa622007-08-15 14:28:22 +00002514
2515.. data:: EX_IOERR
2516
2517 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002518
Georg Brandlc575c902008-09-13 17:46:05 +00002519 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002520
Georg Brandl116aa622007-08-15 14:28:22 +00002521
2522.. data:: EX_TEMPFAIL
2523
2524 Exit code that means a temporary failure occurred. This indicates something
2525 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002526 made during a retryable operation.
2527
2528 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002529
Georg Brandl116aa622007-08-15 14:28:22 +00002530
2531.. data:: EX_PROTOCOL
2532
2533 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002534 understood.
2535
2536 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002537
Georg Brandl116aa622007-08-15 14:28:22 +00002538
2539.. data:: EX_NOPERM
2540
2541 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002542 operation (but not intended for file system problems).
2543
2544 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002545
Georg Brandl116aa622007-08-15 14:28:22 +00002546
2547.. data:: EX_CONFIG
2548
2549 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002550
Georg Brandlc575c902008-09-13 17:46:05 +00002551 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002552
Georg Brandl116aa622007-08-15 14:28:22 +00002553
2554.. data:: EX_NOTFOUND
2555
Benjamin Petersonf650e462010-05-06 23:03:05 +00002556 Exit code that means something like "an entry was not found".
2557
2558 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002559
Georg Brandl116aa622007-08-15 14:28:22 +00002560
2561.. function:: fork()
2562
Christian Heimesfaf2f632008-01-06 16:59:19 +00002563 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002564 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002565
2566 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
2567 known issues when using fork() from a thread.
2568
Georg Brandlc575c902008-09-13 17:46:05 +00002569 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002570
2571
2572.. function:: forkpty()
2573
2574 Fork a child process, using a new pseudo-terminal as the child's controlling
2575 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2576 new child's process id in the parent, and *fd* is the file descriptor of the
2577 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002578 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002579
Georg Brandlc575c902008-09-13 17:46:05 +00002580 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002581
2582
2583.. function:: kill(pid, sig)
2584
2585 .. index::
2586 single: process; killing
2587 single: process; signalling
2588
2589 Send signal *sig* to the process *pid*. Constants for the specific signals
2590 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00002591
2592 Windows: The :data:`signal.CTRL_C_EVENT` and
2593 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
2594 only be sent to console processes which share a common console window,
2595 e.g., some subprocesses. Any other value for *sig* will cause the process
2596 to be unconditionally killed by the TerminateProcess API, and the exit code
2597 will be set to *sig*. The Windows version of :func:`kill` additionally takes
2598 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00002599
Victor Stinnerb3e72192011-05-08 01:46:11 +02002600 See also :func:`signal.pthread_kill`.
2601
Georg Brandl67b21b72010-08-17 15:07:14 +00002602 .. versionadded:: 3.2
2603 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00002604
Georg Brandl116aa622007-08-15 14:28:22 +00002605
2606.. function:: killpg(pgid, sig)
2607
2608 .. index::
2609 single: process; killing
2610 single: process; signalling
2611
Benjamin Petersonf650e462010-05-06 23:03:05 +00002612 Send the signal *sig* to the process group *pgid*.
2613
2614 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002615
Georg Brandl116aa622007-08-15 14:28:22 +00002616
2617.. function:: nice(increment)
2618
2619 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002620
Georg Brandlc575c902008-09-13 17:46:05 +00002621 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002622
2623
2624.. function:: plock(op)
2625
2626 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00002627 ``<sys/lock.h>``) determines which segments are locked.
2628
2629 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002630
2631
2632.. function:: popen(...)
2633 :noindex:
2634
2635 Run child processes, returning opened pipes for communications. These functions
2636 are described in section :ref:`os-newstreams`.
2637
2638
2639.. function:: spawnl(mode, path, ...)
2640 spawnle(mode, path, ..., env)
2641 spawnlp(mode, file, ...)
2642 spawnlpe(mode, file, ..., env)
2643 spawnv(mode, path, args)
2644 spawnve(mode, path, args, env)
2645 spawnvp(mode, file, args)
2646 spawnvpe(mode, file, args, env)
2647
2648 Execute the program *path* in a new process.
2649
2650 (Note that the :mod:`subprocess` module provides more powerful facilities for
2651 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00002652 preferable to using these functions. Check especially the
2653 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00002654
Christian Heimesfaf2f632008-01-06 16:59:19 +00002655 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00002656 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
2657 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002658 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00002659 be used with the :func:`waitpid` function.
2660
Christian Heimesfaf2f632008-01-06 16:59:19 +00002661 The "l" and "v" variants of the :func:`spawn\*` functions differ in how
2662 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002663 to work with if the number of parameters is fixed when the code is written; the
2664 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002665 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00002666 parameters is variable, with the arguments being passed in a list or tuple as
2667 the *args* parameter. In either case, the arguments to the child process must
2668 start with the name of the command being run.
2669
Christian Heimesfaf2f632008-01-06 16:59:19 +00002670 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002671 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
2672 :envvar:`PATH` environment variable to locate the program *file*. When the
2673 environment is being replaced (using one of the :func:`spawn\*e` variants,
2674 discussed in the next paragraph), the new environment is used as the source of
2675 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
2676 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
2677 :envvar:`PATH` variable to locate the executable; *path* must contain an
2678 appropriate absolute or relative path.
2679
2680 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002681 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00002682 which is used to define the environment variables for the new process (they are
2683 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00002684 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00002685 the new process to inherit the environment of the current process. Note that
2686 keys and values in the *env* dictionary must be strings; invalid keys or
2687 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00002688
2689 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
2690 equivalent::
2691
2692 import os
2693 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
2694
2695 L = ['cp', 'index.html', '/dev/null']
2696 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
2697
2698 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02002699 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
2700 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
2701 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00002702
Georg Brandl116aa622007-08-15 14:28:22 +00002703
2704.. data:: P_NOWAIT
2705 P_NOWAITO
2706
2707 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2708 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00002709 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00002710 the return value.
2711
2712 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002713
Georg Brandl116aa622007-08-15 14:28:22 +00002714
2715.. data:: P_WAIT
2716
2717 Possible value for the *mode* parameter to the :func:`spawn\*` family of
2718 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
2719 return until the new process has run to completion and will return the exit code
2720 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002721 process.
2722
2723 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002724
Georg Brandl116aa622007-08-15 14:28:22 +00002725
2726.. data:: P_DETACH
2727 P_OVERLAY
2728
2729 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2730 functions. These are less portable than those listed above. :const:`P_DETACH`
2731 is similar to :const:`P_NOWAIT`, but the new process is detached from the
2732 console of the calling process. If :const:`P_OVERLAY` is used, the current
2733 process will be replaced; the :func:`spawn\*` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002734
Georg Brandl116aa622007-08-15 14:28:22 +00002735 Availability: Windows.
2736
Georg Brandl116aa622007-08-15 14:28:22 +00002737
2738.. function:: startfile(path[, operation])
2739
2740 Start a file with its associated application.
2741
2742 When *operation* is not specified or ``'open'``, this acts like double-clicking
2743 the file in Windows Explorer, or giving the file name as an argument to the
2744 :program:`start` command from the interactive command shell: the file is opened
2745 with whatever application (if any) its extension is associated.
2746
2747 When another *operation* is given, it must be a "command verb" that specifies
2748 what should be done with the file. Common verbs documented by Microsoft are
2749 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
2750 ``'find'`` (to be used on directories).
2751
2752 :func:`startfile` returns as soon as the associated application is launched.
2753 There is no option to wait for the application to close, and no way to retrieve
2754 the application's exit status. The *path* parameter is relative to the current
2755 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00002756 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00002757 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00002758 the path is properly encoded for Win32.
2759
2760 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002761
Georg Brandl116aa622007-08-15 14:28:22 +00002762
2763.. function:: system(command)
2764
2765 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00002766 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00002767 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
2768 the executed command. If *command* generates any output, it will be sent to
2769 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00002770
2771 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00002772 format specified for :func:`wait`. Note that POSIX does not specify the
2773 meaning of the return value of the C :c:func:`system` function, so the return
2774 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00002775
Georg Brandl8f7b4272010-10-14 06:35:53 +00002776 On Windows, the return value is that returned by the system shell after
2777 running *command*. The shell is given by the Windows environment variable
2778 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
2779 status of the command run; on systems using a non-native shell, consult your
2780 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00002781
Georg Brandl8f7b4272010-10-14 06:35:53 +00002782 The :mod:`subprocess` module provides more powerful facilities for spawning
2783 new processes and retrieving their results; using that module is preferable
2784 to using this function. See the :ref:`subprocess-replacements` section in
2785 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00002786
Benjamin Petersonf650e462010-05-06 23:03:05 +00002787 Availability: Unix, Windows.
2788
Georg Brandl116aa622007-08-15 14:28:22 +00002789
2790.. function:: times()
2791
Benjamin Petersonf650e462010-05-06 23:03:05 +00002792 Return a 5-tuple of floating point numbers indicating accumulated (processor
2793 or other) times, in seconds. The items are: user time, system time,
2794 children's user time, children's system time, and elapsed real time since a
2795 fixed point in the past, in that order. See the Unix manual page
2796 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
2797 On Windows, only the first two items are filled, the others are zero.
2798
2799 Availability: Unix, Windows
Georg Brandl116aa622007-08-15 14:28:22 +00002800
2801
2802.. function:: wait()
2803
2804 Wait for completion of a child process, and return a tuple containing its pid
2805 and exit status indication: a 16-bit number, whose low byte is the signal number
2806 that killed the process, and whose high byte is the exit status (if the signal
2807 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00002808 produced.
2809
2810 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002811
Ross Lagerwall7807c352011-03-17 20:20:30 +02002812.. function:: waitid(idtype, id, options)
2813
2814 Wait for the completion of one or more child processes.
2815 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
2816 *id* specifies the pid to wait on.
2817 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
2818 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
2819 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
2820 representing the data contained in the :c:type:`siginfo_t` structure, namely:
2821 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
2822 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
2823 children in a waitable state.
2824
2825 Availability: Unix.
2826
2827 .. versionadded:: 3.3
2828
2829.. data:: P_PID
2830 P_PGID
2831 P_ALL
2832
2833 These are the possible values for *idtype* in :func:`waitid`. They affect
2834 how *id* is interpreted.
2835
2836 Availability: Unix.
2837
2838 .. versionadded:: 3.3
2839
2840.. data:: WEXITED
2841 WSTOPPED
2842 WNOWAIT
2843
2844 Flags that can be used in *options* in :func:`waitid` that specify what
2845 child signal to wait for.
2846
2847 Availability: Unix.
2848
2849 .. versionadded:: 3.3
2850
2851
2852.. data:: CLD_EXITED
2853 CLD_DUMPED
2854 CLD_TRAPPED
2855 CLD_CONTINUED
2856
2857 These are the possible values for :attr:`si_code` in the result returned by
2858 :func:`waitid`.
2859
2860 Availability: Unix.
2861
2862 .. versionadded:: 3.3
2863
Georg Brandl116aa622007-08-15 14:28:22 +00002864
2865.. function:: waitpid(pid, options)
2866
2867 The details of this function differ on Unix and Windows.
2868
2869 On Unix: Wait for completion of a child process given by process id *pid*, and
2870 return a tuple containing its process id and exit status indication (encoded as
2871 for :func:`wait`). The semantics of the call are affected by the value of the
2872 integer *options*, which should be ``0`` for normal operation.
2873
2874 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
2875 that specific process. If *pid* is ``0``, the request is for the status of any
2876 child in the process group of the current process. If *pid* is ``-1``, the
2877 request pertains to any child of the current process. If *pid* is less than
2878 ``-1``, status is requested for any process in the process group ``-pid`` (the
2879 absolute value of *pid*).
2880
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00002881 An :exc:`OSError` is raised with the value of errno when the syscall
2882 returns -1.
2883
Georg Brandl116aa622007-08-15 14:28:22 +00002884 On Windows: Wait for completion of a process given by process handle *pid*, and
2885 return a tuple containing *pid*, and its exit status shifted left by 8 bits
2886 (shifting makes cross-platform use of the function easier). A *pid* less than or
2887 equal to ``0`` has no special meaning on Windows, and raises an exception. The
2888 value of integer *options* has no effect. *pid* can refer to any process whose
2889 id is known, not necessarily a child process. The :func:`spawn` functions called
2890 with :const:`P_NOWAIT` return suitable process handles.
2891
2892
Victor Stinner4195b5c2012-02-08 23:03:19 +01002893.. function:: wait3([options])
Georg Brandl116aa622007-08-15 14:28:22 +00002894
2895 Similar to :func:`waitpid`, except no process id argument is given and a
2896 3-element tuple containing the child's process id, exit status indication, and
2897 resource usage information is returned. Refer to :mod:`resource`.\
2898 :func:`getrusage` for details on resource usage information. The option
2899 argument is the same as that provided to :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002900
Georg Brandl116aa622007-08-15 14:28:22 +00002901 Availability: Unix.
2902
Georg Brandl116aa622007-08-15 14:28:22 +00002903
Victor Stinner4195b5c2012-02-08 23:03:19 +01002904.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00002905
2906 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
2907 process id, exit status indication, and resource usage information is returned.
2908 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage
2909 information. The arguments to :func:`wait4` are the same as those provided to
Benjamin Petersonf650e462010-05-06 23:03:05 +00002910 :func:`waitpid`.
2911
2912 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002913
Georg Brandl116aa622007-08-15 14:28:22 +00002914
2915.. data:: WNOHANG
2916
2917 The option for :func:`waitpid` to return immediately if no child process status
2918 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002919
Georg Brandlc575c902008-09-13 17:46:05 +00002920 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002921
2922
2923.. data:: WCONTINUED
2924
2925 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00002926 from a job control stop since their status was last reported.
2927
2928 Availability: Some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00002929
Georg Brandl116aa622007-08-15 14:28:22 +00002930
2931.. data:: WUNTRACED
2932
2933 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00002934 their current state has not been reported since they were stopped.
2935
2936 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002937
Georg Brandl116aa622007-08-15 14:28:22 +00002938
2939The following functions take a process status code as returned by
2940:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
2941used to determine the disposition of a process.
2942
Georg Brandl116aa622007-08-15 14:28:22 +00002943.. function:: WCOREDUMP(status)
2944
Christian Heimesfaf2f632008-01-06 16:59:19 +00002945 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00002946 return ``False``.
2947
2948 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002949
Georg Brandl116aa622007-08-15 14:28:22 +00002950
2951.. function:: WIFCONTINUED(status)
2952
Christian Heimesfaf2f632008-01-06 16:59:19 +00002953 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002954 otherwise return ``False``.
2955
2956 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002957
Georg Brandl116aa622007-08-15 14:28:22 +00002958
2959.. function:: WIFSTOPPED(status)
2960
Christian Heimesfaf2f632008-01-06 16:59:19 +00002961 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00002962 ``False``.
2963
2964 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002965
2966
2967.. function:: WIFSIGNALED(status)
2968
Christian Heimesfaf2f632008-01-06 16:59:19 +00002969 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00002970 ``False``.
2971
2972 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002973
2974
2975.. function:: WIFEXITED(status)
2976
Christian Heimesfaf2f632008-01-06 16:59:19 +00002977 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002978 otherwise return ``False``.
2979
2980 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002981
2982
2983.. function:: WEXITSTATUS(status)
2984
2985 If ``WIFEXITED(status)`` is true, return the integer parameter to the
2986 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002987
Georg Brandlc575c902008-09-13 17:46:05 +00002988 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002989
2990
2991.. function:: WSTOPSIG(status)
2992
Benjamin Petersonf650e462010-05-06 23:03:05 +00002993 Return the signal which caused the process to stop.
2994
2995 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002996
2997
2998.. function:: WTERMSIG(status)
2999
Benjamin Petersonf650e462010-05-06 23:03:05 +00003000 Return the signal which caused the process to exit.
3001
3002 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003003
3004
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003005Interface to the scheduler
3006--------------------------
3007
3008These functions control how a process is allocated CPU time by the operating
3009system. They are only available on some Unix platforms. For more detailed
3010information, consult your Unix manpages.
3011
3012.. versionadded:: 3.3
3013
3014The following scheduling policies are exposed if they are a supported by the
3015operating system.
3016
3017.. data:: SCHED_OTHER
3018
3019 The default scheduling policy.
3020
3021.. data:: SCHED_BATCH
3022
3023 Scheduling policy for CPU-intensive processes that tries to preserve
3024 interactivity on the rest of the computer.
3025
3026.. data:: SCHED_IDLE
3027
3028 Scheduling policy for extremely low priority background tasks.
3029
3030.. data:: SCHED_SPORADIC
3031
3032 Scheduling policy for sporadic server programs.
3033
3034.. data:: SCHED_FIFO
3035
3036 A First In First Out scheduling policy.
3037
3038.. data:: SCHED_RR
3039
3040 A round-robin scheduling policy.
3041
3042.. data:: SCHED_RESET_ON_FORK
3043
3044 This flag can OR'ed with any other scheduling policy. When a process with
3045 this flag set forks, its child's scheduling policy and priority are reset to
3046 the default.
3047
3048
3049.. class:: sched_param(sched_priority)
3050
3051 This class represents tunable scheduling parameters used in
3052 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3053 :func:`sched_getparam`. It is immutable.
3054
3055 At the moment, there is only one possible parameter:
3056
3057 .. attribute:: sched_priority
3058
3059 The scheduling priority for a scheduling policy.
3060
3061
3062.. function:: sched_get_priority_min(policy)
3063
3064 Get the minimum priority value for *policy*. *policy* is one of the
3065 scheduling policy constants above.
3066
3067
3068.. function:: sched_get_priority_max(policy)
3069
3070 Get the maximum priority value for *policy*. *policy* is one of the
3071 scheduling policy constants above.
3072
3073
3074.. function:: sched_setscheduler(pid, policy, param)
3075
3076 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3077 the calling process. *policy* is one of the scheduling policy constants
3078 above. *param* is a :class:`sched_param` instance.
3079
3080
3081.. function:: sched_getscheduler(pid)
3082
3083 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3084 means the calling process. The result is one of the scheduling policy
3085 constants above.
3086
3087
3088.. function:: sched_setparam(pid, param)
3089
3090 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3091 the calling process. *param* is a :class:`sched_param` instance.
3092
3093
3094.. function:: sched_getparam(pid)
3095
3096 Return the scheduling parameters as a :class:`sched_param` instance for the
3097 process with PID *pid*. A *pid* of 0 means the calling process.
3098
3099
3100.. function:: sched_rr_get_interval(pid)
3101
3102 Return the round-robin quantum in seconds for the process with PID *pid*. A
3103 *pid* of 0 means the calling process.
3104
3105
3106.. function:: sched_yield()
3107
3108 Voluntarily relinquish the CPU.
3109
3110
3111.. class:: cpu_set(ncpus)
3112
3113 :class:`cpu_set` represents a set of CPUs on which a process is eligible to
3114 run. *ncpus* is the number of CPUs the set should describe. Methods on
3115 :class:`cpu_set` allow CPUs to be add or removed.
3116
3117 :class:`cpu_set` supports the AND, OR, and XOR bitwise operations. For
3118 example, given two cpu_sets, ``one`` and ``two``, ``one | two`` returns a
3119 :class:`cpu_set` containing the cpus enabled both in ``one`` and ``two``.
3120
3121 .. method:: set(i)
3122
3123 Enable CPU *i*.
3124
3125 .. method:: clear(i)
3126
3127 Remove CPU *i*.
3128
3129 .. method:: isset(i)
3130
3131 Return ``True`` if CPU *i* is enabled in the set.
3132
3133 .. method:: count()
3134
3135 Return the number of enabled CPUs in the set.
3136
3137 .. method:: zero()
3138
3139 Clear the set completely.
3140
3141
3142.. function:: sched_setaffinity(pid, mask)
3143
3144 Restrict the process with PID *pid* to a set of CPUs. *mask* is a
3145 :class:`cpu_set` instance.
3146
3147
3148.. function:: sched_getaffinity(pid, size)
3149
3150 Return the :class:`cpu_set` the process with PID *pid* is restricted to. The
3151 result will contain *size* CPUs.
3152
3153
Georg Brandl116aa622007-08-15 14:28:22 +00003154.. _os-path:
3155
3156Miscellaneous System Information
3157--------------------------------
3158
3159
3160.. function:: confstr(name)
3161
3162 Return string-valued system configuration values. *name* specifies the
3163 configuration value to retrieve; it may be a string which is the name of a
3164 defined system value; these names are specified in a number of standards (POSIX,
3165 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3166 The names known to the host operating system are given as the keys of the
3167 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003168 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003169
3170 If the configuration value specified by *name* isn't defined, ``None`` is
3171 returned.
3172
3173 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3174 specific value for *name* is not supported by the host system, even if it is
3175 included in ``confstr_names``, an :exc:`OSError` is raised with
3176 :const:`errno.EINVAL` for the error number.
3177
Benjamin Petersonf650e462010-05-06 23:03:05 +00003178 Availability: Unix
3179
Georg Brandl116aa622007-08-15 14:28:22 +00003180
3181.. data:: confstr_names
3182
3183 Dictionary mapping names accepted by :func:`confstr` to the integer values
3184 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003185 determine the set of names known to the system.
3186
3187 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003188
3189
3190.. function:: getloadavg()
3191
Christian Heimesa62da1d2008-01-12 19:39:10 +00003192 Return the number of processes in the system run queue averaged over the last
3193 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003194 unobtainable.
3195
3196 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003197
Georg Brandl116aa622007-08-15 14:28:22 +00003198
3199.. function:: sysconf(name)
3200
3201 Return integer-valued system configuration values. If the configuration value
3202 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3203 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3204 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003205
Georg Brandlc575c902008-09-13 17:46:05 +00003206 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003207
3208
3209.. data:: sysconf_names
3210
3211 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3212 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003213 determine the set of names known to the system.
3214
3215 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003216
Christian Heimesfaf2f632008-01-06 16:59:19 +00003217The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003218are defined for all platforms.
3219
3220Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3221
3222
3223.. data:: curdir
3224
3225 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003226 directory. This is ``'.'`` for Windows and POSIX. Also available via
3227 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003228
3229
3230.. data:: pardir
3231
3232 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003233 directory. This is ``'..'`` for Windows and POSIX. Also available via
3234 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003235
3236
3237.. data:: sep
3238
Georg Brandlc575c902008-09-13 17:46:05 +00003239 The character used by the operating system to separate pathname components.
3240 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3241 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003242 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3243 useful. Also available via :mod:`os.path`.
3244
3245
3246.. data:: altsep
3247
3248 An alternative character used by the operating system to separate pathname
3249 components, or ``None`` if only one separator character exists. This is set to
3250 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3251 :mod:`os.path`.
3252
3253
3254.. data:: extsep
3255
3256 The character which separates the base filename from the extension; for example,
3257 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3258
Georg Brandl116aa622007-08-15 14:28:22 +00003259
3260.. data:: pathsep
3261
3262 The character conventionally used by the operating system to separate search
3263 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3264 Windows. Also available via :mod:`os.path`.
3265
3266
3267.. data:: defpath
3268
3269 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the
3270 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`.
3271
3272
3273.. data:: linesep
3274
3275 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003276 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3277 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3278 *os.linesep* as a line terminator when writing files opened in text mode (the
3279 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003280
3281
3282.. data:: devnull
3283
Georg Brandl850a9902010-05-21 22:04:32 +00003284 The file path of the null device. For example: ``'/dev/null'`` for
3285 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003286
Georg Brandl116aa622007-08-15 14:28:22 +00003287
3288.. _os-miscfunc:
3289
3290Miscellaneous Functions
3291-----------------------
3292
3293
3294.. function:: urandom(n)
3295
3296 Return a string of *n* random bytes suitable for cryptographic use.
3297
3298 This function returns random bytes from an OS-specific randomness source. The
3299 returned data should be unpredictable enough for cryptographic applications,
3300 though its exact quality depends on the OS implementation. On a UNIX-like
3301 system this will query /dev/urandom, and on Windows it will use CryptGenRandom.
3302 If a randomness source is not found, :exc:`NotImplementedError` will be raised.