blob: 65a0ac1b0d14dfc539cd1c5dd66494856e6273cf [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),
Benjamin Petersonf650e462010-05-06 23:03:05 +0000648 ignoring errors. Equivalent to::
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 Brandl116aa622007-08-15 14:28:22 +0000732.. function:: fstatvfs(fd)
733
734 Return information about the filesystem containing the file associated with file
Benjamin Petersonf650e462010-05-06 23:03:05 +0000735 descriptor *fd*, like :func:`statvfs`.
736
737 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000738
739
740.. function:: fsync(fd)
741
742 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000743 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000744
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000745 If you're starting with a buffered Python :term:`file object` *f*, first do
746 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
747 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000748
749 Availability: Unix, and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000750
751
752.. function:: ftruncate(fd, length)
753
754 Truncate the file corresponding to file descriptor *fd*, so that it is at most
Benjamin Petersonf650e462010-05-06 23:03:05 +0000755 *length* bytes in size.
756
757 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000758
759
760.. function:: isatty(fd)
761
762 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000763 tty(-like) device, else ``False``.
764
765 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000766
767
Ross Lagerwall7807c352011-03-17 20:20:30 +0200768.. function:: lockf(fd, cmd, len)
769
770 Apply, test or remove a POSIX lock on an open file descriptor.
771 *fd* is an open file descriptor.
772 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
773 :data:`F_ULOCK` or :data:`F_TEST`.
774 *len* specifies the section of the file to lock.
775
776 Availability: Unix.
777
778 .. versionadded:: 3.3
779
780
781.. data:: F_LOCK
782 F_TLOCK
783 F_ULOCK
784 F_TEST
785
786 Flags that specify what action :func:`lockf` will take.
787
788 Availability: Unix.
789
790 .. versionadded:: 3.3
791
Georg Brandl116aa622007-08-15 14:28:22 +0000792.. function:: lseek(fd, pos, how)
793
Christian Heimesfaf2f632008-01-06 16:59:19 +0000794 Set the current position of file descriptor *fd* to position *pos*, modified
795 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
796 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
797 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100798 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000799
800 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000801
802
Georg Brandl8569e582010-05-19 20:57:08 +0000803.. data:: SEEK_SET
804 SEEK_CUR
805 SEEK_END
806
807 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
808 respectively. Availability: Windows, Unix.
809
Jesus Cea94363612012-06-22 18:32:07 +0200810 .. versionadded:: 3.3
811 Some operating systems could support additional values, like
812 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
813
Georg Brandl8569e582010-05-19 20:57:08 +0000814
Larry Hastings9cf065c2012-06-22 16:30:09 -0700815.. function:: open(file, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000816
Georg Brandlf4a41232008-05-26 17:55:52 +0000817 Open the file *file* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700818 its mode according to *mode*. When computing *mode*, the current umask value
819 is first masked out. Return the file descriptor for the newly opened file.
Georg Brandl116aa622007-08-15 14:28:22 +0000820
821 For a description of the flag and mode values, see the C run-time documentation;
822 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Georg Brandl8569e582010-05-19 20:57:08 +0000823 this module too (see :ref:`open-constants`). In particular, on Windows adding
824 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000825
Larry Hastings9cf065c2012-06-22 16:30:09 -0700826 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
827 directory, and *path* should be relative; path will then be relative to
828 that directory. (If *path* is absolute, *dir_fd* is ignored.)
829 *dir_fd* may not be supported on your platform;
830 you can check whether or not it is available using
831 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
832 a :exc:`NotImplementedError`.
833
Benjamin Petersonf650e462010-05-06 23:03:05 +0000834 Availability: Unix, Windows.
835
Georg Brandl116aa622007-08-15 14:28:22 +0000836 .. note::
837
Georg Brandl502d9a52009-07-26 15:02:41 +0000838 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000839 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bc2010-07-13 14:47:01 +0000840 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000841 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000842
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000843 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700844 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000845
846
Georg Brandl116aa622007-08-15 14:28:22 +0000847.. function:: openpty()
848
849 .. index:: module: pty
850
851 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
852 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Benjamin Petersonf650e462010-05-06 23:03:05 +0000853 approach, use the :mod:`pty` module.
854
855 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000856
857
858.. function:: pipe()
859
860 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Benjamin Petersonf650e462010-05-06 23:03:05 +0000861 and writing, respectively.
862
863 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000864
865
Charles-François Natali368f34b2011-06-06 19:49:47 +0200866.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200867
868 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +0200869 *flags* can be constructed by ORing together one or more of these values:
870 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200871 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
872 respectively.
873
874 Availability: some flavors of Unix.
875
876 .. versionadded:: 3.3
877
878
Ross Lagerwall7807c352011-03-17 20:20:30 +0200879.. function:: posix_fallocate(fd, offset, len)
880
881 Ensures that enough disk space is allocated for the file specified by *fd*
882 starting from *offset* and continuing for *len* bytes.
883
884 Availability: Unix.
885
886 .. versionadded:: 3.3
887
888
889.. function:: posix_fadvise(fd, offset, len, advice)
890
891 Announces an intention to access data in a specific pattern thus allowing
892 the kernel to make optimizations.
893 The advice applies to the region of the file specified by *fd* starting at
894 *offset* and continuing for *len* bytes.
895 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
896 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
897 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
898
899 Availability: Unix.
900
901 .. versionadded:: 3.3
902
903
904.. data:: POSIX_FADV_NORMAL
905 POSIX_FADV_SEQUENTIAL
906 POSIX_FADV_RANDOM
907 POSIX_FADV_NOREUSE
908 POSIX_FADV_WILLNEED
909 POSIX_FADV_DONTNEED
910
911 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
912 the access pattern that is likely to be used.
913
914 Availability: Unix.
915
916 .. versionadded:: 3.3
917
918
919.. function:: pread(fd, buffersize, offset)
920
921 Read from a file descriptor, *fd*, at a position of *offset*. It will read up
922 to *buffersize* number of bytes. The file offset remains unchanged.
923
924 Availability: Unix.
925
926 .. versionadded:: 3.3
927
928
929.. function:: pwrite(fd, string, offset)
930
931 Write *string* to a file descriptor, *fd*, from *offset*, leaving the file
932 offset unchanged.
933
934 Availability: Unix.
935
936 .. versionadded:: 3.3
937
938
Georg Brandl116aa622007-08-15 14:28:22 +0000939.. function:: read(fd, n)
940
Georg Brandlb90be692009-07-29 16:14:16 +0000941 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +0000942 bytes read. If the end of the file referred to by *fd* has been reached, an
Benjamin Petersonf650e462010-05-06 23:03:05 +0000943 empty bytes object is returned.
944
945 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000946
947 .. note::
948
949 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000950 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a "file object"
Georg Brandl116aa622007-08-15 14:28:22 +0000951 returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000952 :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
953 :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000954
955
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000956.. function:: sendfile(out, in, offset, nbytes)
957 sendfile(out, in, offset, nbytes, headers=None, trailers=None, flags=0)
958
959 Copy *nbytes* bytes from file descriptor *in* to file descriptor *out*
960 starting at *offset*.
961 Return the number of bytes sent. When EOF is reached return 0.
962
963 The first function notation is supported by all platforms that define
964 :func:`sendfile`.
965
966 On Linux, if *offset* is given as ``None``, the bytes are read from the
967 current position of *in* and the position of *in* is updated.
968
969 The second case may be used on Mac OS X and FreeBSD where *headers* and
970 *trailers* are arbitrary sequences of buffers that are written before and
971 after the data from *in* is written. It returns the same as the first case.
972
973 On Mac OS X and FreeBSD, a value of 0 for *nbytes* specifies to send until
974 the end of *in* is reached.
975
976 On Solaris, *out* may be the file descriptor of a regular file or the file
977 descriptor of a socket. On all other platforms, *out* must be the file
978 descriptor of an open socket.
979
980 Availability: Unix.
981
982 .. versionadded:: 3.3
983
984
985.. data:: SF_NODISKIO
986 SF_MNOWAIT
987 SF_SYNC
988
989 Parameters to the :func:`sendfile` function, if the implementation supports
990 them.
991
992 Availability: Unix.
993
994 .. versionadded:: 3.3
995
996
Ross Lagerwall7807c352011-03-17 20:20:30 +0200997.. function:: readv(fd, buffers)
998
999 Read from a file descriptor into a number of writable buffers. *buffers* is
1000 an arbitrary sequence of writable buffers. Returns the total number of bytes
1001 read.
1002
1003 Availability: Unix.
1004
1005 .. versionadded:: 3.3
1006
1007
Georg Brandl116aa622007-08-15 14:28:22 +00001008.. function:: tcgetpgrp(fd)
1009
1010 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001011 file descriptor as returned by :func:`os.open`).
1012
1013 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001014
1015
1016.. function:: tcsetpgrp(fd, pg)
1017
1018 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001019 descriptor as returned by :func:`os.open`) to *pg*.
1020
1021 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001022
1023
1024.. function:: ttyname(fd)
1025
1026 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001027 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001028 exception is raised.
1029
1030 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001031
1032
1033.. function:: write(fd, str)
1034
Georg Brandlb90be692009-07-29 16:14:16 +00001035 Write the bytestring in *str* to file descriptor *fd*. Return the number of
Benjamin Petersonf650e462010-05-06 23:03:05 +00001036 bytes actually written.
1037
1038 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001039
1040 .. note::
1041
1042 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001043 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001044 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001045 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1046 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001047
Georg Brandl8569e582010-05-19 20:57:08 +00001048
Ross Lagerwall7807c352011-03-17 20:20:30 +02001049.. function:: writev(fd, buffers)
1050
Ezio Melottif1064492011-10-19 11:06:26 +03001051 Write the contents of *buffers* to file descriptor *fd*, where *buffers*
Ross Lagerwall7807c352011-03-17 20:20:30 +02001052 is an arbitrary sequence of buffers.
1053 Returns the total number of bytes written.
1054
1055 Availability: Unix.
1056
1057 .. versionadded:: 3.3
1058
1059
Georg Brandl8569e582010-05-19 20:57:08 +00001060.. _open-constants:
1061
1062``open()`` flag constants
1063~~~~~~~~~~~~~~~~~~~~~~~~~
1064
Georg Brandlaf265f42008-12-07 15:06:20 +00001065The following constants are options for the *flags* parameter to the
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001066:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandlaf265f42008-12-07 15:06:20 +00001067``|``. Some of them are not available on all platforms. For descriptions of
1068their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmanneb097fc2009-09-20 20:56:56 +00001069or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001070
1071
1072.. data:: O_RDONLY
1073 O_WRONLY
1074 O_RDWR
1075 O_APPEND
1076 O_CREAT
1077 O_EXCL
1078 O_TRUNC
1079
Georg Brandlaf265f42008-12-07 15:06:20 +00001080 These constants are available on Unix and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001081
1082
1083.. data:: O_DSYNC
1084 O_RSYNC
1085 O_SYNC
1086 O_NDELAY
1087 O_NONBLOCK
1088 O_NOCTTY
1089 O_SHLOCK
1090 O_EXLOCK
Charles-François Natali1e045b12011-05-22 20:42:32 +02001091 O_CLOEXEC
Georg Brandl116aa622007-08-15 14:28:22 +00001092
Georg Brandlaf265f42008-12-07 15:06:20 +00001093 These constants are only available on Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001094
Victor Stinnere3455c02011-10-20 00:46:21 +02001095 .. versionchanged:: 3.3
1096 Add :data:`O_CLOEXEC` constant.
Georg Brandl116aa622007-08-15 14:28:22 +00001097
1098.. data:: O_BINARY
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001099 O_NOINHERIT
Georg Brandl116aa622007-08-15 14:28:22 +00001100 O_SHORT_LIVED
1101 O_TEMPORARY
1102 O_RANDOM
1103 O_SEQUENTIAL
1104 O_TEXT
1105
Georg Brandlaf265f42008-12-07 15:06:20 +00001106 These constants are only available on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001107
1108
Alexandre Vassalottibee32532008-05-16 18:15:12 +00001109.. data:: O_ASYNC
1110 O_DIRECT
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001111 O_DIRECTORY
1112 O_NOFOLLOW
1113 O_NOATIME
1114
Georg Brandlaf265f42008-12-07 15:06:20 +00001115 These constants are GNU extensions and not present if they are not defined by
1116 the C library.
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001117
1118
Victor Stinner8b905bd2011-10-25 13:34:04 +02001119.. data:: RTLD_LAZY
1120 RTLD_NOW
1121 RTLD_GLOBAL
1122 RTLD_LOCAL
1123 RTLD_NODELETE
1124 RTLD_NOLOAD
1125 RTLD_DEEPBIND
1126
1127 See the Unix manual page :manpage:`dlopen(3)`.
1128
1129 .. versionadded:: 3.3
1130
1131
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001132.. _terminal-size:
1133
1134Querying the size of a terminal
1135~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1136
1137.. versionadded:: 3.3
1138
1139.. function:: get_terminal_size(fd=STDOUT_FILENO)
1140
1141 Return the size of the terminal window as ``(columns, lines)``,
1142 tuple of type :class:`terminal_size`.
1143
1144 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1145 output) specifies which file descriptor should be queried.
1146
1147 If the file descriptor is not connected to a terminal, an :exc:`OSError`
1148 is thrown.
1149
1150 :func:`shutil.get_terminal_size` is the high-level function which
1151 should normally be used, ``os.get_terminal_size`` is the low-level
1152 implementation.
1153
1154 Availability: Unix, Windows.
1155
1156.. class:: terminal_size(tuple)
1157
1158 A tuple of ``(columns, lines)`` for holding terminal window size.
1159
1160 .. attribute:: columns
1161
1162 Width of the terminal window in characters.
1163
1164 .. attribute:: lines
1165
1166 Height of the terminal window in characters.
1167
1168
Georg Brandl116aa622007-08-15 14:28:22 +00001169.. _os-file-dir:
1170
1171Files and Directories
1172---------------------
1173
Larry Hastings9cf065c2012-06-22 16:30:09 -07001174.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001175
1176 Use the real uid/gid to test for access to *path*. Note that most operations
1177 will use the effective uid/gid, therefore this routine can be used in a
1178 suid/sgid environment to test if the invoking user has the specified access to
1179 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1180 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1181 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1182 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001183 information.
1184
Larry Hastings9cf065c2012-06-22 16:30:09 -07001185 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1186 directory, and *path* should be relative; path will then be relative to
1187 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1188 *dir_fd* may not be supported on your platform;
1189 you can check whether or not it is available using
1190 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1191 a :exc:`NotImplementedError`.
1192
1193 If *effective_ids* is ``True``, :func:`access` will perform its access
1194 checks using the effective uid/gid instead of the real uid/gid.
1195 *effective_ids* may not be supported on your platform; you can check whether
1196 or not it is available using :data:`os.supports_effective_ids`. If it is
1197 unavailable, using it will raise a :exc:`NotImplementedError`.
1198
1199 If *follow_symlinks* is ``False``, and the last element of the path is a
1200 symbolic link, :func:`access` will examine the symbolic link itself instead
1201 of the file the link points to. *follow_symlinks* may not be supported
1202 on your platform; you can check whether or not it is available using
1203 :data:`os.supports_follow_symlinks`. If it is unavailable,
1204 using it will raise a :exc:`NotImplementedError`.
1205
Benjamin Petersonf650e462010-05-06 23:03:05 +00001206 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001207
1208 .. note::
1209
Georg Brandl502d9a52009-07-26 15:02:41 +00001210 Using :func:`access` to check if a user is authorized to e.g. open a file
1211 before actually doing so using :func:`open` creates a security hole,
1212 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001213 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1214 techniques. For example::
1215
1216 if os.access("myfile", os.R_OK):
1217 with open("myfile") as fp:
1218 return fp.read()
1219 return "some default data"
1220
1221 is better written as::
1222
1223 try:
1224 fp = open("myfile")
Antoine Pitrou62ab10a2011-10-12 20:10:51 +02001225 except PermissionError:
1226 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001227 else:
1228 with fp:
1229 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001230
1231 .. note::
1232
1233 I/O operations may fail even when :func:`access` indicates that they would
1234 succeed, particularly for operations on network filesystems which may have
1235 permissions semantics beyond the usual POSIX permission-bit model.
1236
Larry Hastings9cf065c2012-06-22 16:30:09 -07001237 .. versionchanged:: 3.3
1238 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1239
Georg Brandl116aa622007-08-15 14:28:22 +00001240
1241.. data:: F_OK
1242
1243 Value to pass as the *mode* parameter of :func:`access` to test the existence of
1244 *path*.
1245
1246
1247.. data:: R_OK
1248
1249 Value to include in the *mode* parameter of :func:`access` to test the
1250 readability of *path*.
1251
1252
1253.. data:: W_OK
1254
1255 Value to include in the *mode* parameter of :func:`access` to test the
1256 writability of *path*.
1257
1258
1259.. data:: X_OK
1260
1261 Value to include in the *mode* parameter of :func:`access` to determine if
1262 *path* can be executed.
1263
1264
1265.. function:: chdir(path)
1266
1267 .. index:: single: directory; changing
1268
Benjamin Petersonf650e462010-05-06 23:03:05 +00001269 Change the current working directory to *path*.
1270
Larry Hastings9cf065c2012-06-22 16:30:09 -07001271 On some platforms, *path* may also be specified as an open file descriptor.
1272 This functionality may not be supported on your platform; you can check
1273 whether or not it is available using :data:`os.supports_fd`. If it is
1274 unavailable, using it will raise a :exc:`NotImplementedError`.
1275
Benjamin Petersonf650e462010-05-06 23:03:05 +00001276 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001277
Larry Hastings9cf065c2012-06-22 16:30:09 -07001278 .. versionadded:: 3.3
1279 Added support for specifying *path* as a file descriptor
1280 on some platforms, and the *dir_fd*, *effective_ids*, and
1281 *follow_symlinks* parameters.
1282
Georg Brandl116aa622007-08-15 14:28:22 +00001283
1284.. function:: fchdir(fd)
1285
1286 Change the current working directory to the directory represented by the file
1287 descriptor *fd*. The descriptor must refer to an opened directory, not an open
Larry Hastings9cf065c2012-06-22 16:30:09 -07001288 file. Equivalent to ``os.chdir(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001289
1290 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001291
Georg Brandl116aa622007-08-15 14:28:22 +00001292
1293.. function:: getcwd()
1294
Martin v. Löwis011e8422009-05-05 04:43:17 +00001295 Return a string representing the current working directory.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001296
Martin v. Löwis011e8422009-05-05 04:43:17 +00001297 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001298
Benjamin Petersonf650e462010-05-06 23:03:05 +00001299
Martin v. Löwisa731b992008-10-07 06:36:31 +00001300.. function:: getcwdb()
Georg Brandl116aa622007-08-15 14:28:22 +00001301
Georg Brandl76e55382008-10-08 16:34:57 +00001302 Return a bytestring representing the current working directory.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001303
Georg Brandlc575c902008-09-13 17:46:05 +00001304 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001305
Georg Brandl116aa622007-08-15 14:28:22 +00001306
Larry Hastings9cf065c2012-06-22 16:30:09 -07001307.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001308
1309 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1310 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1311
R David Murray30178062011-03-10 17:18:33 -05001312 * :data:`stat.UF_NODUMP`
1313 * :data:`stat.UF_IMMUTABLE`
1314 * :data:`stat.UF_APPEND`
1315 * :data:`stat.UF_OPAQUE`
1316 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001317 * :data:`stat.UF_COMPRESSED`
1318 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001319 * :data:`stat.SF_ARCHIVED`
1320 * :data:`stat.SF_IMMUTABLE`
1321 * :data:`stat.SF_APPEND`
1322 * :data:`stat.SF_NOUNLINK`
1323 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001324
Larry Hastings9cf065c2012-06-22 16:30:09 -07001325 If *follow_symlinks* is ``False``, and the last element of the path is a
1326 symbolic link, :func:`follow_symlinks` will examine the symbolic link itself
1327 instead of the file the link points to. *follow_symlinks* may not be
1328 supported on your platform; you can check whether or not it is available
1329 using :data:`os.supports_follow_symlinks`. If it is unavailable,
1330 using it will raise a :exc:`NotImplementedError`.
1331
Georg Brandlc575c902008-09-13 17:46:05 +00001332 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001333
Larry Hastings9cf065c2012-06-22 16:30:09 -07001334 .. versionadded:: 3.3
1335 The *follow_symlinks* argument.
1336
Georg Brandl116aa622007-08-15 14:28:22 +00001337
1338.. function:: chroot(path)
1339
1340 Change the root directory of the current process to *path*. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001341 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001342
Georg Brandl116aa622007-08-15 14:28:22 +00001343
Larry Hastings9cf065c2012-06-22 16:30:09 -07001344.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001345
1346 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001347 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001348 combinations of them:
1349
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001350 * :data:`stat.S_ISUID`
1351 * :data:`stat.S_ISGID`
1352 * :data:`stat.S_ENFMT`
1353 * :data:`stat.S_ISVTX`
1354 * :data:`stat.S_IREAD`
1355 * :data:`stat.S_IWRITE`
1356 * :data:`stat.S_IEXEC`
1357 * :data:`stat.S_IRWXU`
1358 * :data:`stat.S_IRUSR`
1359 * :data:`stat.S_IWUSR`
1360 * :data:`stat.S_IXUSR`
1361 * :data:`stat.S_IRWXG`
1362 * :data:`stat.S_IRGRP`
1363 * :data:`stat.S_IWGRP`
1364 * :data:`stat.S_IXGRP`
1365 * :data:`stat.S_IRWXO`
1366 * :data:`stat.S_IROTH`
1367 * :data:`stat.S_IWOTH`
1368 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001369
Larry Hastings9cf065c2012-06-22 16:30:09 -07001370 On some platforms, *path* may also be specified as an open file descriptor.
1371 This functionality may not be supported on your platform; you can check
1372 whether or not it is available using :data:`os.supports_fd`. If it is
1373 unavailable, using it will raise a :exc:`NotImplementedError`.
1374
1375 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1376 directory, and *path* should be relative; path will then be relative to
1377 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1378 *dir_fd* may not be supported on your platform;
1379 you can check whether or not it is available using
1380 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1381 a :exc:`NotImplementedError`.
1382
1383 If *follow_symlinks* is ``False``, and the last element of the path is a
1384 symbolic link, :func:`chmod` will examine the symbolic link itself instead
1385 of the file the link points to. *follow_symlinks* may not be supported
1386 on your platform; you can check whether or not it is available using
1387 :data:`os.supports_follow_symlinks`. If it is unavailable,
1388 using it will raise a :exc:`NotImplementedError`.
1389
1390 It is an error to use *dir_fd* or *follow_symlinks* when specifying
1391 *path* as an open file descriptor.
1392
Georg Brandlc575c902008-09-13 17:46:05 +00001393 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
1395 .. note::
1396
1397 Although Windows supports :func:`chmod`, you can only set the file's read-only
1398 flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1399 constants or a corresponding integer value). All other bits are
1400 ignored.
1401
Larry Hastings9cf065c2012-06-22 16:30:09 -07001402 .. versionadded:: 3.3
1403 Added support for specifying *path* as an open file descriptor,
1404 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001405
Larry Hastings9cf065c2012-06-22 16:30:09 -07001406
1407.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001408
1409 Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave
Benjamin Petersonf650e462010-05-06 23:03:05 +00001410 one of the ids unchanged, set it to -1.
1411
Larry Hastings9cf065c2012-06-22 16:30:09 -07001412 On some platforms, *path* may also be specified as an open file descriptor.
1413 This functionality may not be supported on your platform; you can check
1414 whether or not it is available using :data:`os.supports_fd`. If it is
1415 unavailable, using it will raise a :exc:`NotImplementedError`.
1416
1417 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1418 directory, and *path* should be relative; path will then be relative to
1419 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1420 *dir_fd* may not be supported on your platform;
1421 you can check whether or not it is available using
1422 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1423 a :exc:`NotImplementedError`.
1424
1425 If *follow_symlinks* is ``False``, and the last element of the path is a
1426 symbolic link, :func:`chown` will examine the symbolic link itself instead
1427 of the file the link points to. *follow_symlinks* may not be supported
1428 on your platform; you can check whether or not it is available using
1429 :data:`os.supports_follow_symlinks`. If it is unavailable,
1430 using it will raise a :exc:`NotImplementedError`.
1431
1432 It is an error to use *dir_fd* or *follow_symlinks* when specifying
1433 *path* as an open file descriptor.
1434
Sandro Tosid902a142011-08-22 23:28:27 +02001435 See :func:`shutil.chown` for a higher-level function that accepts names in
1436 addition to numeric ids.
1437
Benjamin Petersonf650e462010-05-06 23:03:05 +00001438 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001439
Larry Hastings9cf065c2012-06-22 16:30:09 -07001440 .. versionadded:: 3.3
1441 Added support for specifying an open file descriptor for *path*,
1442 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001443
Benjamin Peterson799bd802011-08-31 22:15:17 -04001444
Larry Hastings9cf065c2012-06-22 16:30:09 -07001445.. function:: getxattr(path, attribute, *, follow_symlinks=True)
1446
1447 Return the value of the extended filesystem attribute *attribute* for
1448 *path*. *attribute* can be bytes or str. If it is str, it is encoded
1449 with the filesystem encoding.
1450
1451 *path* may be specified as either a string or an open file descriptor.
1452
1453 If *follow_symlinks* is ``False``, and the last element of the path is a
1454 symbolic link, :func:`setxattr` will examine the symbolic link itself
1455 instead of the file the link points to. It is an error to use
1456 *follow_symlinks* when specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001457
1458 Availability: Linux
1459
1460 .. versionadded:: 3.3
1461
1462
Georg Brandl116aa622007-08-15 14:28:22 +00001463.. function:: lchflags(path, flags)
1464
1465 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do not
Benjamin Petersonf650e462010-05-06 23:03:05 +00001466 follow symbolic links.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001467 Equivalent to ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001468
1469 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001470
Georg Brandl116aa622007-08-15 14:28:22 +00001471
Christian Heimes93852662007-12-01 12:22:32 +00001472.. function:: lchmod(path, mode)
1473
1474 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
1475 affects the symlink rather than the target. See the docs for :func:`chmod`
Benjamin Petersonf650e462010-05-06 23:03:05 +00001476 for possible values of *mode*.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001477 Equivalent to ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001478
1479 Availability: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001480
Christian Heimes93852662007-12-01 12:22:32 +00001481
Georg Brandl116aa622007-08-15 14:28:22 +00001482.. function:: lchown(path, uid, gid)
1483
Christian Heimesfaf2f632008-01-06 16:59:19 +00001484 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Benjamin Petersonf650e462010-05-06 23:03:05 +00001485 function will not follow symbolic links.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001486 Equivalent to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001487
1488 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001489
Georg Brandl116aa622007-08-15 14:28:22 +00001490
Larry Hastings9cf065c2012-06-22 16:30:09 -07001491.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001492
Larry Hastings9cf065c2012-06-22 16:30:09 -07001493 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001494
Larry Hastings9cf065c2012-06-22 16:30:09 -07001495 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1496 file descriptor referring to a directory, and the corresponding path
1497 (*src* or *dst*) should be relative; that path will then be relative to
1498 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1499 goes for *dst* and *dst_dir_fd*.)
1500 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1501 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1502 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001503
Larry Hastings9cf065c2012-06-22 16:30:09 -07001504 If *follow_symlinks* is ``False``, and the last element of *src* is a
1505 symbolic link, :func:`link` will use the symbolic link itself instead
1506 of the file the link points to. *follow_symlinks* may not be supported
1507 on your platform; you can check whether or not it is available using
1508 :data:`os.supports_follow_symlinks`. If it is unavailable,
1509 using it will raise a :exc:`NotImplementedError`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001510
Brian Curtin1b9df392010-11-24 20:24:31 +00001511 Availability: Unix, Windows.
1512
1513 .. versionchanged:: 3.2
1514 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001515
Larry Hastings9cf065c2012-06-22 16:30:09 -07001516 .. versionadded:: 3.3
1517 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1518
Georg Brandl116aa622007-08-15 14:28:22 +00001519
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001520.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001521
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001522 Return a list containing the names of the entries in the directory given by
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001523 *path* (default: ``'.'``). The list is in arbitrary order. It does not include the special
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001524 entries ``'.'`` and ``'..'`` even if they are present in the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001525
Martin v. Löwis011e8422009-05-05 04:43:17 +00001526 This function can be called with a bytes or string argument, and returns
1527 filenames of the same datatype.
Georg Brandl116aa622007-08-15 14:28:22 +00001528
Larry Hastings9cf065c2012-06-22 16:30:09 -07001529 On some platforms, *path* may also be specified as an open file descriptor.
1530 This functionality may not be supported on your platform; you can check
1531 whether or not it is available using :data:`os.supports_fd`. If it is
1532 unavailable, using it will raise a :exc:`NotImplementedError`.
1533
Benjamin Petersonf650e462010-05-06 23:03:05 +00001534 Availability: Unix, Windows.
1535
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001536 .. versionchanged:: 3.2
1537 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001538
Larry Hastings9cf065c2012-06-22 16:30:09 -07001539 .. versionadded:: 3.3
1540 Added support for specifying an open file descriptor for *path*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001541
Larry Hastings9cf065c2012-06-22 16:30:09 -07001542.. function:: listxattr(path=None, *, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001543
Larry Hastings9cf065c2012-06-22 16:30:09 -07001544 Return a list of the extended filesystem attributes on *path*.
1545 The attributes in the list are represented as strings decoded
1546 with the filesystem encoding.
1547
1548 *path* may be specified as either ``None``, a string, or an open file
1549 descriptor. If *path* is ``None``, :func:`listxattr` will examine the
1550 current directory.
1551
1552 If *follow_symlinks* is ``False``, and the last element of the path is a
1553 symbolic link, :func:`listxattr` will examine the symbolic link itself
1554 instead of the file the link points to. It is an error to use
1555 *follow_symlinks* when specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001556
1557 Availability: Linux
1558
1559 .. versionadded:: 3.3
1560
1561
Larry Hastings9cf065c2012-06-22 16:30:09 -07001562.. function:: lstat(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001563
R. David Murray7b1aae92011-01-24 19:34:58 +00001564 Perform the equivalent of an :c:func:`lstat` system call on the given path.
1565 Similar to :func:`~os.stat`, but does not follow symbolic links. On
1566 platforms that do not support symbolic links, this is an alias for
Larry Hastings9cf065c2012-06-22 16:30:09 -07001567 :func:`~os.stat`. (Equivalent to ``os.stat(path, follow_symlinks=False)``.)
1568
1569 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1570 directory, and *path* should be relative; path will then be relative to
1571 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1572 *dir_fd* may not be supported on your platform;
1573 you can check whether or not it is available using
1574 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1575 a :exc:`NotImplementedError`.
Brian Curtinc7395692010-07-09 15:15:09 +00001576
Georg Brandlb3823372010-07-10 08:58:37 +00001577 .. versionchanged:: 3.2
1578 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001579
Larry Hastings9cf065c2012-06-22 16:30:09 -07001580 .. versionchanged:: 3.3
1581 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001582
1583
Larry Hastings9cf065c2012-06-22 16:30:09 -07001584.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001585
Larry Hastings9cf065c2012-06-22 16:30:09 -07001586 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1587 The current umask value is first masked out from the mode.
1588
1589 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1590 directory, and *path* should be relative; path will then be relative to
1591 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1592 *dir_fd* may not be supported on your platform;
1593 you can check whether or not it is available using
1594 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1595 a :exc:`NotImplementedError`.
Georg Brandl116aa622007-08-15 14:28:22 +00001596
1597 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1598 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1599 rendezvous between "client" and "server" type processes: the server opens the
1600 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1601 doesn't open the FIFO --- it just creates the rendezvous point.
1602
Benjamin Petersonf650e462010-05-06 23:03:05 +00001603 Availability: Unix.
1604
Larry Hastings9cf065c2012-06-22 16:30:09 -07001605 .. versionadded:: 3.3
1606 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001607
Larry Hastings9cf065c2012-06-22 16:30:09 -07001608
1609.. function:: mknod(filename, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001610
1611 Create a filesystem node (file, device special file or named pipe) named
Georg Brandl18244152009-09-02 20:34:52 +00001612 *filename*. *mode* specifies both the permissions to use and the type of node
1613 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1614 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1615 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
1616 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00001617 :func:`os.makedev`), otherwise it is ignored.
1618
Larry Hastings9cf065c2012-06-22 16:30:09 -07001619 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1620 directory, and *path* should be relative; path will then be relative to
1621 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1622 *dir_fd* may not be supported on your platform;
1623 you can check whether or not it is available using
1624 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1625 a :exc:`NotImplementedError`.
1626
1627 .. versionadded:: 3.3
1628 The *dir_fd* argument.
1629
Georg Brandl116aa622007-08-15 14:28:22 +00001630
1631.. function:: major(device)
1632
Christian Heimesfaf2f632008-01-06 16:59:19 +00001633 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001634 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001635
Georg Brandl116aa622007-08-15 14:28:22 +00001636
1637.. function:: minor(device)
1638
Christian Heimesfaf2f632008-01-06 16:59:19 +00001639 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001640 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001641
Georg Brandl116aa622007-08-15 14:28:22 +00001642
1643.. function:: makedev(major, minor)
1644
Christian Heimesfaf2f632008-01-06 16:59:19 +00001645 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00001646
Georg Brandl116aa622007-08-15 14:28:22 +00001647
Larry Hastings9cf065c2012-06-22 16:30:09 -07001648.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001649
Larry Hastings9cf065c2012-06-22 16:30:09 -07001650 Create a directory named *path* with numeric mode *mode*.
1651
1652 On some systems, *mode* is ignored. Where it is used, the current
1653 umask value is first masked out. If the directory already
Benjamin Petersond7c3ed52010-06-27 22:32:30 +00001654 exists, :exc:`OSError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001655
Larry Hastings9cf065c2012-06-22 16:30:09 -07001656 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1657 directory, and *path* should be relative; path will then be relative to
1658 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1659 *dir_fd* may not be supported on your platform;
1660 you can check whether or not it is available using
1661 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1662 a :exc:`NotImplementedError`.
1663
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001664 It is also possible to create temporary directories; see the
1665 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1666
Benjamin Petersonf650e462010-05-06 23:03:05 +00001667 Availability: Unix, Windows.
1668
Larry Hastings9cf065c2012-06-22 16:30:09 -07001669 .. versionadded:: 3.3
1670 The *dir_fd* argument.
1671
Georg Brandl116aa622007-08-15 14:28:22 +00001672
Georg Brandlc1673682010-12-02 09:06:12 +00001673.. function:: makedirs(path, mode=0o777, exist_ok=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001674
1675 .. index::
1676 single: directory; creating
1677 single: UNC paths; and os.makedirs()
1678
1679 Recursive directory creation function. Like :func:`mkdir`, but makes all
Terry Reedy5a22b652010-12-02 07:05:56 +00001680 intermediate-level directories needed to contain the leaf directory. If
Georg Brandlc1673682010-12-02 09:06:12 +00001681 the target directory with the same mode as specified already exists,
Terry Reedy5a22b652010-12-02 07:05:56 +00001682 raises an :exc:`OSError` exception if *exist_ok* is False, otherwise no
1683 exception is raised. If the directory cannot be created in other cases,
1684 raises an :exc:`OSError` exception. The default *mode* is ``0o777`` (octal).
Georg Brandlc1673682010-12-02 09:06:12 +00001685 On some systems, *mode* is ignored. Where it is used, the current umask
Terry Reedy5a22b652010-12-02 07:05:56 +00001686 value is first masked out.
Georg Brandl116aa622007-08-15 14:28:22 +00001687
1688 .. note::
1689
Georg Brandlc1673682010-12-02 09:06:12 +00001690 :func:`makedirs` will become confused if the path elements to create
1691 include :data:`pardir`.
Georg Brandl116aa622007-08-15 14:28:22 +00001692
Georg Brandl55ac8f02007-09-01 13:51:09 +00001693 This function handles UNC paths correctly.
Georg Brandl116aa622007-08-15 14:28:22 +00001694
Terry Reedy5a22b652010-12-02 07:05:56 +00001695 .. versionadded:: 3.2
1696 The *exist_ok* parameter.
1697
Georg Brandl116aa622007-08-15 14:28:22 +00001698
1699.. function:: pathconf(path, name)
1700
1701 Return system configuration information relevant to a named file. *name*
1702 specifies the configuration value to retrieve; it may be a string which is the
1703 name of a defined system value; these names are specified in a number of
1704 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1705 additional names as well. The names known to the host operating system are
1706 given in the ``pathconf_names`` dictionary. For configuration variables not
1707 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00001708
1709 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1710 specific value for *name* is not supported by the host system, even if it is
1711 included in ``pathconf_names``, an :exc:`OSError` is raised with
1712 :const:`errno.EINVAL` for the error number.
1713
Benjamin Petersonf650e462010-05-06 23:03:05 +00001714 Availability: Unix.
1715
Georg Brandl116aa622007-08-15 14:28:22 +00001716
1717.. data:: pathconf_names
1718
1719 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1720 the integer values defined for those names by the host operating system. This
1721 can be used to determine the set of names known to the system. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001722 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001723
1724
Larry Hastings9cf065c2012-06-22 16:30:09 -07001725.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001726
1727 Return a string representing the path to which the symbolic link points. The
1728 result may be either an absolute or relative pathname; if it is relative, it may
1729 be converted to an absolute pathname using ``os.path.join(os.path.dirname(path),
1730 result)``.
1731
Georg Brandl76e55382008-10-08 16:34:57 +00001732 If the *path* is a string object, the result will also be a string object,
1733 and the call may raise an UnicodeDecodeError. If the *path* is a bytes
1734 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00001735
Larry Hastings9cf065c2012-06-22 16:30:09 -07001736 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1737 directory, and *path* should be relative; path will then be relative to
1738 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1739 *dir_fd* may not be supported on your platform;
1740 you can check whether or not it is available using
1741 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1742 a :exc:`NotImplementedError`.
1743
Brian Curtinc7395692010-07-09 15:15:09 +00001744 Availability: Unix, Windows
1745
Georg Brandlb3823372010-07-10 08:58:37 +00001746 .. versionchanged:: 3.2
1747 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001748
Larry Hastings9cf065c2012-06-22 16:30:09 -07001749 .. versionadded:: 3.3
1750 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001751
Georg Brandl116aa622007-08-15 14:28:22 +00001752
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001753.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07001754
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001755 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError`
1756 is raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001757
1758 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1759 directory, and *path* should be relative; path will then be relative to
1760 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1761 *dir_fd* may not be supported on your platform;
1762 you can check whether or not it is available using
1763 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1764 a :exc:`NotImplementedError`.
1765
1766 On Windows, attempting to remove a file that is in use causes an exception to
1767 be raised; on Unix, the directory entry is removed but the storage allocated
1768 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001769
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001770 This function is identical to :func:`unlink`.
1771
Benjamin Petersonf650e462010-05-06 23:03:05 +00001772 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001773
Larry Hastings9cf065c2012-06-22 16:30:09 -07001774 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001775 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001776
Georg Brandl116aa622007-08-15 14:28:22 +00001777
1778.. function:: removedirs(path)
1779
1780 .. index:: single: directory; deleting
1781
Christian Heimesfaf2f632008-01-06 16:59:19 +00001782 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00001783 leaf directory is successfully removed, :func:`removedirs` tries to
1784 successively remove every parent directory mentioned in *path* until an error
1785 is raised (which is ignored, because it generally means that a parent directory
1786 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1787 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1788 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1789 successfully removed.
1790
Georg Brandl116aa622007-08-15 14:28:22 +00001791
Larry Hastings9cf065c2012-06-22 16:30:09 -07001792.. function:: removexattr(path, attribute, *, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001793
Larry Hastings9cf065c2012-06-22 16:30:09 -07001794 Removes the extended filesystem attribute *attribute* from *path*.
1795 *attribute* should be bytes or str. If it is a string, it is encoded
1796 with the filesystem encoding.
1797
1798 *path* may be specified as either a string or an open file descriptor.
1799
1800 If *follow_symlinks* is ``False``, and the last element of the path is a
1801 symbolic link, :func:`removexattr` will remove the attribute from the
1802 symbolic link itself instead of the file the link points to. It is an
1803 error to use *follow_symlinks* when specifying *path* as an open file
1804 descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001805
1806 Availability: Linux
1807
1808 .. versionadded:: 3.3
1809
1810
Larry Hastings9cf065c2012-06-22 16:30:09 -07001811.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001812
1813 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1814 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001815 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001816 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1817 the renaming will be an atomic operation (this is a POSIX requirement). On
1818 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001819 file.
1820
Larry Hastings9cf065c2012-06-22 16:30:09 -07001821 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1822 file descriptor referring to a directory, and the corresponding path
1823 (*src* or *dst*) should be relative; that path will then be relative to
1824 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1825 goes for *dst* and *dst_dir_fd*.)
1826 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1827 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1828 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1829
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001830 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001831
1832 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001833
Larry Hastings9cf065c2012-06-22 16:30:09 -07001834 .. versionadded:: 3.3
1835 The *src_dir_fd* and *dst_dir_fd* arguments.
1836
Georg Brandl116aa622007-08-15 14:28:22 +00001837
1838.. function:: renames(old, new)
1839
1840 Recursive directory or file renaming function. Works like :func:`rename`, except
1841 creation of any intermediate directories needed to make the new pathname good is
1842 attempted first. After the rename, directories corresponding to rightmost path
1843 segments of the old name will be pruned away using :func:`removedirs`.
1844
Georg Brandl116aa622007-08-15 14:28:22 +00001845 .. note::
1846
1847 This function can fail with the new directory structure made if you lack
1848 permissions needed to remove the leaf directory or file.
1849
1850
Larry Hastings9cf065c2012-06-22 16:30:09 -07001851.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001852
1853 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1854 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
1855 be replaced silently if the user has permission. The operation may fail
1856 if *src* and *dst* are on different filesystems. If successful,
1857 the renaming will be an atomic operation (this is a POSIX requirement).
1858
Larry Hastings9cf065c2012-06-22 16:30:09 -07001859 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1860 file descriptor referring to a directory, and the corresponding path
1861 (*src* or *dst*) should be relative; that path will then be relative to
1862 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1863 goes for *dst* and *dst_dir_fd*.)
1864 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1865 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1866 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1867
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001868 Availability: Unix, Windows
1869
1870 .. versionadded:: 3.3
1871
1872
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001873.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001874
Georg Brandla6053b42009-09-01 08:11:14 +00001875 Remove (delete) the directory *path*. Only works when the directory is
1876 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
Benjamin Petersonf650e462010-05-06 23:03:05 +00001877 directory trees, :func:`shutil.rmtree` can be used.
1878
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001879 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1880 directory, and *path* should be relative; path will then be relative to
1881 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1882 *dir_fd* may not be supported on your platform;
1883 you can check whether or not it is available using
1884 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1885 a :exc:`NotImplementedError`.
1886
Benjamin Petersonf650e462010-05-06 23:03:05 +00001887 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001888
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001889 .. versionadded:: 3.3
1890 The *dir_fd* parameter.
1891
Georg Brandl116aa622007-08-15 14:28:22 +00001892
Benjamin Peterson799bd802011-08-31 22:15:17 -04001893.. data:: XATTR_SIZE_MAX
1894
1895 The maximum size the value of an extended attribute can be. Currently, this
1896 is 64 kilobytes on Linux.
1897
1898
1899.. data:: XATTR_CREATE
1900
1901 This is a possible value for the flags argument in :func:`setxattr`. It
1902 indicates the operation must create an attribute.
1903
1904
1905.. data:: XATTR_REPLACE
1906
1907 This is a possible value for the flags argument in :func:`setxattr`. It
1908 indicates the operation must replace an existing attribute.
1909
1910
Larry Hastings9cf065c2012-06-22 16:30:09 -07001911.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001912
Larry Hastings9cf065c2012-06-22 16:30:09 -07001913 Set the extended filesystem attribute *attribute* on *path* to *value*.
1914 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
1915 it is encoded with the filesystem encoding. *flags* may be
1916 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
1917 given and the attribute does not exist, ``EEXISTS`` will be raised.
1918 If :data:`XATTR_CREATE` is given and the attribute already exists, the
1919 attribute will not be created and ``ENODATA`` will be raised.
1920
1921 *path* may be specified as either a string or an open file descriptor.
1922
1923 If *follow_symlinks* is ``False``, and the last element of the path is a
1924 symbolic link, :func:`setxattr` will examine the symbolic link itself
1925 instead of the file the link points to. It is an error to use
1926 *follow_symlinks* when specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001927
1928 Availability: Linux
1929
1930 .. note::
1931
1932 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
1933 to be ignored on some filesystems.
1934
1935 .. versionadded:: 3.3
1936
1937
Larry Hastings9cf065c2012-06-22 16:30:09 -07001938.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001939
R. David Murray7b1aae92011-01-24 19:34:58 +00001940 Perform the equivalent of a :c:func:`stat` system call on the given path.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001941 *path* may be specified as either a string or as an open file descriptor.
1942 (This function normally follows symlinks; to stat a symlink add the argument
1943 ``follow_symlinks=False``, or use :func:`lstat`.)
Georg Brandl116aa622007-08-15 14:28:22 +00001944
Larry Hastings6fe20b32012-04-19 15:07:49 -07001945 The return value is an object whose attributes correspond roughly
1946 to the members of the :c:type:`stat` structure, namely:
R. David Murray7b1aae92011-01-24 19:34:58 +00001947
1948 * :attr:`st_mode` - protection bits,
1949 * :attr:`st_ino` - inode number,
1950 * :attr:`st_dev` - device,
1951 * :attr:`st_nlink` - number of hard links,
1952 * :attr:`st_uid` - user id of owner,
1953 * :attr:`st_gid` - group id of owner,
1954 * :attr:`st_size` - size of file, in bytes,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001955 * :attr:`st_atime` - time of most recent access expressed in seconds,
1956 * :attr:`st_mtime` - time of most recent content modification
1957 expressed in seconds,
1958 * :attr:`st_ctime` - platform dependent; time of most recent metadata
1959 change on Unix, or the time of creation on Windows, expressed in seconds
1960 * :attr:`st_atime_ns` - time of most recent access
1961 expressed in nanoseconds as an integer,
1962 * :attr:`st_mtime_ns` - time of most recent content modification
1963 expressed in nanoseconds as an integer,
1964 * :attr:`st_ctime_ns` - platform dependent; time of most recent metadata
1965 change on Unix, or the time of creation on Windows,
1966 expressed in nanoseconds as an integer
Georg Brandl116aa622007-08-15 14:28:22 +00001967
1968 On some Unix systems (such as Linux), the following attributes may also be
R. David Murray7b1aae92011-01-24 19:34:58 +00001969 available:
1970
1971 * :attr:`st_blocks` - number of blocks allocated for file
1972 * :attr:`st_blksize` - filesystem blocksize
1973 * :attr:`st_rdev` - type of device if an inode device
1974 * :attr:`st_flags` - user defined flags for file
Georg Brandl116aa622007-08-15 14:28:22 +00001975
1976 On other Unix systems (such as FreeBSD), the following attributes may be
R. David Murray7b1aae92011-01-24 19:34:58 +00001977 available (but may be only filled out if root tries to use them):
1978
1979 * :attr:`st_gen` - file generation number
1980 * :attr:`st_birthtime` - time of file creation
Georg Brandl116aa622007-08-15 14:28:22 +00001981
1982 On Mac OS systems, the following attributes may also be available:
Georg Brandl116aa622007-08-15 14:28:22 +00001983
R. David Murray7b1aae92011-01-24 19:34:58 +00001984 * :attr:`st_rsize`
1985 * :attr:`st_creator`
1986 * :attr:`st_type`
Georg Brandl116aa622007-08-15 14:28:22 +00001987
1988 .. note::
1989
Senthil Kumaran3aac1792011-07-04 11:43:51 -07001990 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07001991 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
1992 system and the file system. For example, on Windows systems using the FAT
1993 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
1994 :attr:`st_atime` has only 1-day resolution. See your operating system
1995 documentation for details.
Larry Hastings6fe20b32012-04-19 15:07:49 -07001996 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
1997 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
1998 systems do not provide nanosecond precision. On systems that do
1999 provide nanosecond precision, the floating-point object used to
2000 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
2001 cannot preserve all of it, and as such will be slightly inexact.
2002 If you need the exact timestamps you should always use
2003 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00002004
R. David Murray7b1aae92011-01-24 19:34:58 +00002005 For backward compatibility, the return value of :func:`~os.stat` is also accessible
2006 as a tuple of at least 10 integers giving the most important (and portable)
2007 members of the :c:type:`stat` structure, in the order :attr:`st_mode`,
2008 :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, :attr:`st_uid`,
2009 :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, :attr:`st_mtime`,
2010 :attr:`st_ctime`. More items may be added at the end by some implementations.
2011
Larry Hastings9cf065c2012-06-22 16:30:09 -07002012 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
2013 directory, and *path* should be relative; path will then be relative to
2014 that directory. (If *path* is absolute, *dir_fd* is ignored.)
2015 *dir_fd* may not be supported on your platform;
2016 you can check whether or not it is available using
2017 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
2018 a :exc:`NotImplementedError`.
2019
2020 If *follow_symlinks* is ``False``, and the last element of the path is a
2021 symbolic link, :func:`stat` will examine the symbolic link itself instead
2022 of the file the link points to. *follow_symlinks* may not be supported
2023 on your platform; you can check whether or not it is available using
2024 :data:`os.supports_follow_symlinks`. If it is unavailable,
2025 using it will raise a :exc:`NotImplementedError`.
2026
2027 It is an error to use *dir_fd* or *follow_symlinks* when specifying
2028 *path* as an open file descriptor.
2029
R. David Murray7b1aae92011-01-24 19:34:58 +00002030 .. index:: module: stat
2031
2032 The standard module :mod:`stat` defines functions and constants that are useful
2033 for extracting information from a :c:type:`stat` structure. (On Windows, some
2034 items are filled with dummy values.)
2035
2036 Example::
2037
2038 >>> import os
2039 >>> statinfo = os.stat('somefile.txt')
2040 >>> statinfo
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00002041 posix.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2042 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2043 st_mtime=1297230027, st_ctime=1297230027)
R. David Murray7b1aae92011-01-24 19:34:58 +00002044 >>> statinfo.st_size
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00002045 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002046
Georg Brandlc575c902008-09-13 17:46:05 +00002047 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002048
Larry Hastings6fe20b32012-04-19 15:07:49 -07002049 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002050 Added the *dir_fd* and *follow_symlinks* arguments,
2051 specifying a file descriptor instead of a path,
2052 and the :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
Larry Hastings6fe20b32012-04-19 15:07:49 -07002053 and :attr:`st_ctime_ns` members.
2054
Georg Brandl116aa622007-08-15 14:28:22 +00002055
2056.. function:: stat_float_times([newvalue])
2057
2058 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00002059 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00002060 ``False``, future calls return ints. If *newvalue* is omitted, return the
2061 current setting.
2062
2063 For compatibility with older Python versions, accessing :class:`stat_result` as
2064 a tuple always returns integers.
2065
Georg Brandl55ac8f02007-09-01 13:51:09 +00002066 Python now returns float values by default. Applications which do not work
2067 correctly with floating point time stamps can use this function to restore the
2068 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00002069
2070 The resolution of the timestamps (that is the smallest possible fraction)
2071 depends on the system. Some systems only support second resolution; on these
2072 systems, the fraction will always be zero.
2073
2074 It is recommended that this setting is only changed at program startup time in
2075 the *__main__* module; libraries should never change this setting. If an
2076 application uses a library that works incorrectly if floating point time stamps
2077 are processed, this application should turn the feature off until the library
2078 has been corrected.
2079
Victor Stinner034d0aa2012-06-05 01:22:15 +02002080 .. deprecated:: 3.3
2081
Georg Brandl116aa622007-08-15 14:28:22 +00002082
2083.. function:: statvfs(path)
2084
Georg Brandl60203b42010-10-06 10:11:56 +00002085 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002086 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002087 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002088 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2089 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002090 :attr:`f_flag`, :attr:`f_namemax`.
2091
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002092 Two module-level constants are defined for the :attr:`f_flag` attribute's
2093 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2094 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2095 setuid/setgid bits are disabled or not supported.
2096
Larry Hastings9cf065c2012-06-22 16:30:09 -07002097 On some platforms, *path* may also be specified as an open file descriptor.
2098 This functionality may not be supported on your platform; you can check
2099 whether or not it is available using :data:`os.supports_fd`. If it is
2100 unavailable, using it will raise a :exc:`NotImplementedError`.
2101
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002102 .. versionchanged:: 3.2
2103 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2104
Benjamin Petersonf650e462010-05-06 23:03:05 +00002105 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002106
Larry Hastings9cf065c2012-06-22 16:30:09 -07002107 .. versionadded:: 3.3
2108 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00002109
Larry Hastings9cf065c2012-06-22 16:30:09 -07002110
2111.. data:: supports_dir_fd
2112
2113 An object implementing collections.Set indicating which functions in the
2114 :mod:`os` permit use of their *dir_fd* parameter. Different platforms
2115 provide different functionality, and an option that might work on one might
2116 be unsupported on another. For consistency's sakes, functions that support
2117 *dir_fd* always allow specifying the parameter, but will throw an exception
2118 if the functionality is not actually available.
2119
2120 To check whether a particular function permits use of its *dir_fd*
2121 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
2122 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
2123 is locally available::
2124
2125 os.stat in os.supports_dir_fd
2126
2127 Currently *dir_fd* parameters only work on UNIX platforms;
2128 none of them work on Windows.
2129
2130 .. versionadded:: 3.3
2131
2132.. data:: supports_effective_ids
2133
2134 An object implementing collections.Set indicating which functions in the
2135 :mod:`os` permit use of the *effective_id* parameter for :func:`os.access`.
2136 If the local platform supports it, the collection will contain
2137 :func:`os.access`, otherwise it will be empty.
2138
2139 To check whether you can use the *effective_id* parameter for
2140 :func:`os.access`, use the ``in`` operator on ``supports_dir_fd``, like so::
2141
2142 os.access in os.supports_effective_ids
2143
2144 Currently *effective_id* only works on UNIX platforms;
2145 it does not work on Windows.
2146
2147 .. versionadded:: 3.3
2148
2149.. data:: supports_fd
2150
2151 An object implementing collections.Set indicating which functions in the
2152 :mod:`os` permit specifying their *path* parameter as an open file
2153 descriptor. Different platforms provide different functionality, and an
2154 option that might work on one might be unsupported on another. For
2155 consistency's sakes, functions that support *fd* always allow specifying
2156 the parameter, but will throw an exception if the functionality is not
2157 actually available.
2158
2159 To check whether a particular function permits specifying an open file
2160 descriptor for its *path* parameter, use the ``in`` operator on
2161 ``supports_fd``. As an example, this expression determines whether
2162 :func:`os.chdir` accepts open file descriptors when called on your local
2163 platform::
2164
2165 os.chdir in os.supports_fd
2166
2167 .. versionadded:: 3.3
2168
2169.. data:: supports_follow_symlinks
2170
2171 An object implementing collections.Set indicating which functions in the
2172 :mod:`os` permit use of their *follow_symlinks* parameter. Different
2173 platforms provide different functionality, and an option that might work on
2174 one might be unsupported on another. For consistency's sakes, functions that
2175 support *follow_symlinks* always allow specifying the parameter, but will
2176 throw an exception if the functionality is not actually available.
2177
2178 To check whether a particular function permits use of its *follow_symlinks*
2179 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2180 example, this expression determines whether the *follow_symlinks* parameter
2181 of :func:`os.stat` is locally available::
2182
2183 os.stat in os.supports_follow_symlinks
2184
2185 .. versionadded:: 3.3
2186
2187.. function:: symlink(source, link_name, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002188
Brian Curtinc7395692010-07-09 15:15:09 +00002189 Create a symbolic link pointing to *source* named *link_name*.
2190
Larry Hastings9cf065c2012-06-22 16:30:09 -07002191 On Windows, a symlink represents either a file or a directory, and does not
2192 morph to the target dynamically. If *target_is_directory* is set to ``True``,
2193 the symlink will be created as a directory symlink, otherwise as a file symlink
2194 (the default). On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002195
Georg Brandl64a41ed2010-10-06 08:52:48 +00002196 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2197 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002198
Larry Hastings9cf065c2012-06-22 16:30:09 -07002199 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
2200 directory, and *path* should be relative; path will then be relative to
2201 that directory. (If *path* is absolute, *dir_fd* is ignored.)
2202 *dir_fd* may not be supported on your platform;
2203 you can check whether or not it is available using
2204 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
2205 a :exc:`NotImplementedError`.
2206
Brian Curtin52173d42010-12-02 18:29:18 +00002207 .. note::
2208
Larry Hastings9cf065c2012-06-22 16:30:09 -07002209 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2210 successfully create symlinks. This privilege is not typically granted to
2211 regular users but is available to accounts which can escalate privileges
2212 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002213 application as an administrator are ways to successfully create symlinks.
2214
Brian Curtin96245592010-12-28 17:08:22 +00002215 :exc:`OSError` is raised when the function is called by an unprivileged
2216 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002217
Georg Brandl64a41ed2010-10-06 08:52:48 +00002218 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002219
Georg Brandlb3823372010-07-10 08:58:37 +00002220 .. versionchanged:: 3.2
2221 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002222
Larry Hastings9cf065c2012-06-22 16:30:09 -07002223 .. versionadded:: 3.3
2224 Added the *dir_fd* argument, and now allow *target_is_directory*
2225 on non-Windows platforms.
2226
Georg Brandl116aa622007-08-15 14:28:22 +00002227
Ross Lagerwall7807c352011-03-17 20:20:30 +02002228.. function:: sync()
2229
2230 Force write of everything to disk.
2231
2232 Availability: Unix.
2233
2234 .. versionadded:: 3.3
2235
2236
2237.. function:: truncate(path, length)
2238
2239 Truncate the file corresponding to *path*, so that it is at most
2240 *length* bytes in size.
2241
2242 Availability: Unix.
2243
2244 .. versionadded:: 3.3
2245
2246
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002247.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002248
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002249 Remove (delete) the file *path*. This function is identical to
Georg Brandla6053b42009-09-01 08:11:14 +00002250 :func:`remove`; the :func:`unlink` name is its traditional Unix
Larry Hastings9cf065c2012-06-22 16:30:09 -07002251 name. Please see the documentation for :func:`remove` for
2252 further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002253
2254 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002255
Larry Hastings9cf065c2012-06-22 16:30:09 -07002256 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002257 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002258
Larry Hastings9cf065c2012-06-22 16:30:09 -07002259
2260.. function:: utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002261
Larry Hastings76ad59b2012-05-03 00:30:07 -07002262 Set the access and modified times of the file specified by *path*.
2263
2264 :func:`utime` takes two optional parameters, *times* and *ns*.
2265 These specify the times set on *path* and are used as follows:
2266
Larry Hastings9cf065c2012-06-22 16:30:09 -07002267 - If *ns* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002268 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2269 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002270 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002271 it must be a 2-tuple of the form ``(atime, mtime)``
2272 where each member is an int or float expressing seconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002273 - If *times* and *ns* are both ``None``,
2274 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002275 where both times are the current time.
2276 (The effect is similar to running the Unix program
2277 :program:`touch` on *path*.)
Larry Hastings76ad59b2012-05-03 00:30:07 -07002278
Larry Hastings9cf065c2012-06-22 16:30:09 -07002279 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002280
2281 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002282 depends on whether the operating system implements directories as files
2283 (for example, Windows does not). Note that the exact times you set here may
2284 not be returned by a subsequent :func:`~os.stat` call, depending on the
2285 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002286 times; see :func:`~os.stat`. The best way to preserve exact times is to
2287 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2288 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002289
Larry Hastings9cf065c2012-06-22 16:30:09 -07002290 On some platforms, *path* may also be specified as an open file descriptor.
2291 This functionality may not be supported on your platform; you can check
2292 whether or not it is available using :data:`os.supports_fd`. If it is
2293 unavailable, using it will raise a :exc:`NotImplementedError`.
2294
2295 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
2296 directory, and *path* should be relative; path will then be relative to
2297 that directory. (If *path* is absolute, *dir_fd* is ignored.)
2298 *dir_fd* may not be supported on your platform;
2299 you can check whether or not it is available using
2300 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
2301 a :exc:`NotImplementedError`.
2302
2303 If *follow_symlinks* is ``False``, and the last element of the path is a
2304 symbolic link, :func:`utime` will examine the symbolic link itself instead
2305 of the file the link points to. *follow_symlinks* may not be supported
2306 on your platform; you can check whether or not it is available using
2307 :data:`os.supports_follow_symlinks`. If it is unavailable,
2308 using it will raise a :exc:`NotImplementedError`.
2309
2310 It is an error to use *dir_fd* or *follow_symlinks* when specifying
2311 *path* as an open file descriptor.
2312
Georg Brandlc575c902008-09-13 17:46:05 +00002313 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002314
Larry Hastings76ad59b2012-05-03 00:30:07 -07002315 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002316 Added support for specifying an open file descriptor for *path*,
2317 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002318
Georg Brandl116aa622007-08-15 14:28:22 +00002319
Georg Brandl18244152009-09-02 20:34:52 +00002320.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002321
2322 .. index::
2323 single: directory; walking
2324 single: directory; traversal
2325
Christian Heimesfaf2f632008-01-06 16:59:19 +00002326 Generate the file names in a directory tree by walking the tree
2327 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002328 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2329 filenames)``.
2330
2331 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2332 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2333 *filenames* is a list of the names of the non-directory files in *dirpath*.
2334 Note that the names in the lists contain no path components. To get a full path
2335 (which begins with *top*) to a file or directory in *dirpath*, do
2336 ``os.path.join(dirpath, name)``.
2337
Christian Heimesfaf2f632008-01-06 16:59:19 +00002338 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002339 directory is generated before the triples for any of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002340 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002341 directory is generated after the triples for all of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002342 (directories are generated bottom-up).
Georg Brandl116aa622007-08-15 14:28:22 +00002343
Christian Heimesfaf2f632008-01-06 16:59:19 +00002344 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002345 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2346 recurse into the subdirectories whose names remain in *dirnames*; this can be
2347 used to prune the search, impose a specific order of visiting, or even to inform
2348 :func:`walk` about directories the caller creates or renames before it resumes
Christian Heimesfaf2f632008-01-06 16:59:19 +00002349 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl116aa622007-08-15 14:28:22 +00002350 ineffective, because in bottom-up mode the directories in *dirnames* are
2351 generated before *dirpath* itself is generated.
2352
Ezio Melotti67494f22011-10-18 12:59:39 +03002353 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002354 argument *onerror* is specified, it should be a function; it will be called with
2355 one argument, an :exc:`OSError` instance. It can report the error to continue
2356 with the walk, or raise the exception to abort the walk. Note that the filename
2357 is available as the ``filename`` attribute of the exception object.
2358
2359 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002360 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002361 symlinks, on systems that support them.
2362
Georg Brandl116aa622007-08-15 14:28:22 +00002363 .. note::
2364
Christian Heimesfaf2f632008-01-06 16:59:19 +00002365 Be aware that setting *followlinks* to ``True`` can lead to infinite recursion if a
Georg Brandl116aa622007-08-15 14:28:22 +00002366 link points to a parent directory of itself. :func:`walk` does not keep track of
2367 the directories it visited already.
2368
2369 .. note::
2370
2371 If you pass a relative pathname, don't change the current working directory
2372 between resumptions of :func:`walk`. :func:`walk` never changes the current
2373 directory, and assumes that its caller doesn't either.
2374
2375 This example displays the number of bytes taken by non-directory files in each
2376 directory under the starting directory, except that it doesn't look under any
2377 CVS subdirectory::
2378
2379 import os
2380 from os.path import join, getsize
2381 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002382 print(root, "consumes", end=" ")
2383 print(sum(getsize(join(root, name)) for name in files), end=" ")
2384 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002385 if 'CVS' in dirs:
2386 dirs.remove('CVS') # don't visit CVS directories
2387
Christian Heimesfaf2f632008-01-06 16:59:19 +00002388 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl116aa622007-08-15 14:28:22 +00002389 doesn't allow deleting a directory before the directory is empty::
2390
Christian Heimesfaf2f632008-01-06 16:59:19 +00002391 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002392 # assuming there are no symbolic links.
2393 # CAUTION: This is dangerous! For example, if top == '/', it
2394 # could delete all your disk files.
2395 import os
2396 for root, dirs, files in os.walk(top, topdown=False):
2397 for name in files:
2398 os.remove(os.path.join(root, name))
2399 for name in dirs:
2400 os.rmdir(os.path.join(root, name))
2401
Georg Brandl116aa622007-08-15 14:28:22 +00002402
Charles-François Natali7372b062012-02-05 15:15:38 +01002403.. function:: fwalk(top, topdown=True, onerror=None, followlinks=False)
2404
2405 .. index::
2406 single: directory; walking
2407 single: directory; traversal
2408
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002409 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
2410 ``(dirpath, dirnames, filenames, dirfd)``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002411
2412 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2413 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2414
2415 .. note::
2416
2417 Since :func:`fwalk` yields file descriptors, those are only valid until
2418 the next iteration step, so you should duplicate them (e.g. with
2419 :func:`dup`) if you want to keep them longer.
2420
2421 This example displays the number of bytes taken by non-directory files in each
2422 directory under the starting directory, except that it doesn't look under any
2423 CVS subdirectory::
2424
2425 import os
2426 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2427 print(root, "consumes", end="")
2428 print(sum([os.fstatat(rootfd, name).st_size for name in files]),
2429 end="")
2430 print("bytes in", len(files), "non-directory files")
2431 if 'CVS' in dirs:
2432 dirs.remove('CVS') # don't visit CVS directories
2433
2434 In the next example, walking the tree bottom-up is essential:
2435 :func:`unlinkat` doesn't allow deleting a directory before the directory is
2436 empty::
2437
2438 # Delete everything reachable from the directory named in "top",
2439 # assuming there are no symbolic links.
2440 # CAUTION: This is dangerous! For example, if top == '/', it
2441 # could delete all your disk files.
2442 import os
2443 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2444 for name in files:
2445 os.unlinkat(rootfd, name)
2446 for name in dirs:
2447 os.unlinkat(rootfd, name, os.AT_REMOVEDIR)
2448
2449 Availability: Unix.
2450
2451 .. versionadded:: 3.3
2452
2453
Georg Brandl116aa622007-08-15 14:28:22 +00002454.. _os-process:
2455
2456Process Management
2457------------------
2458
2459These functions may be used to create and manage processes.
2460
2461The various :func:`exec\*` functions take a list of arguments for the new
2462program loaded into the process. In each case, the first of these arguments is
2463passed to the new program as its own name rather than as an argument a user may
2464have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002465passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002466['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2467to be ignored.
2468
2469
2470.. function:: abort()
2471
2472 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2473 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002474 an exit code of ``3``. Be aware that calling this function will not call the
2475 Python signal handler registered for :const:`SIGABRT` with
2476 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002477
Georg Brandlc575c902008-09-13 17:46:05 +00002478 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002479
2480
2481.. function:: execl(path, arg0, arg1, ...)
2482 execle(path, arg0, arg1, ..., env)
2483 execlp(file, arg0, arg1, ...)
2484 execlpe(file, arg0, arg1, ..., env)
2485 execv(path, args)
2486 execve(path, args, env)
2487 execvp(file, args)
2488 execvpe(file, args, env)
2489
2490 These functions all execute a new program, replacing the current process; they
2491 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002492 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002493 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002494
2495 The current process is replaced immediately. Open file objects and
2496 descriptors are not flushed, so if there may be data buffered
2497 on these open files, you should flush them using
2498 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
2499 :func:`exec\*` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002500
Christian Heimesfaf2f632008-01-06 16:59:19 +00002501 The "l" and "v" variants of the :func:`exec\*` functions differ in how
2502 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002503 to work with if the number of parameters is fixed when the code is written; the
2504 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002505 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002506 variable, with the arguments being passed in a list or tuple as the *args*
2507 parameter. In either case, the arguments to the child process should start with
2508 the name of the command being run, but this is not enforced.
2509
Christian Heimesfaf2f632008-01-06 16:59:19 +00002510 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002511 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2512 :envvar:`PATH` environment variable to locate the program *file*. When the
2513 environment is being replaced (using one of the :func:`exec\*e` variants,
2514 discussed in the next paragraph), the new environment is used as the source of
2515 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2516 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2517 locate the executable; *path* must contain an appropriate absolute or relative
2518 path.
2519
2520 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002521 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002522 used to define the environment variables for the new process (these are used
2523 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002524 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002525 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002526
Larry Hastings9cf065c2012-06-22 16:30:09 -07002527 For :func:`execve` on some platforms, *path* may also be specified as an open
2528 file descriptor. This functionality may not be supported on your platform;
2529 you can check whether or not it is available using :data:`os.supports_fd`.
2530 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2531
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002532 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002533
Larry Hastings9cf065c2012-06-22 16:30:09 -07002534 .. versionadded:: 3.3
2535 Added support for specifying an open file descriptor for *path*
2536 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002537
2538.. function:: _exit(n)
2539
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002540 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002541 stdio buffers, etc.
2542
2543 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002544
2545 .. note::
2546
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002547 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2548 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002549
Christian Heimesfaf2f632008-01-06 16:59:19 +00002550The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002551although they are not required. These are typically used for system programs
2552written in Python, such as a mail server's external command delivery program.
2553
2554.. note::
2555
2556 Some of these may not be available on all Unix platforms, since there is some
2557 variation. These constants are defined where they are defined by the underlying
2558 platform.
2559
2560
2561.. data:: EX_OK
2562
Benjamin Petersonf650e462010-05-06 23:03:05 +00002563 Exit code that means no error occurred.
2564
2565 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002566
Georg Brandl116aa622007-08-15 14:28:22 +00002567
2568.. data:: EX_USAGE
2569
2570 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002571 number of arguments are given.
2572
2573 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002574
Georg Brandl116aa622007-08-15 14:28:22 +00002575
2576.. data:: EX_DATAERR
2577
Benjamin Petersonf650e462010-05-06 23:03:05 +00002578 Exit code that means the input data was incorrect.
2579
2580 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002581
Georg Brandl116aa622007-08-15 14:28:22 +00002582
2583.. data:: EX_NOINPUT
2584
2585 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002586
Georg Brandlc575c902008-09-13 17:46:05 +00002587 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002588
Georg Brandl116aa622007-08-15 14:28:22 +00002589
2590.. data:: EX_NOUSER
2591
Benjamin Petersonf650e462010-05-06 23:03:05 +00002592 Exit code that means a specified user did not exist.
2593
2594 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002595
Georg Brandl116aa622007-08-15 14:28:22 +00002596
2597.. data:: EX_NOHOST
2598
Benjamin Petersonf650e462010-05-06 23:03:05 +00002599 Exit code that means a specified host did not exist.
2600
2601 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002602
Georg Brandl116aa622007-08-15 14:28:22 +00002603
2604.. data:: EX_UNAVAILABLE
2605
Benjamin Petersonf650e462010-05-06 23:03:05 +00002606 Exit code that means that a required service is unavailable.
2607
2608 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002609
Georg Brandl116aa622007-08-15 14:28:22 +00002610
2611.. data:: EX_SOFTWARE
2612
Benjamin Petersonf650e462010-05-06 23:03:05 +00002613 Exit code that means an internal software error was detected.
2614
2615 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002616
Georg Brandl116aa622007-08-15 14:28:22 +00002617
2618.. data:: EX_OSERR
2619
2620 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002621 inability to fork or create a pipe.
2622
2623 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002624
Georg Brandl116aa622007-08-15 14:28:22 +00002625
2626.. data:: EX_OSFILE
2627
2628 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002629 some other kind of error.
2630
2631 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002632
Georg Brandl116aa622007-08-15 14:28:22 +00002633
2634.. data:: EX_CANTCREAT
2635
2636 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002637
Georg Brandlc575c902008-09-13 17:46:05 +00002638 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002639
Georg Brandl116aa622007-08-15 14:28:22 +00002640
2641.. data:: EX_IOERR
2642
2643 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002644
Georg Brandlc575c902008-09-13 17:46:05 +00002645 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002646
Georg Brandl116aa622007-08-15 14:28:22 +00002647
2648.. data:: EX_TEMPFAIL
2649
2650 Exit code that means a temporary failure occurred. This indicates something
2651 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002652 made during a retryable operation.
2653
2654 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002655
Georg Brandl116aa622007-08-15 14:28:22 +00002656
2657.. data:: EX_PROTOCOL
2658
2659 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002660 understood.
2661
2662 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002663
Georg Brandl116aa622007-08-15 14:28:22 +00002664
2665.. data:: EX_NOPERM
2666
2667 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002668 operation (but not intended for file system problems).
2669
2670 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002671
Georg Brandl116aa622007-08-15 14:28:22 +00002672
2673.. data:: EX_CONFIG
2674
2675 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002676
Georg Brandlc575c902008-09-13 17:46:05 +00002677 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002678
Georg Brandl116aa622007-08-15 14:28:22 +00002679
2680.. data:: EX_NOTFOUND
2681
Benjamin Petersonf650e462010-05-06 23:03:05 +00002682 Exit code that means something like "an entry was not found".
2683
2684 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002685
Georg Brandl116aa622007-08-15 14:28:22 +00002686
2687.. function:: fork()
2688
Christian Heimesfaf2f632008-01-06 16:59:19 +00002689 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002690 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002691
2692 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
2693 known issues when using fork() from a thread.
2694
Georg Brandlc575c902008-09-13 17:46:05 +00002695 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002696
2697
2698.. function:: forkpty()
2699
2700 Fork a child process, using a new pseudo-terminal as the child's controlling
2701 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2702 new child's process id in the parent, and *fd* is the file descriptor of the
2703 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002704 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002705
Georg Brandlc575c902008-09-13 17:46:05 +00002706 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002707
2708
2709.. function:: kill(pid, sig)
2710
2711 .. index::
2712 single: process; killing
2713 single: process; signalling
2714
2715 Send signal *sig* to the process *pid*. Constants for the specific signals
2716 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00002717
2718 Windows: The :data:`signal.CTRL_C_EVENT` and
2719 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
2720 only be sent to console processes which share a common console window,
2721 e.g., some subprocesses. Any other value for *sig* will cause the process
2722 to be unconditionally killed by the TerminateProcess API, and the exit code
2723 will be set to *sig*. The Windows version of :func:`kill` additionally takes
2724 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00002725
Victor Stinnerb3e72192011-05-08 01:46:11 +02002726 See also :func:`signal.pthread_kill`.
2727
Georg Brandl67b21b72010-08-17 15:07:14 +00002728 .. versionadded:: 3.2
2729 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00002730
Georg Brandl116aa622007-08-15 14:28:22 +00002731
2732.. function:: killpg(pgid, sig)
2733
2734 .. index::
2735 single: process; killing
2736 single: process; signalling
2737
Benjamin Petersonf650e462010-05-06 23:03:05 +00002738 Send the signal *sig* to the process group *pgid*.
2739
2740 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002741
Georg Brandl116aa622007-08-15 14:28:22 +00002742
2743.. function:: nice(increment)
2744
2745 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002746
Georg Brandlc575c902008-09-13 17:46:05 +00002747 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002748
2749
2750.. function:: plock(op)
2751
2752 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00002753 ``<sys/lock.h>``) determines which segments are locked.
2754
2755 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002756
2757
2758.. function:: popen(...)
2759 :noindex:
2760
2761 Run child processes, returning opened pipes for communications. These functions
2762 are described in section :ref:`os-newstreams`.
2763
2764
2765.. function:: spawnl(mode, path, ...)
2766 spawnle(mode, path, ..., env)
2767 spawnlp(mode, file, ...)
2768 spawnlpe(mode, file, ..., env)
2769 spawnv(mode, path, args)
2770 spawnve(mode, path, args, env)
2771 spawnvp(mode, file, args)
2772 spawnvpe(mode, file, args, env)
2773
2774 Execute the program *path* in a new process.
2775
2776 (Note that the :mod:`subprocess` module provides more powerful facilities for
2777 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00002778 preferable to using these functions. Check especially the
2779 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00002780
Christian Heimesfaf2f632008-01-06 16:59:19 +00002781 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00002782 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
2783 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002784 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00002785 be used with the :func:`waitpid` function.
2786
Christian Heimesfaf2f632008-01-06 16:59:19 +00002787 The "l" and "v" variants of the :func:`spawn\*` functions differ in how
2788 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002789 to work with if the number of parameters is fixed when the code is written; the
2790 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002791 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00002792 parameters is variable, with the arguments being passed in a list or tuple as
2793 the *args* parameter. In either case, the arguments to the child process must
2794 start with the name of the command being run.
2795
Christian Heimesfaf2f632008-01-06 16:59:19 +00002796 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002797 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
2798 :envvar:`PATH` environment variable to locate the program *file*. When the
2799 environment is being replaced (using one of the :func:`spawn\*e` variants,
2800 discussed in the next paragraph), the new environment is used as the source of
2801 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
2802 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
2803 :envvar:`PATH` variable to locate the executable; *path* must contain an
2804 appropriate absolute or relative path.
2805
2806 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002807 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00002808 which is used to define the environment variables for the new process (they are
2809 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00002810 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00002811 the new process to inherit the environment of the current process. Note that
2812 keys and values in the *env* dictionary must be strings; invalid keys or
2813 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00002814
2815 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
2816 equivalent::
2817
2818 import os
2819 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
2820
2821 L = ['cp', 'index.html', '/dev/null']
2822 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
2823
2824 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02002825 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
2826 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
2827 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00002828
Georg Brandl116aa622007-08-15 14:28:22 +00002829
2830.. data:: P_NOWAIT
2831 P_NOWAITO
2832
2833 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2834 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00002835 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00002836 the return value.
2837
2838 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002839
Georg Brandl116aa622007-08-15 14:28:22 +00002840
2841.. data:: P_WAIT
2842
2843 Possible value for the *mode* parameter to the :func:`spawn\*` family of
2844 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
2845 return until the new process has run to completion and will return the exit code
2846 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002847 process.
2848
2849 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002850
Georg Brandl116aa622007-08-15 14:28:22 +00002851
2852.. data:: P_DETACH
2853 P_OVERLAY
2854
2855 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2856 functions. These are less portable than those listed above. :const:`P_DETACH`
2857 is similar to :const:`P_NOWAIT`, but the new process is detached from the
2858 console of the calling process. If :const:`P_OVERLAY` is used, the current
2859 process will be replaced; the :func:`spawn\*` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002860
Georg Brandl116aa622007-08-15 14:28:22 +00002861 Availability: Windows.
2862
Georg Brandl116aa622007-08-15 14:28:22 +00002863
2864.. function:: startfile(path[, operation])
2865
2866 Start a file with its associated application.
2867
2868 When *operation* is not specified or ``'open'``, this acts like double-clicking
2869 the file in Windows Explorer, or giving the file name as an argument to the
2870 :program:`start` command from the interactive command shell: the file is opened
2871 with whatever application (if any) its extension is associated.
2872
2873 When another *operation* is given, it must be a "command verb" that specifies
2874 what should be done with the file. Common verbs documented by Microsoft are
2875 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
2876 ``'find'`` (to be used on directories).
2877
2878 :func:`startfile` returns as soon as the associated application is launched.
2879 There is no option to wait for the application to close, and no way to retrieve
2880 the application's exit status. The *path* parameter is relative to the current
2881 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00002882 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00002883 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00002884 the path is properly encoded for Win32.
2885
2886 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002887
Georg Brandl116aa622007-08-15 14:28:22 +00002888
2889.. function:: system(command)
2890
2891 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00002892 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00002893 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
2894 the executed command. If *command* generates any output, it will be sent to
2895 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00002896
2897 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00002898 format specified for :func:`wait`. Note that POSIX does not specify the
2899 meaning of the return value of the C :c:func:`system` function, so the return
2900 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00002901
Georg Brandl8f7b4272010-10-14 06:35:53 +00002902 On Windows, the return value is that returned by the system shell after
2903 running *command*. The shell is given by the Windows environment variable
2904 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
2905 status of the command run; on systems using a non-native shell, consult your
2906 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00002907
Georg Brandl8f7b4272010-10-14 06:35:53 +00002908 The :mod:`subprocess` module provides more powerful facilities for spawning
2909 new processes and retrieving their results; using that module is preferable
2910 to using this function. See the :ref:`subprocess-replacements` section in
2911 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00002912
Benjamin Petersonf650e462010-05-06 23:03:05 +00002913 Availability: Unix, Windows.
2914
Georg Brandl116aa622007-08-15 14:28:22 +00002915
2916.. function:: times()
2917
Benjamin Petersonf650e462010-05-06 23:03:05 +00002918 Return a 5-tuple of floating point numbers indicating accumulated (processor
2919 or other) times, in seconds. The items are: user time, system time,
2920 children's user time, children's system time, and elapsed real time since a
2921 fixed point in the past, in that order. See the Unix manual page
2922 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
2923 On Windows, only the first two items are filled, the others are zero.
2924
2925 Availability: Unix, Windows
Georg Brandl116aa622007-08-15 14:28:22 +00002926
2927
2928.. function:: wait()
2929
2930 Wait for completion of a child process, and return a tuple containing its pid
2931 and exit status indication: a 16-bit number, whose low byte is the signal number
2932 that killed the process, and whose high byte is the exit status (if the signal
2933 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00002934 produced.
2935
2936 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002937
Ross Lagerwall7807c352011-03-17 20:20:30 +02002938.. function:: waitid(idtype, id, options)
2939
2940 Wait for the completion of one or more child processes.
2941 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
2942 *id* specifies the pid to wait on.
2943 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
2944 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
2945 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
2946 representing the data contained in the :c:type:`siginfo_t` structure, namely:
2947 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
2948 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
2949 children in a waitable state.
2950
2951 Availability: Unix.
2952
2953 .. versionadded:: 3.3
2954
2955.. data:: P_PID
2956 P_PGID
2957 P_ALL
2958
2959 These are the possible values for *idtype* in :func:`waitid`. They affect
2960 how *id* is interpreted.
2961
2962 Availability: Unix.
2963
2964 .. versionadded:: 3.3
2965
2966.. data:: WEXITED
2967 WSTOPPED
2968 WNOWAIT
2969
2970 Flags that can be used in *options* in :func:`waitid` that specify what
2971 child signal to wait for.
2972
2973 Availability: Unix.
2974
2975 .. versionadded:: 3.3
2976
2977
2978.. data:: CLD_EXITED
2979 CLD_DUMPED
2980 CLD_TRAPPED
2981 CLD_CONTINUED
2982
2983 These are the possible values for :attr:`si_code` in the result returned by
2984 :func:`waitid`.
2985
2986 Availability: Unix.
2987
2988 .. versionadded:: 3.3
2989
Georg Brandl116aa622007-08-15 14:28:22 +00002990
2991.. function:: waitpid(pid, options)
2992
2993 The details of this function differ on Unix and Windows.
2994
2995 On Unix: Wait for completion of a child process given by process id *pid*, and
2996 return a tuple containing its process id and exit status indication (encoded as
2997 for :func:`wait`). The semantics of the call are affected by the value of the
2998 integer *options*, which should be ``0`` for normal operation.
2999
3000 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
3001 that specific process. If *pid* is ``0``, the request is for the status of any
3002 child in the process group of the current process. If *pid* is ``-1``, the
3003 request pertains to any child of the current process. If *pid* is less than
3004 ``-1``, status is requested for any process in the process group ``-pid`` (the
3005 absolute value of *pid*).
3006
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00003007 An :exc:`OSError` is raised with the value of errno when the syscall
3008 returns -1.
3009
Georg Brandl116aa622007-08-15 14:28:22 +00003010 On Windows: Wait for completion of a process given by process handle *pid*, and
3011 return a tuple containing *pid*, and its exit status shifted left by 8 bits
3012 (shifting makes cross-platform use of the function easier). A *pid* less than or
3013 equal to ``0`` has no special meaning on Windows, and raises an exception. The
3014 value of integer *options* has no effect. *pid* can refer to any process whose
3015 id is known, not necessarily a child process. The :func:`spawn` functions called
3016 with :const:`P_NOWAIT` return suitable process handles.
3017
3018
Victor Stinner4195b5c2012-02-08 23:03:19 +01003019.. function:: wait3([options])
Georg Brandl116aa622007-08-15 14:28:22 +00003020
3021 Similar to :func:`waitpid`, except no process id argument is given and a
3022 3-element tuple containing the child's process id, exit status indication, and
3023 resource usage information is returned. Refer to :mod:`resource`.\
3024 :func:`getrusage` for details on resource usage information. The option
3025 argument is the same as that provided to :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003026
Georg Brandl116aa622007-08-15 14:28:22 +00003027 Availability: Unix.
3028
Georg Brandl116aa622007-08-15 14:28:22 +00003029
Victor Stinner4195b5c2012-02-08 23:03:19 +01003030.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00003031
3032 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
3033 process id, exit status indication, and resource usage information is returned.
3034 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage
3035 information. The arguments to :func:`wait4` are the same as those provided to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003036 :func:`waitpid`.
3037
3038 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003039
Georg Brandl116aa622007-08-15 14:28:22 +00003040
3041.. data:: WNOHANG
3042
3043 The option for :func:`waitpid` to return immediately if no child process status
3044 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003045
Georg Brandlc575c902008-09-13 17:46:05 +00003046 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003047
3048
3049.. data:: WCONTINUED
3050
3051 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00003052 from a job control stop since their status was last reported.
3053
3054 Availability: Some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00003055
Georg Brandl116aa622007-08-15 14:28:22 +00003056
3057.. data:: WUNTRACED
3058
3059 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00003060 their current state has not been reported since they were stopped.
3061
3062 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003063
Georg Brandl116aa622007-08-15 14:28:22 +00003064
3065The following functions take a process status code as returned by
3066:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
3067used to determine the disposition of a process.
3068
Georg Brandl116aa622007-08-15 14:28:22 +00003069.. function:: WCOREDUMP(status)
3070
Christian Heimesfaf2f632008-01-06 16:59:19 +00003071 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00003072 return ``False``.
3073
3074 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003075
Georg Brandl116aa622007-08-15 14:28:22 +00003076
3077.. function:: WIFCONTINUED(status)
3078
Christian Heimesfaf2f632008-01-06 16:59:19 +00003079 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003080 otherwise return ``False``.
3081
3082 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003083
Georg Brandl116aa622007-08-15 14:28:22 +00003084
3085.. function:: WIFSTOPPED(status)
3086
Christian Heimesfaf2f632008-01-06 16:59:19 +00003087 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003088 ``False``.
3089
3090 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003091
3092
3093.. function:: WIFSIGNALED(status)
3094
Christian Heimesfaf2f632008-01-06 16:59:19 +00003095 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003096 ``False``.
3097
3098 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003099
3100
3101.. function:: WIFEXITED(status)
3102
Christian Heimesfaf2f632008-01-06 16:59:19 +00003103 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003104 otherwise return ``False``.
3105
3106 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003107
3108
3109.. function:: WEXITSTATUS(status)
3110
3111 If ``WIFEXITED(status)`` is true, return the integer parameter to the
3112 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003113
Georg Brandlc575c902008-09-13 17:46:05 +00003114 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003115
3116
3117.. function:: WSTOPSIG(status)
3118
Benjamin Petersonf650e462010-05-06 23:03:05 +00003119 Return the signal which caused the process to stop.
3120
3121 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003122
3123
3124.. function:: WTERMSIG(status)
3125
Benjamin Petersonf650e462010-05-06 23:03:05 +00003126 Return the signal which caused the process to exit.
3127
3128 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003129
3130
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003131Interface to the scheduler
3132--------------------------
3133
3134These functions control how a process is allocated CPU time by the operating
3135system. They are only available on some Unix platforms. For more detailed
3136information, consult your Unix manpages.
3137
3138.. versionadded:: 3.3
3139
3140The following scheduling policies are exposed if they are a supported by the
3141operating system.
3142
3143.. data:: SCHED_OTHER
3144
3145 The default scheduling policy.
3146
3147.. data:: SCHED_BATCH
3148
3149 Scheduling policy for CPU-intensive processes that tries to preserve
3150 interactivity on the rest of the computer.
3151
3152.. data:: SCHED_IDLE
3153
3154 Scheduling policy for extremely low priority background tasks.
3155
3156.. data:: SCHED_SPORADIC
3157
3158 Scheduling policy for sporadic server programs.
3159
3160.. data:: SCHED_FIFO
3161
3162 A First In First Out scheduling policy.
3163
3164.. data:: SCHED_RR
3165
3166 A round-robin scheduling policy.
3167
3168.. data:: SCHED_RESET_ON_FORK
3169
3170 This flag can OR'ed with any other scheduling policy. When a process with
3171 this flag set forks, its child's scheduling policy and priority are reset to
3172 the default.
3173
3174
3175.. class:: sched_param(sched_priority)
3176
3177 This class represents tunable scheduling parameters used in
3178 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3179 :func:`sched_getparam`. It is immutable.
3180
3181 At the moment, there is only one possible parameter:
3182
3183 .. attribute:: sched_priority
3184
3185 The scheduling priority for a scheduling policy.
3186
3187
3188.. function:: sched_get_priority_min(policy)
3189
3190 Get the minimum priority value for *policy*. *policy* is one of the
3191 scheduling policy constants above.
3192
3193
3194.. function:: sched_get_priority_max(policy)
3195
3196 Get the maximum priority value for *policy*. *policy* is one of the
3197 scheduling policy constants above.
3198
3199
3200.. function:: sched_setscheduler(pid, policy, param)
3201
3202 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3203 the calling process. *policy* is one of the scheduling policy constants
3204 above. *param* is a :class:`sched_param` instance.
3205
3206
3207.. function:: sched_getscheduler(pid)
3208
3209 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3210 means the calling process. The result is one of the scheduling policy
3211 constants above.
3212
3213
3214.. function:: sched_setparam(pid, param)
3215
3216 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3217 the calling process. *param* is a :class:`sched_param` instance.
3218
3219
3220.. function:: sched_getparam(pid)
3221
3222 Return the scheduling parameters as a :class:`sched_param` instance for the
3223 process with PID *pid*. A *pid* of 0 means the calling process.
3224
3225
3226.. function:: sched_rr_get_interval(pid)
3227
3228 Return the round-robin quantum in seconds for the process with PID *pid*. A
3229 *pid* of 0 means the calling process.
3230
3231
3232.. function:: sched_yield()
3233
3234 Voluntarily relinquish the CPU.
3235
3236
3237.. class:: cpu_set(ncpus)
3238
3239 :class:`cpu_set` represents a set of CPUs on which a process is eligible to
3240 run. *ncpus* is the number of CPUs the set should describe. Methods on
3241 :class:`cpu_set` allow CPUs to be add or removed.
3242
3243 :class:`cpu_set` supports the AND, OR, and XOR bitwise operations. For
3244 example, given two cpu_sets, ``one`` and ``two``, ``one | two`` returns a
3245 :class:`cpu_set` containing the cpus enabled both in ``one`` and ``two``.
3246
3247 .. method:: set(i)
3248
3249 Enable CPU *i*.
3250
3251 .. method:: clear(i)
3252
3253 Remove CPU *i*.
3254
3255 .. method:: isset(i)
3256
3257 Return ``True`` if CPU *i* is enabled in the set.
3258
3259 .. method:: count()
3260
3261 Return the number of enabled CPUs in the set.
3262
3263 .. method:: zero()
3264
3265 Clear the set completely.
3266
3267
3268.. function:: sched_setaffinity(pid, mask)
3269
3270 Restrict the process with PID *pid* to a set of CPUs. *mask* is a
3271 :class:`cpu_set` instance.
3272
3273
3274.. function:: sched_getaffinity(pid, size)
3275
3276 Return the :class:`cpu_set` the process with PID *pid* is restricted to. The
3277 result will contain *size* CPUs.
3278
3279
Georg Brandl116aa622007-08-15 14:28:22 +00003280.. _os-path:
3281
3282Miscellaneous System Information
3283--------------------------------
3284
3285
3286.. function:: confstr(name)
3287
3288 Return string-valued system configuration values. *name* specifies the
3289 configuration value to retrieve; it may be a string which is the name of a
3290 defined system value; these names are specified in a number of standards (POSIX,
3291 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3292 The names known to the host operating system are given as the keys of the
3293 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003294 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003295
3296 If the configuration value specified by *name* isn't defined, ``None`` is
3297 returned.
3298
3299 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3300 specific value for *name* is not supported by the host system, even if it is
3301 included in ``confstr_names``, an :exc:`OSError` is raised with
3302 :const:`errno.EINVAL` for the error number.
3303
Benjamin Petersonf650e462010-05-06 23:03:05 +00003304 Availability: Unix
3305
Georg Brandl116aa622007-08-15 14:28:22 +00003306
3307.. data:: confstr_names
3308
3309 Dictionary mapping names accepted by :func:`confstr` to the integer values
3310 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003311 determine the set of names known to the system.
3312
3313 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003314
3315
3316.. function:: getloadavg()
3317
Christian Heimesa62da1d2008-01-12 19:39:10 +00003318 Return the number of processes in the system run queue averaged over the last
3319 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003320 unobtainable.
3321
3322 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003323
Georg Brandl116aa622007-08-15 14:28:22 +00003324
3325.. function:: sysconf(name)
3326
3327 Return integer-valued system configuration values. If the configuration value
3328 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3329 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3330 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003331
Georg Brandlc575c902008-09-13 17:46:05 +00003332 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003333
3334
3335.. data:: sysconf_names
3336
3337 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3338 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003339 determine the set of names known to the system.
3340
3341 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003342
Christian Heimesfaf2f632008-01-06 16:59:19 +00003343The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003344are defined for all platforms.
3345
3346Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3347
3348
3349.. data:: curdir
3350
3351 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003352 directory. This is ``'.'`` for Windows and POSIX. Also available via
3353 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003354
3355
3356.. data:: pardir
3357
3358 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003359 directory. This is ``'..'`` for Windows and POSIX. Also available via
3360 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003361
3362
3363.. data:: sep
3364
Georg Brandlc575c902008-09-13 17:46:05 +00003365 The character used by the operating system to separate pathname components.
3366 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3367 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003368 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3369 useful. Also available via :mod:`os.path`.
3370
3371
3372.. data:: altsep
3373
3374 An alternative character used by the operating system to separate pathname
3375 components, or ``None`` if only one separator character exists. This is set to
3376 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3377 :mod:`os.path`.
3378
3379
3380.. data:: extsep
3381
3382 The character which separates the base filename from the extension; for example,
3383 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3384
Georg Brandl116aa622007-08-15 14:28:22 +00003385
3386.. data:: pathsep
3387
3388 The character conventionally used by the operating system to separate search
3389 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3390 Windows. Also available via :mod:`os.path`.
3391
3392
3393.. data:: defpath
3394
3395 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the
3396 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`.
3397
3398
3399.. data:: linesep
3400
3401 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003402 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3403 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3404 *os.linesep* as a line terminator when writing files opened in text mode (the
3405 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003406
3407
3408.. data:: devnull
3409
Georg Brandl850a9902010-05-21 22:04:32 +00003410 The file path of the null device. For example: ``'/dev/null'`` for
3411 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003412
Georg Brandl116aa622007-08-15 14:28:22 +00003413
3414.. _os-miscfunc:
3415
3416Miscellaneous Functions
3417-----------------------
3418
3419
3420.. function:: urandom(n)
3421
3422 Return a string of *n* random bytes suitable for cryptographic use.
3423
3424 This function returns random bytes from an OS-specific randomness source. The
3425 returned data should be unpredictable enough for cryptographic applications,
3426 though its exact quality depends on the OS implementation. On a UNIX-like
3427 system this will query /dev/urandom, and on Windows it will use CryptGenRandom.
3428 If a randomness source is not found, :exc:`NotImplementedError` will be raised.