blob: d7b98292adb5e7941c42f3054f2f50ea9171edaf [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
Georg Brandl8ccadaa2012-06-24 12:50:06 +020099.. function:: ctermid()
100
101 Return the filename corresponding to the controlling terminal of the process.
102
103 Availability: Unix.
104
105
Georg Brandl116aa622007-08-15 14:28:22 +0000106.. data:: environ
107
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700108 A :term:`mapping` object representing the string environment. For example,
Georg Brandl116aa622007-08-15 14:28:22 +0000109 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
110 and is equivalent to ``getenv("HOME")`` in C.
111
112 This mapping is captured the first time the :mod:`os` module is imported,
113 typically during Python startup as part of processing :file:`site.py`. Changes
114 to the environment made after this time are not reflected in ``os.environ``,
115 except for changes made by modifying ``os.environ`` directly.
116
117 If the platform supports the :func:`putenv` function, this mapping may be used
118 to modify the environment as well as query the environment. :func:`putenv` will
119 be called automatically when the mapping is modified.
120
Victor Stinner84ae1182010-05-06 22:05:07 +0000121 On Unix, keys and values use :func:`sys.getfilesystemencoding` and
122 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like
123 to use a different encoding.
124
Georg Brandl116aa622007-08-15 14:28:22 +0000125 .. note::
126
127 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
128 to modify ``os.environ``.
129
130 .. note::
131
Georg Brandlc575c902008-09-13 17:46:05 +0000132 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
133 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000134 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000135
136 If :func:`putenv` is not provided, a modified copy of this mapping may be
137 passed to the appropriate process-creation functions to cause child processes
138 to use a modified environment.
139
Georg Brandl9afde1c2007-11-01 20:32:30 +0000140 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000141 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000142 automatically when an item is deleted from ``os.environ``, and when
143 one of the :meth:`pop` or :meth:`clear` methods is called.
144
Georg Brandl116aa622007-08-15 14:28:22 +0000145
Victor Stinner84ae1182010-05-06 22:05:07 +0000146.. data:: environb
147
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700148 Bytes version of :data:`environ`: a :term:`mapping` object representing the
Victor Stinner84ae1182010-05-06 22:05:07 +0000149 environment as byte strings. :data:`environ` and :data:`environb` are
150 synchronized (modify :data:`environb` updates :data:`environ`, and vice
151 versa).
152
Victor Stinnerb745a742010-05-18 17:17:23 +0000153 :data:`environb` is only available if :data:`supports_bytes_environ` is
154 True.
Victor Stinner84ae1182010-05-06 22:05:07 +0000155
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000156 .. versionadded:: 3.2
157
Victor Stinner84ae1182010-05-06 22:05:07 +0000158
Georg Brandl116aa622007-08-15 14:28:22 +0000159.. function:: chdir(path)
160 fchdir(fd)
161 getcwd()
162 :noindex:
163
164 These functions are described in :ref:`os-file-dir`.
165
166
Victor Stinnere8d51452010-08-19 01:05:19 +0000167.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000168
Victor Stinnere8d51452010-08-19 01:05:19 +0000169 Encode *filename* to the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000170 error handler, or ``'strict'`` on Windows; return :class:`bytes` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000171
Antoine Pitroua305ca72010-09-25 22:12:00 +0000172 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000173
174 .. versionadded:: 3.2
175
176
177.. function:: fsdecode(filename)
178
179 Decode *filename* from the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000180 error handler, or ``'strict'`` on Windows; return :class:`str` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000181
182 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000183
184 .. versionadded:: 3.2
185
186
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200187.. function:: getenv(key, default=None)
188
189 Return the value of the environment variable *key* if it exists, or
190 *default* if it doesn't. *key*, *default* and the result are str.
191
192 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
193 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
194 would like to use a different encoding.
195
196 Availability: most flavors of Unix, Windows.
197
198
199.. function:: getenvb(key, default=None)
200
201 Return the value of the environment variable *key* if it exists, or
202 *default* if it doesn't. *key*, *default* and the result are bytes.
203
204 Availability: most flavors of Unix.
205
206 .. versionadded:: 3.2
207
208
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000209.. function:: get_exec_path(env=None)
210
211 Returns the list of directories that will be searched for a named
212 executable, similar to a shell, when launching a process.
213 *env*, when specified, should be an environment variable dictionary
214 to lookup the PATH in.
215 By default, when *env* is None, :data:`environ` is used.
216
217 .. versionadded:: 3.2
218
219
Georg Brandl116aa622007-08-15 14:28:22 +0000220.. function:: getegid()
221
222 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000223 "set id" bit on the file being executed in the current process.
224
225 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000226
227
228.. function:: geteuid()
229
230 .. index:: single: user; effective id
231
Benjamin Petersonf650e462010-05-06 23:03:05 +0000232 Return the current process's effective user id.
233
234 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000235
236
237.. function:: getgid()
238
239 .. index:: single: process; group
240
Benjamin Petersonf650e462010-05-06 23:03:05 +0000241 Return the real group id of the current process.
242
243 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000244
245
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200246.. function:: getgrouplist(user, group)
247
248 Return list of group ids that *user* belongs to. If *group* is not in the
249 list, it is included; typically, *group* is specified as the group ID
250 field from the password record for *user*.
251
252 Availability: Unix.
253
254 .. versionadded:: 3.3
255
256
Georg Brandl116aa622007-08-15 14:28:22 +0000257.. function:: getgroups()
258
259 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000260
Georg Brandl116aa622007-08-15 14:28:22 +0000261 Availability: Unix.
262
Éric Araujofa5e6e42014-03-12 19:51:00 -0400263 .. note::
264
265 On Mac OS X, :func:`getgroups` behavior differs somewhat from
Ned Deily2e209682012-04-30 11:14:02 -0700266 other Unix platforms. If the Python interpreter was built with a
267 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
268 the list of effective group ids associated with the current user process;
269 this list is limited to a system-defined number of entries, typically 16,
270 and may be modified by calls to :func:`setgroups` if suitably privileged.
271 If built with a deployment target greater than :const:`10.5`,
272 :func:`getgroups` returns the current group access list for the user
273 associated with the effective user id of the process; the group access
274 list may change over the lifetime of the process, it is not affected by
275 calls to :func:`setgroups`, and its length is not limited to 16. The
276 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
277 obtained with :func:`sysconfig.get_config_var`.
278
Georg Brandl116aa622007-08-15 14:28:22 +0000279
280.. function:: getlogin()
281
282 Return the name of the user logged in on the controlling terminal of the
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000283 process. For most purposes, it is more useful to use the environment variables
284 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, or
Georg Brandl116aa622007-08-15 14:28:22 +0000285 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently
Benjamin Petersonf650e462010-05-06 23:03:05 +0000286 effective user id.
287
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000288 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000289
290
291.. function:: getpgid(pid)
292
293 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000294 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000295
Benjamin Petersonf650e462010-05-06 23:03:05 +0000296 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000297
298.. function:: getpgrp()
299
300 .. index:: single: process; group
301
Benjamin Petersonf650e462010-05-06 23:03:05 +0000302 Return the id of the current process group.
303
304 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000305
306
307.. function:: getpid()
308
309 .. index:: single: process; id
310
Benjamin Petersonf650e462010-05-06 23:03:05 +0000311 Return the current process id.
312
313 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000314
315
316.. function:: getppid()
317
318 .. index:: single: process; id of parent
319
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000320 Return the parent's process id. When the parent process has exited, on Unix
321 the id returned is the one of the init process (1), on Windows it is still
322 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000323
Georg Brandl8a5555f2012-06-24 13:29:09 +0200324 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000325
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000326 .. versionchanged:: 3.2
327 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000328
Georg Brandl8a5555f2012-06-24 13:29:09 +0200329
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000330.. function:: getpriority(which, who)
331
332 .. index:: single: process; scheduling priority
333
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200334 Get program scheduling priority. The value *which* is one of
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000335 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
336 is interpreted relative to *which* (a process identifier for
337 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200338 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000339 (respectively) the calling process, the process group of the calling process,
340 or the real user ID of the calling process.
341
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200342 Availability: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000343
344 .. versionadded:: 3.3
345
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200346
347.. data:: PRIO_PROCESS
348 PRIO_PGRP
349 PRIO_USER
350
351 Parameters for the :func:`getpriority` and :func:`setpriority` functions.
352
353 Availability: Unix.
354
355 .. versionadded:: 3.3
356
357
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000358.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000359
360 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000361 real, effective, and saved user ids.
362
363 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000364
Georg Brandl1b83a452009-11-28 11:12:26 +0000365 .. versionadded:: 3.2
366
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000367
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000368.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000369
370 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000371 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000372
373 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000374
Georg Brandl1b83a452009-11-28 11:12:26 +0000375 .. versionadded:: 3.2
376
Georg Brandl116aa622007-08-15 14:28:22 +0000377
378.. function:: getuid()
379
380 .. index:: single: user; id
381
Benjamin Petersonf650e462010-05-06 23:03:05 +0000382 Return the current process's user id.
383
384 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000385
386
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200387.. function:: initgroups(username, gid)
Georg Brandl116aa622007-08-15 14:28:22 +0000388
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200389 Call the system initgroups() to initialize the group access list with all of
390 the groups of which the specified username is a member, plus the specified
391 group id.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000392
393 Availability: Unix.
394
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200395 .. versionadded:: 3.2
396
Georg Brandl116aa622007-08-15 14:28:22 +0000397
Georg Brandl18244152009-09-02 20:34:52 +0000398.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000399
400 .. index:: single: environment variables; setting
401
Georg Brandl18244152009-09-02 20:34:52 +0000402 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000403 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000404 :func:`popen` or :func:`fork` and :func:`execv`.
405
406 Availability: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000407
408 .. note::
409
Georg Brandlc575c902008-09-13 17:46:05 +0000410 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
411 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000412
413 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
414 automatically translated into corresponding calls to :func:`putenv`; however,
415 calls to :func:`putenv` don't update ``os.environ``, so it is actually
416 preferable to assign to items of ``os.environ``.
417
418
419.. function:: setegid(egid)
420
Benjamin Petersonf650e462010-05-06 23:03:05 +0000421 Set the current process's effective group id.
422
423 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000424
425
426.. function:: seteuid(euid)
427
Benjamin Petersonf650e462010-05-06 23:03:05 +0000428 Set the current process's effective user id.
429
430 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000431
432
433.. function:: setgid(gid)
434
Benjamin Petersonf650e462010-05-06 23:03:05 +0000435 Set the current process' group id.
436
437 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000438
439
440.. function:: setgroups(groups)
441
442 Set the list of supplemental group ids associated with the current process to
443 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000444 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000445
Georg Brandl116aa622007-08-15 14:28:22 +0000446 Availability: Unix.
447
Ned Deily2e209682012-04-30 11:14:02 -0700448 .. note:: On Mac OS X, the length of *groups* may not exceed the
449 system-defined maximum number of effective group ids, typically 16.
450 See the documentation for :func:`getgroups` for cases where it may not
451 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000452
453.. function:: setpgrp()
454
Andrew Svetlova2fe3342012-08-11 21:14:08 +0300455 Call the system call :c:func:`setpgrp` or ``setpgrp(0, 0)`` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000456 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000457
Georg Brandl116aa622007-08-15 14:28:22 +0000458 Availability: Unix.
459
460
461.. function:: setpgid(pid, pgrp)
462
Georg Brandl60203b42010-10-06 10:11:56 +0000463 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000464 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000465 for the semantics.
466
467 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000468
469
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000470.. function:: setpriority(which, who, priority)
471
472 .. index:: single: process; scheduling priority
473
474 Set program scheduling priority. The value *which* is one of
475 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
476 is interpreted relative to *which* (a process identifier for
477 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
478 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
479 (respectively) the calling process, the process group of the calling process,
480 or the real user ID of the calling process.
481 *priority* is a value in the range -20 to 19. The default priority is 0;
482 lower priorities cause more favorable scheduling.
483
484 Availability: Unix
485
486 .. versionadded:: 3.3
487
488
Georg Brandl116aa622007-08-15 14:28:22 +0000489.. function:: setregid(rgid, egid)
490
Benjamin Petersonf650e462010-05-06 23:03:05 +0000491 Set the current process's real and effective group ids.
492
493 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000494
Georg Brandl1b83a452009-11-28 11:12:26 +0000495
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000496.. function:: setresgid(rgid, egid, sgid)
497
498 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000499
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000500 Availability: Unix.
501
Georg Brandl1b83a452009-11-28 11:12:26 +0000502 .. versionadded:: 3.2
503
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000504
505.. function:: setresuid(ruid, euid, suid)
506
507 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000508
Georg Brandl6faee4e2010-09-21 14:48:28 +0000509 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000510
Georg Brandl1b83a452009-11-28 11:12:26 +0000511 .. versionadded:: 3.2
512
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000513
514.. function:: setreuid(ruid, euid)
515
Benjamin Petersonf650e462010-05-06 23:03:05 +0000516 Set the current process's real and effective user ids.
517
518 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000519
Georg Brandl116aa622007-08-15 14:28:22 +0000520
521.. function:: getsid(pid)
522
Georg Brandl60203b42010-10-06 10:11:56 +0000523 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000524
Georg Brandl116aa622007-08-15 14:28:22 +0000525 Availability: Unix.
526
Georg Brandl116aa622007-08-15 14:28:22 +0000527
528.. function:: setsid()
529
Georg Brandl60203b42010-10-06 10:11:56 +0000530 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000531
Georg Brandl116aa622007-08-15 14:28:22 +0000532 Availability: Unix.
533
534
535.. function:: setuid(uid)
536
537 .. index:: single: user; id, setting
538
Benjamin Petersonf650e462010-05-06 23:03:05 +0000539 Set the current process's user id.
540
541 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000542
Georg Brandl116aa622007-08-15 14:28:22 +0000543
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000544.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000545.. function:: strerror(code)
546
547 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000548 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000549 error number, :exc:`ValueError` is raised.
550
551 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000552
553
Victor Stinnerb745a742010-05-18 17:17:23 +0000554.. data:: supports_bytes_environ
555
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200556 ``True`` if the native OS type of the environment is bytes (eg. ``False`` on
Victor Stinnerb745a742010-05-18 17:17:23 +0000557 Windows).
558
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000559 .. versionadded:: 3.2
560
Victor Stinnerb745a742010-05-18 17:17:23 +0000561
Georg Brandl116aa622007-08-15 14:28:22 +0000562.. function:: umask(mask)
563
Benjamin Petersonf650e462010-05-06 23:03:05 +0000564 Set the current numeric umask and return the previous umask.
565
566 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000567
568
569.. function:: uname()
570
571 .. index::
572 single: gethostname() (in module socket)
573 single: gethostbyaddr() (in module socket)
574
Larry Hastings605a62d2012-06-24 04:33:36 -0700575 Returns information identifying the current operating system.
576 The return value is an object with five attributes:
577
578 * :attr:`sysname` - operating system name
579 * :attr:`nodename` - name of machine on network (implementation-defined)
580 * :attr:`release` - operating system release
581 * :attr:`version` - operating system version
582 * :attr:`machine` - hardware identifier
583
584 For backwards compatibility, this object is also iterable, behaving
585 like a five-tuple containing :attr:`sysname`, :attr:`nodename`,
586 :attr:`release`, :attr:`version`, and :attr:`machine`
587 in that order.
588
589 Some systems truncate :attr:`nodename` to 8 characters or to the
Georg Brandl116aa622007-08-15 14:28:22 +0000590 leading component; a better way to get the hostname is
591 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000592 ``socket.gethostbyaddr(socket.gethostname())``.
593
594 Availability: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000595
Larry Hastings605a62d2012-06-24 04:33:36 -0700596 .. versionchanged:: 3.3
597 Return type changed from a tuple to a tuple-like object
598 with named attributes.
599
Georg Brandl116aa622007-08-15 14:28:22 +0000600
Georg Brandl18244152009-09-02 20:34:52 +0000601.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000602
603 .. index:: single: environment variables; deleting
604
Georg Brandl18244152009-09-02 20:34:52 +0000605 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000606 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000607 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000608
609 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
610 automatically translated into a corresponding call to :func:`unsetenv`; however,
611 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
612 preferable to delete items of ``os.environ``.
613
Benjamin Petersonf650e462010-05-06 23:03:05 +0000614 Availability: most flavors of Unix, Windows.
615
Georg Brandl116aa622007-08-15 14:28:22 +0000616
617.. _os-newstreams:
618
619File Object Creation
620--------------------
621
Georg Brandla570e982012-06-24 13:26:22 +0200622This function creates new :term:`file objects <file object>`. (See also
Georg Brandlb2462e22012-06-24 13:24:56 +0200623:func:`~os.open` for opening file descriptors.)
Georg Brandl116aa622007-08-15 14:28:22 +0000624
625
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300626.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000627
Georg Brandlb2462e22012-06-24 13:24:56 +0200628 Return an open file object connected to the file descriptor *fd*. This is an
629 alias of the :func:`open` built-in function and accepts the same arguments.
630 The only difference is that the first argument of :func:`fdopen` must always
631 be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000632
Georg Brandl116aa622007-08-15 14:28:22 +0000633
Georg Brandl116aa622007-08-15 14:28:22 +0000634.. _os-fd-ops:
635
636File Descriptor Operations
637--------------------------
638
639These functions operate on I/O streams referenced using file descriptors.
640
641File descriptors are small integers corresponding to a file that has been opened
642by the current process. For example, standard input is usually file descriptor
6430, standard output is 1, and standard error is 2. Further files opened by a
644process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
645is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
646by file descriptors.
647
Serhiy Storchakadab83542013-10-13 20:12:43 +0300648The :meth:`~io.IOBase.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000649associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000650descriptor directly will bypass the file object methods, ignoring aspects such
651as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000653
Georg Brandl116aa622007-08-15 14:28:22 +0000654.. function:: close(fd)
655
Benjamin Petersonf650e462010-05-06 23:03:05 +0000656 Close file descriptor *fd*.
657
658 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000659
660 .. note::
661
662 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000663 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000664 object" returned by the built-in function :func:`open` or by :func:`popen` or
Serhiy Storchakadab83542013-10-13 20:12:43 +0300665 :func:`fdopen`, use its :meth:`~io.IOBase.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000666
667
Christian Heimesfdab48e2008-01-20 09:06:41 +0000668.. function:: closerange(fd_low, fd_high)
669
670 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200671 ignoring errors. Equivalent to (but much faster than)::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000672
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000673 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000674 try:
675 os.close(fd)
676 except OSError:
677 pass
678
Benjamin Petersonf650e462010-05-06 23:03:05 +0000679 Availability: Unix, Windows.
680
Christian Heimesfdab48e2008-01-20 09:06:41 +0000681
Georg Brandl81f11302007-12-21 08:45:42 +0000682.. function:: device_encoding(fd)
683
684 Return a string describing the encoding of the device associated with *fd*
685 if it is connected to a terminal; else return :const:`None`.
686
687
Georg Brandl116aa622007-08-15 14:28:22 +0000688.. function:: dup(fd)
689
Benjamin Petersonf650e462010-05-06 23:03:05 +0000690 Return a duplicate of file descriptor *fd*.
691
692 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000693
694
695.. function:: dup2(fd, fd2)
696
697 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000698
Georg Brandlc575c902008-09-13 17:46:05 +0000699 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000700
701
Christian Heimes4e30a842007-11-30 22:12:06 +0000702.. function:: fchmod(fd, mode)
703
Georg Brandlb9df00c2012-06-24 12:38:14 +0200704 Change the mode of the file given by *fd* to the numeric *mode*. See the
Georg Brandl4d399a42012-06-25 07:40:32 +0200705 docs for :func:`chmod` for possible values of *mode*. As of Python 3.3, this
Georg Brandlb9df00c2012-06-24 12:38:14 +0200706 is equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000707
708 Availability: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000709
710
711.. function:: fchown(fd, uid, gid)
712
713 Change the owner and group id of the file given by *fd* to the numeric *uid*
Georg Brandlb9df00c2012-06-24 12:38:14 +0200714 and *gid*. To leave one of the ids unchanged, set it to -1. See
Georg Brandl4d399a42012-06-25 07:40:32 +0200715 :func:`chown`. As of Python 3.3, this is equivalent to ``os.chown(fd, uid,
Georg Brandlb9df00c2012-06-24 12:38:14 +0200716 gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000717
Christian Heimes4e30a842007-11-30 22:12:06 +0000718 Availability: Unix.
719
720
Georg Brandl116aa622007-08-15 14:28:22 +0000721.. function:: fdatasync(fd)
722
723 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000724 metadata.
725
726 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000727
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000728 .. note::
729 This function is not available on MacOS.
730
Georg Brandl116aa622007-08-15 14:28:22 +0000731
732.. function:: fpathconf(fd, name)
733
734 Return system configuration information relevant to an open file. *name*
735 specifies the configuration value to retrieve; it may be a string which is the
736 name of a defined system value; these names are specified in a number of
737 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
738 additional names as well. The names known to the host operating system are
739 given in the ``pathconf_names`` dictionary. For configuration variables not
740 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000741
742 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
743 specific value for *name* is not supported by the host system, even if it is
744 included in ``pathconf_names``, an :exc:`OSError` is raised with
745 :const:`errno.EINVAL` for the error number.
746
Georg Brandl4d399a42012-06-25 07:40:32 +0200747 As of Python 3.3, this is equivalent to ``os.pathconf(fd, name)``.
Georg Brandl306336b2012-06-24 12:55:33 +0200748
Senthil Kumaran2a97cee2013-09-19 00:08:56 -0700749 Availability: Unix.
750
Georg Brandl116aa622007-08-15 14:28:22 +0000751
Victor Stinner4195b5c2012-02-08 23:03:19 +0100752.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000753
Georg Brandl4d399a42012-06-25 07:40:32 +0200754 Return status for file descriptor *fd*, like :func:`~os.stat`. As of Python
Georg Brandlb9df00c2012-06-24 12:38:14 +0200755 3.3, this is equivalent to ``os.stat(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000756
757 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000758
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200759
Georg Brandl116aa622007-08-15 14:28:22 +0000760.. function:: fstatvfs(fd)
761
Georg Brandlb9df00c2012-06-24 12:38:14 +0200762 Return information about the filesystem containing the file associated with
Georg Brandl4d399a42012-06-25 07:40:32 +0200763 file descriptor *fd*, like :func:`statvfs`. As of Python 3.3, this is
Georg Brandlb9df00c2012-06-24 12:38:14 +0200764 equivalent to ``os.statvfs(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000765
766 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000767
768
769.. function:: fsync(fd)
770
771 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000772 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000773
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000774 If you're starting with a buffered Python :term:`file object` *f*, first do
775 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
776 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000777
Georg Brandl8a5555f2012-06-24 13:29:09 +0200778 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000779
780
781.. function:: ftruncate(fd, length)
782
Georg Brandl306336b2012-06-24 12:55:33 +0200783 Truncate the file corresponding to file descriptor *fd*, so that it is at
Georg Brandl4d399a42012-06-25 07:40:32 +0200784 most *length* bytes in size. As of Python 3.3, this is equivalent to
Georg Brandl306336b2012-06-24 12:55:33 +0200785 ``os.truncate(fd, length)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000786
787 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000788
789
790.. function:: isatty(fd)
791
792 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000793 tty(-like) device, else ``False``.
794
Georg Brandl116aa622007-08-15 14:28:22 +0000795
Ross Lagerwall7807c352011-03-17 20:20:30 +0200796.. function:: lockf(fd, cmd, len)
797
798 Apply, test or remove a POSIX lock on an open file descriptor.
799 *fd* is an open file descriptor.
800 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
801 :data:`F_ULOCK` or :data:`F_TEST`.
802 *len* specifies the section of the file to lock.
803
804 Availability: Unix.
805
806 .. versionadded:: 3.3
807
808
809.. data:: F_LOCK
810 F_TLOCK
811 F_ULOCK
812 F_TEST
813
814 Flags that specify what action :func:`lockf` will take.
815
816 Availability: Unix.
817
818 .. versionadded:: 3.3
819
Georg Brandlf62445a2012-06-24 13:31:20 +0200820
Georg Brandl116aa622007-08-15 14:28:22 +0000821.. function:: lseek(fd, pos, how)
822
Christian Heimesfaf2f632008-01-06 16:59:19 +0000823 Set the current position of file descriptor *fd* to position *pos*, modified
824 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
825 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
Serhiy Storchakadab83542013-10-13 20:12:43 +0300826 current position; :const:`SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100827 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000828
829 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000830
831
Georg Brandl8569e582010-05-19 20:57:08 +0000832.. data:: SEEK_SET
833 SEEK_CUR
834 SEEK_END
835
836 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandl8a5555f2012-06-24 13:29:09 +0200837 respectively.
838
839 Availability: Unix, Windows.
Georg Brandl8569e582010-05-19 20:57:08 +0000840
Jesus Cea94363612012-06-22 18:32:07 +0200841 .. versionadded:: 3.3
842 Some operating systems could support additional values, like
843 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
844
Georg Brandl8569e582010-05-19 20:57:08 +0000845
Larry Hastings9cf065c2012-06-22 16:30:09 -0700846.. function:: open(file, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000847
Georg Brandlf4a41232008-05-26 17:55:52 +0000848 Open the file *file* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700849 its mode according to *mode*. When computing *mode*, the current umask value
850 is first masked out. Return the file descriptor for the newly opened file.
Georg Brandl116aa622007-08-15 14:28:22 +0000851
852 For a description of the flag and mode values, see the C run-time documentation;
853 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Georg Brandl8569e582010-05-19 20:57:08 +0000854 this module too (see :ref:`open-constants`). In particular, on Windows adding
855 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000856
Georg Brandl50c40002012-06-24 11:45:20 +0200857 This function can support :ref:`paths relative to directory descriptors
858 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700859
Benjamin Petersonf650e462010-05-06 23:03:05 +0000860 Availability: Unix, Windows.
861
Georg Brandl116aa622007-08-15 14:28:22 +0000862 .. note::
863
Georg Brandl502d9a52009-07-26 15:02:41 +0000864 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000865 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bcf2010-07-13 14:47:01 +0000866 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000867 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000868
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000869 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700870 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000871
872
Georg Brandl116aa622007-08-15 14:28:22 +0000873.. function:: openpty()
874
875 .. index:: module: pty
876
877 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
878 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Benjamin Petersonf650e462010-05-06 23:03:05 +0000879 approach, use the :mod:`pty` module.
880
881 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000882
883
884.. function:: pipe()
885
886 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Benjamin Petersonf650e462010-05-06 23:03:05 +0000887 and writing, respectively.
888
889 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000890
891
Charles-François Natali368f34b2011-06-06 19:49:47 +0200892.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200893
894 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +0200895 *flags* can be constructed by ORing together one or more of these values:
896 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200897 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
898 respectively.
899
900 Availability: some flavors of Unix.
901
902 .. versionadded:: 3.3
903
904
Ross Lagerwall7807c352011-03-17 20:20:30 +0200905.. function:: posix_fallocate(fd, offset, len)
906
907 Ensures that enough disk space is allocated for the file specified by *fd*
908 starting from *offset* and continuing for *len* bytes.
909
910 Availability: Unix.
911
912 .. versionadded:: 3.3
913
914
915.. function:: posix_fadvise(fd, offset, len, advice)
916
917 Announces an intention to access data in a specific pattern thus allowing
918 the kernel to make optimizations.
919 The advice applies to the region of the file specified by *fd* starting at
920 *offset* and continuing for *len* bytes.
921 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
922 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
923 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
924
925 Availability: Unix.
926
927 .. versionadded:: 3.3
928
929
930.. data:: POSIX_FADV_NORMAL
931 POSIX_FADV_SEQUENTIAL
932 POSIX_FADV_RANDOM
933 POSIX_FADV_NOREUSE
934 POSIX_FADV_WILLNEED
935 POSIX_FADV_DONTNEED
936
937 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
938 the access pattern that is likely to be used.
939
940 Availability: Unix.
941
942 .. versionadded:: 3.3
943
944
945.. function:: pread(fd, buffersize, offset)
946
947 Read from a file descriptor, *fd*, at a position of *offset*. It will read up
948 to *buffersize* number of bytes. The file offset remains unchanged.
949
950 Availability: Unix.
951
952 .. versionadded:: 3.3
953
954
955.. function:: pwrite(fd, string, offset)
956
957 Write *string* to a file descriptor, *fd*, from *offset*, leaving the file
958 offset unchanged.
959
960 Availability: Unix.
961
962 .. versionadded:: 3.3
963
964
Georg Brandl116aa622007-08-15 14:28:22 +0000965.. function:: read(fd, n)
966
Georg Brandlb90be692009-07-29 16:14:16 +0000967 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +0000968 bytes read. If the end of the file referred to by *fd* has been reached, an
Benjamin Petersonf650e462010-05-06 23:03:05 +0000969 empty bytes object is returned.
970
971 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000972
973 .. note::
974
975 This function is intended for low-level I/O and must be applied to a file
Georg Brandlb2462e22012-06-24 13:24:56 +0200976 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a
977 "file object" returned by the built-in function :func:`open` or by
978 :func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its
979 :meth:`~file.read` or :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000980
981
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000982.. function:: sendfile(out, in, offset, nbytes)
983 sendfile(out, in, offset, nbytes, headers=None, trailers=None, flags=0)
984
985 Copy *nbytes* bytes from file descriptor *in* to file descriptor *out*
986 starting at *offset*.
987 Return the number of bytes sent. When EOF is reached return 0.
988
989 The first function notation is supported by all platforms that define
990 :func:`sendfile`.
991
992 On Linux, if *offset* is given as ``None``, the bytes are read from the
993 current position of *in* and the position of *in* is updated.
994
995 The second case may be used on Mac OS X and FreeBSD where *headers* and
996 *trailers* are arbitrary sequences of buffers that are written before and
997 after the data from *in* is written. It returns the same as the first case.
998
999 On Mac OS X and FreeBSD, a value of 0 for *nbytes* specifies to send until
1000 the end of *in* is reached.
1001
Charles-Francois Natalia771a1b2013-05-01 15:12:20 +02001002 All platforms support sockets as *out* file descriptor, and some platforms
1003 allow other types (e.g. regular file, pipe) as well.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001004
1005 Availability: Unix.
1006
1007 .. versionadded:: 3.3
1008
1009
1010.. data:: SF_NODISKIO
1011 SF_MNOWAIT
1012 SF_SYNC
1013
1014 Parameters to the :func:`sendfile` function, if the implementation supports
1015 them.
1016
1017 Availability: Unix.
1018
1019 .. versionadded:: 3.3
1020
1021
Ross Lagerwall7807c352011-03-17 20:20:30 +02001022.. function:: readv(fd, buffers)
1023
Benjamin Petersone83ed432014-01-18 22:54:59 -05001024 Read from a file descriptor *fd* into a number of mutable :term:`bytes-like
1025 objects <bytes-like object>` *buffers*. :func:`~os.readv` will transfer data
1026 into each buffer until it is full and then move on to the next buffer in the
1027 sequence to hold the rest of the data. :func:`~os.readv` returns the total
1028 number of bytes read (which may be less than the total capacity of all the
1029 objects).
1030
Ross Lagerwall7807c352011-03-17 20:20:30 +02001031 Availability: Unix.
1032
1033 .. versionadded:: 3.3
1034
1035
Georg Brandl116aa622007-08-15 14:28:22 +00001036.. function:: tcgetpgrp(fd)
1037
1038 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001039 file descriptor as returned by :func:`os.open`).
1040
1041 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001042
1043
1044.. function:: tcsetpgrp(fd, pg)
1045
1046 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001047 descriptor as returned by :func:`os.open`) to *pg*.
1048
1049 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001050
1051
1052.. function:: ttyname(fd)
1053
1054 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001055 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001056 exception is raised.
1057
1058 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001059
1060
1061.. function:: write(fd, str)
1062
Georg Brandlb90be692009-07-29 16:14:16 +00001063 Write the bytestring in *str* to file descriptor *fd*. Return the number of
Benjamin Petersonf650e462010-05-06 23:03:05 +00001064 bytes actually written.
1065
1066 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001067
1068 .. note::
1069
1070 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001071 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001072 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001073 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1074 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001075
Georg Brandl8569e582010-05-19 20:57:08 +00001076
Ross Lagerwall7807c352011-03-17 20:20:30 +02001077.. function:: writev(fd, buffers)
1078
Benjamin Petersone83ed432014-01-18 22:54:59 -05001079 Write the contents of *buffers* to file descriptor *fd*. *buffers* must be a
1080 sequence of :term:`bytes-like objects <bytes-like object>`.
1081 :func:`~os.writev` writes the contents of each object to the file descriptor
1082 and returns the total number of bytes written.
1083
Ross Lagerwall7807c352011-03-17 20:20:30 +02001084 Availability: Unix.
1085
1086 .. versionadded:: 3.3
1087
1088
Georg Brandl8569e582010-05-19 20:57:08 +00001089.. _open-constants:
1090
1091``open()`` flag constants
1092~~~~~~~~~~~~~~~~~~~~~~~~~
1093
Georg Brandlaf265f42008-12-07 15:06:20 +00001094The following constants are options for the *flags* parameter to the
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001095:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandlaf265f42008-12-07 15:06:20 +00001096``|``. Some of them are not available on all platforms. For descriptions of
1097their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmanneb097fc2009-09-20 20:56:56 +00001098or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001099
1100
1101.. data:: O_RDONLY
1102 O_WRONLY
1103 O_RDWR
1104 O_APPEND
1105 O_CREAT
1106 O_EXCL
1107 O_TRUNC
1108
Georg Brandlaf265f42008-12-07 15:06:20 +00001109 These constants are available on Unix and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001110
1111
1112.. data:: O_DSYNC
1113 O_RSYNC
1114 O_SYNC
1115 O_NDELAY
1116 O_NONBLOCK
1117 O_NOCTTY
1118 O_SHLOCK
1119 O_EXLOCK
Charles-François Natali1e045b12011-05-22 20:42:32 +02001120 O_CLOEXEC
Georg Brandl116aa622007-08-15 14:28:22 +00001121
Georg Brandlaf265f42008-12-07 15:06:20 +00001122 These constants are only available on Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001123
Victor Stinnere3455c02011-10-20 00:46:21 +02001124 .. versionchanged:: 3.3
1125 Add :data:`O_CLOEXEC` constant.
Georg Brandl116aa622007-08-15 14:28:22 +00001126
1127.. data:: O_BINARY
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001128 O_NOINHERIT
Georg Brandl116aa622007-08-15 14:28:22 +00001129 O_SHORT_LIVED
1130 O_TEMPORARY
1131 O_RANDOM
1132 O_SEQUENTIAL
1133 O_TEXT
1134
Georg Brandlaf265f42008-12-07 15:06:20 +00001135 These constants are only available on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001136
1137
Alexandre Vassalottibee32532008-05-16 18:15:12 +00001138.. data:: O_ASYNC
1139 O_DIRECT
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001140 O_DIRECTORY
1141 O_NOFOLLOW
1142 O_NOATIME
1143
Georg Brandlaf265f42008-12-07 15:06:20 +00001144 These constants are GNU extensions and not present if they are not defined by
1145 the C library.
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001146
1147
Victor Stinner8b905bd2011-10-25 13:34:04 +02001148.. data:: RTLD_LAZY
1149 RTLD_NOW
1150 RTLD_GLOBAL
1151 RTLD_LOCAL
1152 RTLD_NODELETE
1153 RTLD_NOLOAD
1154 RTLD_DEEPBIND
1155
1156 See the Unix manual page :manpage:`dlopen(3)`.
1157
1158 .. versionadded:: 3.3
1159
1160
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001161.. _terminal-size:
1162
1163Querying the size of a terminal
1164~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1165
1166.. versionadded:: 3.3
1167
1168.. function:: get_terminal_size(fd=STDOUT_FILENO)
1169
1170 Return the size of the terminal window as ``(columns, lines)``,
1171 tuple of type :class:`terminal_size`.
1172
1173 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1174 output) specifies which file descriptor should be queried.
1175
1176 If the file descriptor is not connected to a terminal, an :exc:`OSError`
Andrew Svetlov5b898402012-12-18 21:26:36 +02001177 is raised.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001178
1179 :func:`shutil.get_terminal_size` is the high-level function which
1180 should normally be used, ``os.get_terminal_size`` is the low-level
1181 implementation.
1182
1183 Availability: Unix, Windows.
1184
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001185.. class:: terminal_size
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001186
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001187 A subclass of tuple, holding ``(columns, lines)`` of the terminal window size.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001188
1189 .. attribute:: columns
1190
1191 Width of the terminal window in characters.
1192
1193 .. attribute:: lines
1194
1195 Height of the terminal window in characters.
1196
1197
Georg Brandl116aa622007-08-15 14:28:22 +00001198.. _os-file-dir:
1199
1200Files and Directories
1201---------------------
1202
Georg Brandl50c40002012-06-24 11:45:20 +02001203On some Unix platforms, many of these functions support one or more of these
1204features:
1205
1206.. _path_fd:
1207
Larry Hastings77892dc2012-06-25 03:27:33 -07001208* **specifying a file descriptor:**
1209 For some functions, the *path* argument can be not only a string giving a path
Georg Brandl50c40002012-06-24 11:45:20 +02001210 name, but also a file descriptor. The function will then operate on the file
Georg Brandlaceaf902012-06-25 08:33:56 +02001211 referred to by the descriptor. (For POSIX systems, Python will call the
1212 ``f...`` version of the function.)
Georg Brandl50c40002012-06-24 11:45:20 +02001213
1214 You can check whether or not *path* can be specified as a file descriptor on
1215 your platform using :data:`os.supports_fd`. If it is unavailable, using it
1216 will raise a :exc:`NotImplementedError`.
1217
1218 If the function also supports *dir_fd* or *follow_symlinks* arguments, it is
1219 an error to specify one of those when supplying *path* as a file descriptor.
1220
1221.. _dir_fd:
1222
Larry Hastings77892dc2012-06-25 03:27:33 -07001223* **paths relative to directory descriptors:** If *dir_fd* is not ``None``, it
Georg Brandl50c40002012-06-24 11:45:20 +02001224 should be a file descriptor referring to a directory, and the path to operate
1225 on should be relative; path will then be relative to that directory. If the
Georg Brandlaceaf902012-06-25 08:33:56 +02001226 path is absolute, *dir_fd* is ignored. (For POSIX systems, Python will call
Larry Hastings77892dc2012-06-25 03:27:33 -07001227 the ``...at`` or ``f...at`` version of the function.)
Georg Brandl50c40002012-06-24 11:45:20 +02001228
1229 You can check whether or not *dir_fd* is supported on your platform using
1230 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise a
1231 :exc:`NotImplementedError`.
1232
1233.. _follow_symlinks:
1234
Larry Hastings77892dc2012-06-25 03:27:33 -07001235* **not following symlinks:** If *follow_symlinks* is
Georg Brandl50c40002012-06-24 11:45:20 +02001236 ``False``, and the last element of the path to operate on is a symbolic link,
1237 the function will operate on the symbolic link itself instead of the file the
Georg Brandlaceaf902012-06-25 08:33:56 +02001238 link points to. (For POSIX systems, Python will call the ``l...`` version of
Georg Brandl50c40002012-06-24 11:45:20 +02001239 the function.)
1240
1241 You can check whether or not *follow_symlinks* is supported on your platform
1242 using :data:`os.supports_follow_symlinks`. If it is unavailable, using it
1243 will raise a :exc:`NotImplementedError`.
1244
1245
1246
Larry Hastings9cf065c2012-06-22 16:30:09 -07001247.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001248
1249 Use the real uid/gid to test for access to *path*. Note that most operations
1250 will use the effective uid/gid, therefore this routine can be used in a
1251 suid/sgid environment to test if the invoking user has the specified access to
1252 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1253 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1254 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1255 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001256 information.
1257
Georg Brandl50c40002012-06-24 11:45:20 +02001258 This function can support specifying :ref:`paths relative to directory
1259 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001260
1261 If *effective_ids* is ``True``, :func:`access` will perform its access
1262 checks using the effective uid/gid instead of the real uid/gid.
1263 *effective_ids* may not be supported on your platform; you can check whether
1264 or not it is available using :data:`os.supports_effective_ids`. If it is
1265 unavailable, using it will raise a :exc:`NotImplementedError`.
1266
Benjamin Petersonf650e462010-05-06 23:03:05 +00001267 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001268
1269 .. note::
1270
Georg Brandl502d9a52009-07-26 15:02:41 +00001271 Using :func:`access` to check if a user is authorized to e.g. open a file
1272 before actually doing so using :func:`open` creates a security hole,
1273 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001274 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1275 techniques. For example::
1276
1277 if os.access("myfile", os.R_OK):
1278 with open("myfile") as fp:
1279 return fp.read()
1280 return "some default data"
1281
1282 is better written as::
1283
1284 try:
1285 fp = open("myfile")
Antoine Pitrou62ab10a02011-10-12 20:10:51 +02001286 except PermissionError:
1287 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001288 else:
1289 with fp:
1290 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001291
1292 .. note::
1293
1294 I/O operations may fail even when :func:`access` indicates that they would
1295 succeed, particularly for operations on network filesystems which may have
1296 permissions semantics beyond the usual POSIX permission-bit model.
1297
Larry Hastings9cf065c2012-06-22 16:30:09 -07001298 .. versionchanged:: 3.3
1299 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1300
Georg Brandl116aa622007-08-15 14:28:22 +00001301
1302.. data:: F_OK
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001303 R_OK
1304 W_OK
1305 X_OK
Georg Brandl116aa622007-08-15 14:28:22 +00001306
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001307 Values to pass as the *mode* parameter of :func:`access` to test the
1308 existence, readability, writability and executability of *path*,
1309 respectively.
Georg Brandl116aa622007-08-15 14:28:22 +00001310
1311
1312.. function:: chdir(path)
1313
1314 .. index:: single: directory; changing
1315
Benjamin Petersonf650e462010-05-06 23:03:05 +00001316 Change the current working directory to *path*.
1317
Larry Hastings77892dc2012-06-25 03:27:33 -07001318 This function can support :ref:`specifying a file descriptor <path_fd>`. The
Georg Brandl50c40002012-06-24 11:45:20 +02001319 descriptor must refer to an opened directory, not an open file.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001320
Benjamin Petersonf650e462010-05-06 23:03:05 +00001321 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001322
Larry Hastings9cf065c2012-06-22 16:30:09 -07001323 .. versionadded:: 3.3
1324 Added support for specifying *path* as a file descriptor
Georg Brandl50c40002012-06-24 11:45:20 +02001325 on some platforms.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001326
Georg Brandl116aa622007-08-15 14:28:22 +00001327
Larry Hastings9cf065c2012-06-22 16:30:09 -07001328.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001329
1330 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1331 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1332
R David Murray30178062011-03-10 17:18:33 -05001333 * :data:`stat.UF_NODUMP`
1334 * :data:`stat.UF_IMMUTABLE`
1335 * :data:`stat.UF_APPEND`
1336 * :data:`stat.UF_OPAQUE`
1337 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001338 * :data:`stat.UF_COMPRESSED`
1339 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001340 * :data:`stat.SF_ARCHIVED`
1341 * :data:`stat.SF_IMMUTABLE`
1342 * :data:`stat.SF_APPEND`
1343 * :data:`stat.SF_NOUNLINK`
1344 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001345
Georg Brandl50c40002012-06-24 11:45:20 +02001346 This function can support :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001347
Georg Brandlc575c902008-09-13 17:46:05 +00001348 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001349
Larry Hastings9cf065c2012-06-22 16:30:09 -07001350 .. versionadded:: 3.3
1351 The *follow_symlinks* argument.
1352
Georg Brandl116aa622007-08-15 14:28:22 +00001353
Larry Hastings9cf065c2012-06-22 16:30:09 -07001354.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001355
1356 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001357 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001358 combinations of them:
1359
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001360 * :data:`stat.S_ISUID`
1361 * :data:`stat.S_ISGID`
1362 * :data:`stat.S_ENFMT`
1363 * :data:`stat.S_ISVTX`
1364 * :data:`stat.S_IREAD`
1365 * :data:`stat.S_IWRITE`
1366 * :data:`stat.S_IEXEC`
1367 * :data:`stat.S_IRWXU`
1368 * :data:`stat.S_IRUSR`
1369 * :data:`stat.S_IWUSR`
1370 * :data:`stat.S_IXUSR`
1371 * :data:`stat.S_IRWXG`
1372 * :data:`stat.S_IRGRP`
1373 * :data:`stat.S_IWGRP`
1374 * :data:`stat.S_IXGRP`
1375 * :data:`stat.S_IRWXO`
1376 * :data:`stat.S_IROTH`
1377 * :data:`stat.S_IWOTH`
1378 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001379
Georg Brandl50c40002012-06-24 11:45:20 +02001380 This function can support :ref:`specifying a file descriptor <path_fd>`,
1381 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1382 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001383
Georg Brandlc575c902008-09-13 17:46:05 +00001384 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001385
1386 .. note::
1387
Georg Brandl50c40002012-06-24 11:45:20 +02001388 Although Windows supports :func:`chmod`, you can only set the file's
1389 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1390 constants or a corresponding integer value). All other bits are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001391
Larry Hastings9cf065c2012-06-22 16:30:09 -07001392 .. versionadded:: 3.3
1393 Added support for specifying *path* as an open file descriptor,
1394 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001395
Larry Hastings9cf065c2012-06-22 16:30:09 -07001396
1397.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001398
Georg Brandl50c40002012-06-24 11:45:20 +02001399 Change the owner and group id of *path* to the numeric *uid* and *gid*. To
1400 leave one of the ids unchanged, set it to -1.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001401
Georg Brandl50c40002012-06-24 11:45:20 +02001402 This function can support :ref:`specifying a file descriptor <path_fd>`,
1403 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1404 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001405
Sandro Tosid902a142011-08-22 23:28:27 +02001406 See :func:`shutil.chown` for a higher-level function that accepts names in
1407 addition to numeric ids.
1408
Benjamin Petersonf650e462010-05-06 23:03:05 +00001409 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001410
Larry Hastings9cf065c2012-06-22 16:30:09 -07001411 .. versionadded:: 3.3
1412 Added support for specifying an open file descriptor for *path*,
1413 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001414
Benjamin Peterson799bd802011-08-31 22:15:17 -04001415
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001416.. function:: chroot(path)
1417
Georg Brandl8a5555f2012-06-24 13:29:09 +02001418 Change the root directory of the current process to *path*.
1419
1420 Availability: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001421
1422
1423.. function:: fchdir(fd)
1424
1425 Change the current working directory to the directory represented by the file
1426 descriptor *fd*. The descriptor must refer to an opened directory, not an
Georg Brandl4d399a42012-06-25 07:40:32 +02001427 open file. As of Python 3.3, this is equivalent to ``os.chdir(fd)``.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001428
1429 Availability: Unix.
1430
1431
1432.. function:: getcwd()
1433
1434 Return a string representing the current working directory.
1435
1436 Availability: Unix, Windows.
1437
1438
1439.. function:: getcwdb()
1440
1441 Return a bytestring representing the current working directory.
1442
1443 Availability: Unix, Windows.
1444
1445
Georg Brandl116aa622007-08-15 14:28:22 +00001446.. function:: lchflags(path, flags)
1447
Georg Brandl50c40002012-06-24 11:45:20 +02001448 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do
Georg Brandl4d399a42012-06-25 07:40:32 +02001449 not follow symbolic links. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001450 ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001451
1452 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001453
Georg Brandl116aa622007-08-15 14:28:22 +00001454
Christian Heimes93852662007-12-01 12:22:32 +00001455.. function:: lchmod(path, mode)
1456
1457 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
Georg Brandl50c40002012-06-24 11:45:20 +02001458 affects the symlink rather than the target. See the docs for :func:`chmod`
Georg Brandl4d399a42012-06-25 07:40:32 +02001459 for possible values of *mode*. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001460 ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001461
1462 Availability: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001463
Christian Heimes93852662007-12-01 12:22:32 +00001464
Georg Brandl116aa622007-08-15 14:28:22 +00001465.. function:: lchown(path, uid, gid)
1466
Georg Brandl50c40002012-06-24 11:45:20 +02001467 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandl4d399a42012-06-25 07:40:32 +02001468 function will not follow symbolic links. As of Python 3.3, this is equivalent
Georg Brandlb9df00c2012-06-24 12:38:14 +02001469 to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001470
1471 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001472
Georg Brandl116aa622007-08-15 14:28:22 +00001473
Larry Hastings9cf065c2012-06-22 16:30:09 -07001474.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001475
Larry Hastings9cf065c2012-06-22 16:30:09 -07001476 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001477
Georg Brandlaceaf902012-06-25 08:33:56 +02001478 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1479 supply :ref:`paths relative to directory descriptors <dir_fd>`, and :ref:`not
1480 following symlinks <follow_symlinks>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001481
Brian Curtin1b9df392010-11-24 20:24:31 +00001482 Availability: Unix, Windows.
1483
1484 .. versionchanged:: 3.2
1485 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001486
Larry Hastings9cf065c2012-06-22 16:30:09 -07001487 .. versionadded:: 3.3
1488 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1489
Georg Brandl116aa622007-08-15 14:28:22 +00001490
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001491.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001492
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001493 Return a list containing the names of the entries in the directory given by
Larry Hastingsfdaea062012-06-25 04:42:23 -07001494 *path*. The list is in arbitrary order, and does not include the special
1495 entries ``'.'`` and ``'..'`` even if they are present in the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001496
Larry Hastingsfdaea062012-06-25 04:42:23 -07001497 *path* may be either of type ``str`` or of type ``bytes``. If *path*
1498 is of type ``bytes``, the filenames returned will also be of type ``bytes``;
1499 in all other circumstances, they will be of type ``str``.
Georg Brandl116aa622007-08-15 14:28:22 +00001500
Larry Hastings77892dc2012-06-25 03:27:33 -07001501 This function can also support :ref:`specifying a file descriptor
1502 <path_fd>`; the file descriptor must refer to a directory.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001503
Larry Hastingsfdaea062012-06-25 04:42:23 -07001504 .. note::
1505 To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`.
1506
Benjamin Petersonf650e462010-05-06 23:03:05 +00001507 Availability: Unix, Windows.
1508
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001509 .. versionchanged:: 3.2
1510 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001511
Larry Hastings9cf065c2012-06-22 16:30:09 -07001512 .. versionadded:: 3.3
1513 Added support for specifying an open file descriptor for *path*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001514
Georg Brandl50c40002012-06-24 11:45:20 +02001515
Larry Hastings9cf065c2012-06-22 16:30:09 -07001516.. function:: lstat(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001517
R. David Murray7b1aae92011-01-24 19:34:58 +00001518 Perform the equivalent of an :c:func:`lstat` system call on the given path.
1519 Similar to :func:`~os.stat`, but does not follow symbolic links. On
1520 platforms that do not support symbolic links, this is an alias for
Georg Brandl4d399a42012-06-25 07:40:32 +02001521 :func:`~os.stat`. As of Python 3.3, this is equivalent to ``os.stat(path,
Georg Brandlb9df00c2012-06-24 12:38:14 +02001522 dir_fd=dir_fd, follow_symlinks=False)``.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001523
Georg Brandl50c40002012-06-24 11:45:20 +02001524 This function can also support :ref:`paths relative to directory descriptors
1525 <dir_fd>`.
Brian Curtinc7395692010-07-09 15:15:09 +00001526
Georg Brandlb3823372010-07-10 08:58:37 +00001527 .. versionchanged:: 3.2
1528 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001529
Larry Hastings9cf065c2012-06-22 16:30:09 -07001530 .. versionchanged:: 3.3
1531 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001532
1533
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001534.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
1535
1536 Create a directory named *path* with numeric mode *mode*.
1537
1538 On some systems, *mode* is ignored. Where it is used, the current umask
1539 value is first masked out. If the directory already exists, :exc:`OSError`
1540 is raised.
1541
1542 This function can also support :ref:`paths relative to directory descriptors
1543 <dir_fd>`.
1544
1545 It is also possible to create temporary directories; see the
1546 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1547
1548 Availability: Unix, Windows.
1549
1550 .. versionadded:: 3.3
1551 The *dir_fd* argument.
1552
1553
1554.. function:: makedirs(path, mode=0o777, exist_ok=False)
1555
1556 .. index::
1557 single: directory; creating
1558 single: UNC paths; and os.makedirs()
1559
1560 Recursive directory creation function. Like :func:`mkdir`, but makes all
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001561 intermediate-level directories needed to contain the leaf directory.
1562
1563 The default *mode* is ``0o777`` (octal). On some systems, *mode* is
1564 ignored. Where it is used, the current umask value is first masked out.
1565
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001566 If *exist_ok* is ``False`` (the default), an :exc:`OSError` is raised if the
1567 target directory already exists.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001568
1569 .. note::
1570
1571 :func:`makedirs` will become confused if the path elements to create
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001572 include :data:`pardir` (eg. ".." on UNIX systems).
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001573
1574 This function handles UNC paths correctly.
1575
1576 .. versionadded:: 3.2
1577 The *exist_ok* parameter.
1578
Benjamin Peterson4717e212014-04-01 19:17:57 -04001579 .. versionchanged:: 3.3.6
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001580
Benjamin Peterson4717e212014-04-01 19:17:57 -04001581 Before Python 3.3.6, if *exist_ok* was ``True`` and the directory existed,
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001582 :func:`makedirs` would still raise an error if *mode* did not match the
1583 mode of the existing directory. Since this behavior was impossible to
Benjamin Peterson4717e212014-04-01 19:17:57 -04001584 implement safely, it was removed in Python 3.3.6. See :issue:`21082`.
1585
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001586
Larry Hastings9cf065c2012-06-22 16:30:09 -07001587.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001588
Larry Hastings9cf065c2012-06-22 16:30:09 -07001589 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1590 The current umask value is first masked out from the mode.
1591
Georg Brandl50c40002012-06-24 11:45:20 +02001592 This function can also support :ref:`paths relative to directory descriptors
1593 <dir_fd>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001594
1595 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1596 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1597 rendezvous between "client" and "server" type processes: the server opens the
1598 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1599 doesn't open the FIFO --- it just creates the rendezvous point.
1600
Benjamin Petersonf650e462010-05-06 23:03:05 +00001601 Availability: Unix.
1602
Larry Hastings9cf065c2012-06-22 16:30:09 -07001603 .. versionadded:: 3.3
1604 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001605
Larry Hastings9cf065c2012-06-22 16:30:09 -07001606
1607.. function:: mknod(filename, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001608
1609 Create a filesystem node (file, device special file or named pipe) named
Georg Brandl18244152009-09-02 20:34:52 +00001610 *filename*. *mode* specifies both the permissions to use and the type of node
1611 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1612 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1613 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
1614 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00001615 :func:`os.makedev`), otherwise it is ignored.
1616
Georg Brandl50c40002012-06-24 11:45:20 +02001617 This function can also support :ref:`paths relative to directory descriptors
1618 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001619
1620 .. versionadded:: 3.3
1621 The *dir_fd* argument.
1622
Georg Brandl116aa622007-08-15 14:28:22 +00001623
1624.. function:: major(device)
1625
Christian Heimesfaf2f632008-01-06 16:59:19 +00001626 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001627 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001628
Georg Brandl116aa622007-08-15 14:28:22 +00001629
1630.. function:: minor(device)
1631
Christian Heimesfaf2f632008-01-06 16:59:19 +00001632 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001633 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001634
Georg Brandl116aa622007-08-15 14:28:22 +00001635
1636.. function:: makedev(major, minor)
1637
Christian Heimesfaf2f632008-01-06 16:59:19 +00001638 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00001639
Georg Brandl116aa622007-08-15 14:28:22 +00001640
Georg Brandl116aa622007-08-15 14:28:22 +00001641.. function:: pathconf(path, name)
1642
1643 Return system configuration information relevant to a named file. *name*
1644 specifies the configuration value to retrieve; it may be a string which is the
1645 name of a defined system value; these names are specified in a number of
1646 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1647 additional names as well. The names known to the host operating system are
1648 given in the ``pathconf_names`` dictionary. For configuration variables not
1649 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00001650
1651 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1652 specific value for *name* is not supported by the host system, even if it is
1653 included in ``pathconf_names``, an :exc:`OSError` is raised with
1654 :const:`errno.EINVAL` for the error number.
1655
Larry Hastings77892dc2012-06-25 03:27:33 -07001656 This function can support :ref:`specifying a file descriptor
Georg Brandl306336b2012-06-24 12:55:33 +02001657 <path_fd>`.
1658
Benjamin Petersonf650e462010-05-06 23:03:05 +00001659 Availability: Unix.
1660
Georg Brandl116aa622007-08-15 14:28:22 +00001661
1662.. data:: pathconf_names
1663
1664 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1665 the integer values defined for those names by the host operating system. This
Georg Brandl8a5555f2012-06-24 13:29:09 +02001666 can be used to determine the set of names known to the system.
1667
1668 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001669
1670
Larry Hastings9cf065c2012-06-22 16:30:09 -07001671.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001672
1673 Return a string representing the path to which the symbolic link points. The
Georg Brandl50c40002012-06-24 11:45:20 +02001674 result may be either an absolute or relative pathname; if it is relative, it
1675 may be converted to an absolute pathname using
1676 ``os.path.join(os.path.dirname(path), result)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001677
Georg Brandl76e55382008-10-08 16:34:57 +00001678 If the *path* is a string object, the result will also be a string object,
1679 and the call may raise an UnicodeDecodeError. If the *path* is a bytes
1680 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00001681
Georg Brandl50c40002012-06-24 11:45:20 +02001682 This function can also support :ref:`paths relative to directory descriptors
1683 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001684
Brian Curtinc7395692010-07-09 15:15:09 +00001685 Availability: Unix, Windows
1686
Georg Brandlb3823372010-07-10 08:58:37 +00001687 .. versionchanged:: 3.2
1688 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001689
Larry Hastings9cf065c2012-06-22 16:30:09 -07001690 .. versionadded:: 3.3
1691 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001692
Georg Brandl116aa622007-08-15 14:28:22 +00001693
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001694.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07001695
Georg Brandl50c40002012-06-24 11:45:20 +02001696 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
1697 raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001698
Georg Brandl50c40002012-06-24 11:45:20 +02001699 This function can support :ref:`paths relative to directory descriptors
1700 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001701
1702 On Windows, attempting to remove a file that is in use causes an exception to
1703 be raised; on Unix, the directory entry is removed but the storage allocated
1704 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001705
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001706 This function is identical to :func:`unlink`.
1707
Benjamin Petersonf650e462010-05-06 23:03:05 +00001708 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001709
Larry Hastings9cf065c2012-06-22 16:30:09 -07001710 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001711 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001712
Georg Brandl116aa622007-08-15 14:28:22 +00001713
1714.. function:: removedirs(path)
1715
1716 .. index:: single: directory; deleting
1717
Christian Heimesfaf2f632008-01-06 16:59:19 +00001718 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00001719 leaf directory is successfully removed, :func:`removedirs` tries to
1720 successively remove every parent directory mentioned in *path* until an error
1721 is raised (which is ignored, because it generally means that a parent directory
1722 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1723 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1724 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1725 successfully removed.
1726
Georg Brandl116aa622007-08-15 14:28:22 +00001727
Larry Hastings9cf065c2012-06-22 16:30:09 -07001728.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001729
1730 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1731 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001732 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001733 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1734 the renaming will be an atomic operation (this is a POSIX requirement). On
1735 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001736 file.
1737
Georg Brandlaceaf902012-06-25 08:33:56 +02001738 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1739 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001740
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001741 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001742
1743 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001744
Larry Hastings9cf065c2012-06-22 16:30:09 -07001745 .. versionadded:: 3.3
1746 The *src_dir_fd* and *dst_dir_fd* arguments.
1747
Georg Brandl116aa622007-08-15 14:28:22 +00001748
1749.. function:: renames(old, new)
1750
1751 Recursive directory or file renaming function. Works like :func:`rename`, except
1752 creation of any intermediate directories needed to make the new pathname good is
1753 attempted first. After the rename, directories corresponding to rightmost path
1754 segments of the old name will be pruned away using :func:`removedirs`.
1755
Georg Brandl116aa622007-08-15 14:28:22 +00001756 .. note::
1757
1758 This function can fail with the new directory structure made if you lack
1759 permissions needed to remove the leaf directory or file.
1760
1761
Larry Hastings9cf065c2012-06-22 16:30:09 -07001762.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001763
1764 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1765 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
1766 be replaced silently if the user has permission. The operation may fail
1767 if *src* and *dst* are on different filesystems. If successful,
1768 the renaming will be an atomic operation (this is a POSIX requirement).
1769
Georg Brandlaceaf902012-06-25 08:33:56 +02001770 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1771 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001772
Georg Brandl8a5555f2012-06-24 13:29:09 +02001773 Availability: Unix, Windows.
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001774
1775 .. versionadded:: 3.3
1776
1777
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001778.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001779
Georg Brandla6053b42009-09-01 08:11:14 +00001780 Remove (delete) the directory *path*. Only works when the directory is
1781 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
Benjamin Petersonf650e462010-05-06 23:03:05 +00001782 directory trees, :func:`shutil.rmtree` can be used.
1783
Georg Brandl50c40002012-06-24 11:45:20 +02001784 This function can support :ref:`paths relative to directory descriptors
1785 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001786
Benjamin Petersonf650e462010-05-06 23:03:05 +00001787 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001788
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001789 .. versionadded:: 3.3
1790 The *dir_fd* parameter.
1791
Georg Brandl116aa622007-08-15 14:28:22 +00001792
Larry Hastings9cf065c2012-06-22 16:30:09 -07001793.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001794
R. David Murray7b1aae92011-01-24 19:34:58 +00001795 Perform the equivalent of a :c:func:`stat` system call on the given path.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001796 *path* may be specified as either a string or as an open file descriptor.
1797 (This function normally follows symlinks; to stat a symlink add the argument
1798 ``follow_symlinks=False``, or use :func:`lstat`.)
Georg Brandl116aa622007-08-15 14:28:22 +00001799
Larry Hastings6fe20b32012-04-19 15:07:49 -07001800 The return value is an object whose attributes correspond roughly
1801 to the members of the :c:type:`stat` structure, namely:
R. David Murray7b1aae92011-01-24 19:34:58 +00001802
1803 * :attr:`st_mode` - protection bits,
1804 * :attr:`st_ino` - inode number,
1805 * :attr:`st_dev` - device,
1806 * :attr:`st_nlink` - number of hard links,
1807 * :attr:`st_uid` - user id of owner,
1808 * :attr:`st_gid` - group id of owner,
1809 * :attr:`st_size` - size of file, in bytes,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001810 * :attr:`st_atime` - time of most recent access expressed in seconds,
1811 * :attr:`st_mtime` - time of most recent content modification
1812 expressed in seconds,
1813 * :attr:`st_ctime` - platform dependent; time of most recent metadata
1814 change on Unix, or the time of creation on Windows, expressed in seconds
1815 * :attr:`st_atime_ns` - time of most recent access
1816 expressed in nanoseconds as an integer,
1817 * :attr:`st_mtime_ns` - time of most recent content modification
1818 expressed in nanoseconds as an integer,
1819 * :attr:`st_ctime_ns` - platform dependent; time of most recent metadata
1820 change on Unix, or the time of creation on Windows,
1821 expressed in nanoseconds as an integer
Georg Brandl116aa622007-08-15 14:28:22 +00001822
1823 On some Unix systems (such as Linux), the following attributes may also be
R. David Murray7b1aae92011-01-24 19:34:58 +00001824 available:
1825
Georg Brandl0bbbeb52013-10-06 18:11:32 +02001826 * :attr:`st_blocks` - number of 512-byte blocks allocated for file
1827 * :attr:`st_blksize` - filesystem blocksize for efficient file system I/O
R. David Murray7b1aae92011-01-24 19:34:58 +00001828 * :attr:`st_rdev` - type of device if an inode device
1829 * :attr:`st_flags` - user defined flags for file
Georg Brandl116aa622007-08-15 14:28:22 +00001830
1831 On other Unix systems (such as FreeBSD), the following attributes may be
R. David Murray7b1aae92011-01-24 19:34:58 +00001832 available (but may be only filled out if root tries to use them):
1833
1834 * :attr:`st_gen` - file generation number
1835 * :attr:`st_birthtime` - time of file creation
Georg Brandl116aa622007-08-15 14:28:22 +00001836
1837 On Mac OS systems, the following attributes may also be available:
Georg Brandl116aa622007-08-15 14:28:22 +00001838
R. David Murray7b1aae92011-01-24 19:34:58 +00001839 * :attr:`st_rsize`
1840 * :attr:`st_creator`
1841 * :attr:`st_type`
Georg Brandl116aa622007-08-15 14:28:22 +00001842
1843 .. note::
1844
Senthil Kumaran3aac1792011-07-04 11:43:51 -07001845 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07001846 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
1847 system and the file system. For example, on Windows systems using the FAT
1848 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
1849 :attr:`st_atime` has only 1-day resolution. See your operating system
1850 documentation for details.
Larry Hastings6fe20b32012-04-19 15:07:49 -07001851 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
1852 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
1853 systems do not provide nanosecond precision. On systems that do
1854 provide nanosecond precision, the floating-point object used to
1855 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
1856 cannot preserve all of it, and as such will be slightly inexact.
1857 If you need the exact timestamps you should always use
1858 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00001859
Georg Brandl50c40002012-06-24 11:45:20 +02001860 For backward compatibility, the return value of :func:`~os.stat` is also
1861 accessible as a tuple of at least 10 integers giving the most important (and
1862 portable) members of the :c:type:`stat` structure, in the order
1863 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
1864 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
1865 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
1866 some implementations.
R. David Murray7b1aae92011-01-24 19:34:58 +00001867
R David Murrayce478b92012-09-10 21:08:50 -04001868 This function can support :ref:`specifying a file descriptor <path_fd>` and
1869 :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001870
R. David Murray7b1aae92011-01-24 19:34:58 +00001871 .. index:: module: stat
1872
1873 The standard module :mod:`stat` defines functions and constants that are useful
1874 for extracting information from a :c:type:`stat` structure. (On Windows, some
1875 items are filled with dummy values.)
1876
1877 Example::
1878
1879 >>> import os
1880 >>> statinfo = os.stat('somefile.txt')
1881 >>> statinfo
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00001882 posix.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
1883 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
1884 st_mtime=1297230027, st_ctime=1297230027)
R. David Murray7b1aae92011-01-24 19:34:58 +00001885 >>> statinfo.st_size
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00001886 264
R. David Murray7b1aae92011-01-24 19:34:58 +00001887
Georg Brandlc575c902008-09-13 17:46:05 +00001888 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001889
Larry Hastings6fe20b32012-04-19 15:07:49 -07001890 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07001891 Added the *dir_fd* and *follow_symlinks* arguments,
1892 specifying a file descriptor instead of a path,
1893 and the :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001894 and :attr:`st_ctime_ns` members.
1895
Georg Brandl116aa622007-08-15 14:28:22 +00001896
1897.. function:: stat_float_times([newvalue])
1898
1899 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00001900 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00001901 ``False``, future calls return ints. If *newvalue* is omitted, return the
1902 current setting.
1903
1904 For compatibility with older Python versions, accessing :class:`stat_result` as
1905 a tuple always returns integers.
1906
Georg Brandl55ac8f02007-09-01 13:51:09 +00001907 Python now returns float values by default. Applications which do not work
1908 correctly with floating point time stamps can use this function to restore the
1909 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00001910
1911 The resolution of the timestamps (that is the smallest possible fraction)
1912 depends on the system. Some systems only support second resolution; on these
1913 systems, the fraction will always be zero.
1914
1915 It is recommended that this setting is only changed at program startup time in
1916 the *__main__* module; libraries should never change this setting. If an
1917 application uses a library that works incorrectly if floating point time stamps
1918 are processed, this application should turn the feature off until the library
1919 has been corrected.
1920
Victor Stinner034d0aa2012-06-05 01:22:15 +02001921 .. deprecated:: 3.3
1922
Georg Brandl116aa622007-08-15 14:28:22 +00001923
1924.. function:: statvfs(path)
1925
Georg Brandl60203b42010-10-06 10:11:56 +00001926 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00001927 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00001928 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00001929 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
1930 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00001931 :attr:`f_flag`, :attr:`f_namemax`.
1932
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00001933 Two module-level constants are defined for the :attr:`f_flag` attribute's
1934 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
1935 read-only, and if :const:`ST_NOSUID` is set, the semantics of
1936 setuid/setgid bits are disabled or not supported.
1937
Georg Brandl50c40002012-06-24 11:45:20 +02001938 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001939
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00001940 .. versionchanged:: 3.2
1941 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
1942
Benjamin Petersonf650e462010-05-06 23:03:05 +00001943 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001944
Larry Hastings9cf065c2012-06-22 16:30:09 -07001945 .. versionadded:: 3.3
1946 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00001947
Larry Hastings9cf065c2012-06-22 16:30:09 -07001948
1949.. data:: supports_dir_fd
1950
Serhiy Storchakadab83542013-10-13 20:12:43 +03001951 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02001952 :mod:`os` module permit use of their *dir_fd* parameter. Different platforms
Larry Hastings9cf065c2012-06-22 16:30:09 -07001953 provide different functionality, and an option that might work on one might
1954 be unsupported on another. For consistency's sakes, functions that support
Andrew Svetlov5b898402012-12-18 21:26:36 +02001955 *dir_fd* always allow specifying the parameter, but will raise an exception
Larry Hastings9cf065c2012-06-22 16:30:09 -07001956 if the functionality is not actually available.
1957
1958 To check whether a particular function permits use of its *dir_fd*
1959 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
1960 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
1961 is locally available::
1962
1963 os.stat in os.supports_dir_fd
1964
Georg Brandlf62445a2012-06-24 13:31:20 +02001965 Currently *dir_fd* parameters only work on Unix platforms; none of them work
1966 on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001967
1968 .. versionadded:: 3.3
1969
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001970
Larry Hastings9cf065c2012-06-22 16:30:09 -07001971.. data:: supports_effective_ids
1972
Serhiy Storchakadab83542013-10-13 20:12:43 +03001973 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02001974 :mod:`os` module permit use of the *effective_ids* parameter for
1975 :func:`os.access`. If the local platform supports it, the collection will
1976 contain :func:`os.access`, otherwise it will be empty.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001977
Georg Brandl50c40002012-06-24 11:45:20 +02001978 To check whether you can use the *effective_ids* parameter for
Larry Hastings9cf065c2012-06-22 16:30:09 -07001979 :func:`os.access`, use the ``in`` operator on ``supports_dir_fd``, like so::
1980
1981 os.access in os.supports_effective_ids
1982
Georg Brandl50c40002012-06-24 11:45:20 +02001983 Currently *effective_ids* only works on Unix platforms; it does not work on
1984 Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001985
1986 .. versionadded:: 3.3
1987
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001988
Larry Hastings9cf065c2012-06-22 16:30:09 -07001989.. data:: supports_fd
1990
Serhiy Storchakadab83542013-10-13 20:12:43 +03001991 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02001992 :mod:`os` module permit specifying their *path* parameter as an open file
Larry Hastings9cf065c2012-06-22 16:30:09 -07001993 descriptor. Different platforms provide different functionality, and an
1994 option that might work on one might be unsupported on another. For
1995 consistency's sakes, functions that support *fd* always allow specifying
Andrew Svetlov5b898402012-12-18 21:26:36 +02001996 the parameter, but will raise an exception if the functionality is not
Larry Hastings9cf065c2012-06-22 16:30:09 -07001997 actually available.
1998
1999 To check whether a particular function permits specifying an open file
2000 descriptor for its *path* parameter, use the ``in`` operator on
2001 ``supports_fd``. As an example, this expression determines whether
2002 :func:`os.chdir` accepts open file descriptors when called on your local
2003 platform::
2004
2005 os.chdir in os.supports_fd
2006
2007 .. versionadded:: 3.3
2008
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002009
Larry Hastings9cf065c2012-06-22 16:30:09 -07002010.. data:: supports_follow_symlinks
2011
Serhiy Storchakadab83542013-10-13 20:12:43 +03002012 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002013 :mod:`os` module permit use of their *follow_symlinks* parameter. Different
Larry Hastings9cf065c2012-06-22 16:30:09 -07002014 platforms provide different functionality, and an option that might work on
2015 one might be unsupported on another. For consistency's sakes, functions that
2016 support *follow_symlinks* always allow specifying the parameter, but will
Andrew Svetlov5b898402012-12-18 21:26:36 +02002017 raise an exception if the functionality is not actually available.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002018
2019 To check whether a particular function permits use of its *follow_symlinks*
2020 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2021 example, this expression determines whether the *follow_symlinks* parameter
2022 of :func:`os.stat` is locally available::
2023
2024 os.stat in os.supports_follow_symlinks
2025
2026 .. versionadded:: 3.3
2027
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002028
Larry Hastings9cf065c2012-06-22 16:30:09 -07002029.. function:: symlink(source, link_name, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002030
Brian Curtinc7395692010-07-09 15:15:09 +00002031 Create a symbolic link pointing to *source* named *link_name*.
2032
Larry Hastings9cf065c2012-06-22 16:30:09 -07002033 On Windows, a symlink represents either a file or a directory, and does not
Jason R. Coombs3a092862013-05-27 23:21:28 -04002034 morph to the target dynamically. If the target is present, the type of the
2035 symlink will be created to match. Otherwise, the symlink will be created
2036 as a directory if *target_is_directory* is ``True`` or a file symlink (the
2037 default) otherwise. On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002038
Georg Brandl64a41ed2010-10-06 08:52:48 +00002039 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2040 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002041
Georg Brandl50c40002012-06-24 11:45:20 +02002042 This function can support :ref:`paths relative to directory descriptors
2043 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002044
Brian Curtin52173d42010-12-02 18:29:18 +00002045 .. note::
2046
Larry Hastings9cf065c2012-06-22 16:30:09 -07002047 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2048 successfully create symlinks. This privilege is not typically granted to
2049 regular users but is available to accounts which can escalate privileges
2050 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002051 application as an administrator are ways to successfully create symlinks.
2052
Jason R. Coombs3a092862013-05-27 23:21:28 -04002053
Brian Curtin96245592010-12-28 17:08:22 +00002054 :exc:`OSError` is raised when the function is called by an unprivileged
2055 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002056
Georg Brandl64a41ed2010-10-06 08:52:48 +00002057 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002058
Georg Brandlb3823372010-07-10 08:58:37 +00002059 .. versionchanged:: 3.2
2060 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002061
Larry Hastings9cf065c2012-06-22 16:30:09 -07002062 .. versionadded:: 3.3
2063 Added the *dir_fd* argument, and now allow *target_is_directory*
2064 on non-Windows platforms.
2065
Georg Brandl116aa622007-08-15 14:28:22 +00002066
Ross Lagerwall7807c352011-03-17 20:20:30 +02002067.. function:: sync()
2068
2069 Force write of everything to disk.
2070
2071 Availability: Unix.
2072
2073 .. versionadded:: 3.3
2074
2075
2076.. function:: truncate(path, length)
2077
2078 Truncate the file corresponding to *path*, so that it is at most
2079 *length* bytes in size.
2080
Georg Brandl306336b2012-06-24 12:55:33 +02002081 This function can support :ref:`specifying a file descriptor <path_fd>`.
2082
Ross Lagerwall7807c352011-03-17 20:20:30 +02002083 Availability: Unix.
2084
2085 .. versionadded:: 3.3
2086
2087
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002088.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002089
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002090 Remove (delete) the file *path*. This function is identical to
Georg Brandl50c40002012-06-24 11:45:20 +02002091 :func:`remove`; the ``unlink`` name is its traditional Unix
Larry Hastings9cf065c2012-06-22 16:30:09 -07002092 name. Please see the documentation for :func:`remove` for
2093 further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002094
2095 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002096
Larry Hastings9cf065c2012-06-22 16:30:09 -07002097 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002098 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002099
Larry Hastings9cf065c2012-06-22 16:30:09 -07002100
2101.. function:: utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002102
Larry Hastings76ad59b2012-05-03 00:30:07 -07002103 Set the access and modified times of the file specified by *path*.
2104
2105 :func:`utime` takes two optional parameters, *times* and *ns*.
2106 These specify the times set on *path* and are used as follows:
2107
Larry Hastings9cf065c2012-06-22 16:30:09 -07002108 - If *ns* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002109 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2110 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002111 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002112 it must be a 2-tuple of the form ``(atime, mtime)``
2113 where each member is an int or float expressing seconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002114 - If *times* and *ns* are both ``None``,
2115 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002116 where both times are the current time.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002117
Larry Hastings9cf065c2012-06-22 16:30:09 -07002118 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002119
2120 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002121 depends on whether the operating system implements directories as files
2122 (for example, Windows does not). Note that the exact times you set here may
2123 not be returned by a subsequent :func:`~os.stat` call, depending on the
2124 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002125 times; see :func:`~os.stat`. The best way to preserve exact times is to
2126 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2127 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002128
Georg Brandl50c40002012-06-24 11:45:20 +02002129 This function can support :ref:`specifying a file descriptor <path_fd>`,
2130 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
2131 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002132
Georg Brandlc575c902008-09-13 17:46:05 +00002133 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002134
Larry Hastings76ad59b2012-05-03 00:30:07 -07002135 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002136 Added support for specifying an open file descriptor for *path*,
2137 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002138
Georg Brandl116aa622007-08-15 14:28:22 +00002139
Georg Brandl18244152009-09-02 20:34:52 +00002140.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002141
2142 .. index::
2143 single: directory; walking
2144 single: directory; traversal
2145
Christian Heimesfaf2f632008-01-06 16:59:19 +00002146 Generate the file names in a directory tree by walking the tree
2147 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002148 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2149 filenames)``.
2150
2151 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2152 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2153 *filenames* is a list of the names of the non-directory files in *dirpath*.
2154 Note that the names in the lists contain no path components. To get a full path
2155 (which begins with *top*) to a file or directory in *dirpath*, do
2156 ``os.path.join(dirpath, name)``.
2157
Christian Heimesfaf2f632008-01-06 16:59:19 +00002158 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002159 directory is generated before the triples for any of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002160 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002161 directory is generated after the triples for all of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002162 (directories are generated bottom-up).
Georg Brandl116aa622007-08-15 14:28:22 +00002163
Christian Heimesfaf2f632008-01-06 16:59:19 +00002164 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002165 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2166 recurse into the subdirectories whose names remain in *dirnames*; this can be
2167 used to prune the search, impose a specific order of visiting, or even to inform
2168 :func:`walk` about directories the caller creates or renames before it resumes
Christian Heimesfaf2f632008-01-06 16:59:19 +00002169 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl116aa622007-08-15 14:28:22 +00002170 ineffective, because in bottom-up mode the directories in *dirnames* are
2171 generated before *dirpath* itself is generated.
2172
Ezio Melotti67494f22011-10-18 12:59:39 +03002173 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002174 argument *onerror* is specified, it should be a function; it will be called with
2175 one argument, an :exc:`OSError` instance. It can report the error to continue
2176 with the walk, or raise the exception to abort the walk. Note that the filename
2177 is available as the ``filename`` attribute of the exception object.
2178
2179 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002180 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002181 symlinks, on systems that support them.
2182
Georg Brandl116aa622007-08-15 14:28:22 +00002183 .. note::
2184
Georg Brandl50c40002012-06-24 11:45:20 +02002185 Be aware that setting *followlinks* to ``True`` can lead to infinite
2186 recursion if a link points to a parent directory of itself. :func:`walk`
2187 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00002188
2189 .. note::
2190
2191 If you pass a relative pathname, don't change the current working directory
2192 between resumptions of :func:`walk`. :func:`walk` never changes the current
2193 directory, and assumes that its caller doesn't either.
2194
2195 This example displays the number of bytes taken by non-directory files in each
2196 directory under the starting directory, except that it doesn't look under any
2197 CVS subdirectory::
2198
2199 import os
2200 from os.path import join, getsize
2201 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002202 print(root, "consumes", end=" ")
2203 print(sum(getsize(join(root, name)) for name in files), end=" ")
2204 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002205 if 'CVS' in dirs:
2206 dirs.remove('CVS') # don't visit CVS directories
2207
Christian Heimesfaf2f632008-01-06 16:59:19 +00002208 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl116aa622007-08-15 14:28:22 +00002209 doesn't allow deleting a directory before the directory is empty::
2210
Christian Heimesfaf2f632008-01-06 16:59:19 +00002211 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002212 # assuming there are no symbolic links.
2213 # CAUTION: This is dangerous! For example, if top == '/', it
2214 # could delete all your disk files.
2215 import os
2216 for root, dirs, files in os.walk(top, topdown=False):
2217 for name in files:
2218 os.remove(os.path.join(root, name))
2219 for name in dirs:
2220 os.rmdir(os.path.join(root, name))
2221
Georg Brandl116aa622007-08-15 14:28:22 +00002222
Larry Hastingsb4038062012-07-15 10:57:38 -07002223.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)
Charles-François Natali7372b062012-02-05 15:15:38 +01002224
2225 .. index::
2226 single: directory; walking
2227 single: directory; traversal
2228
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002229 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
Larry Hastingsc48fe982012-06-25 04:49:05 -07002230 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002231
2232 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2233 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2234
Larry Hastingsc48fe982012-06-25 04:49:05 -07002235 This function always supports :ref:`paths relative to directory descriptors
Larry Hastingsb4038062012-07-15 10:57:38 -07002236 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however
Larry Hastings950b76a2012-07-15 17:32:36 -07002237 that, unlike other functions, the :func:`fwalk` default value for
Larry Hastingsb4038062012-07-15 10:57:38 -07002238 *follow_symlinks* is ``False``.
Larry Hastingsc48fe982012-06-25 04:49:05 -07002239
Charles-François Natali7372b062012-02-05 15:15:38 +01002240 .. note::
2241
2242 Since :func:`fwalk` yields file descriptors, those are only valid until
2243 the next iteration step, so you should duplicate them (e.g. with
2244 :func:`dup`) if you want to keep them longer.
2245
2246 This example displays the number of bytes taken by non-directory files in each
2247 directory under the starting directory, except that it doesn't look under any
2248 CVS subdirectory::
2249
2250 import os
2251 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2252 print(root, "consumes", end="")
Hynek Schlawack1729b8f2012-06-24 16:11:08 +02002253 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
Charles-François Natali7372b062012-02-05 15:15:38 +01002254 end="")
2255 print("bytes in", len(files), "non-directory files")
2256 if 'CVS' in dirs:
2257 dirs.remove('CVS') # don't visit CVS directories
2258
2259 In the next example, walking the tree bottom-up is essential:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002260 :func:`rmdir` doesn't allow deleting a directory before the directory is
Charles-François Natali7372b062012-02-05 15:15:38 +01002261 empty::
2262
2263 # Delete everything reachable from the directory named in "top",
2264 # assuming there are no symbolic links.
2265 # CAUTION: This is dangerous! For example, if top == '/', it
2266 # could delete all your disk files.
2267 import os
2268 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2269 for name in files:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002270 os.unlink(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01002271 for name in dirs:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002272 os.rmdir(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01002273
2274 Availability: Unix.
2275
2276 .. versionadded:: 3.3
2277
2278
Georg Brandlb9831ab2012-06-24 11:57:07 +02002279Linux extended attributes
2280~~~~~~~~~~~~~~~~~~~~~~~~~
2281
2282.. versionadded:: 3.3
2283
2284These functions are all available on Linux only.
2285
2286.. function:: getxattr(path, attribute, *, follow_symlinks=True)
2287
2288 Return the value of the extended filesystem attribute *attribute* for
2289 *path*. *attribute* can be bytes or str. If it is str, it is encoded
2290 with the filesystem encoding.
2291
2292 This function can support :ref:`specifying a file descriptor <path_fd>` and
2293 :ref:`not following symlinks <follow_symlinks>`.
2294
2295
2296.. function:: listxattr(path=None, *, follow_symlinks=True)
2297
2298 Return a list of the extended filesystem attributes on *path*. The
2299 attributes in the list are represented as strings decoded with the filesystem
2300 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
2301 directory.
2302
2303 This function can support :ref:`specifying a file descriptor <path_fd>` and
2304 :ref:`not following symlinks <follow_symlinks>`.
2305
2306
2307.. function:: removexattr(path, attribute, *, follow_symlinks=True)
2308
2309 Removes the extended filesystem attribute *attribute* from *path*.
2310 *attribute* should be bytes or str. If it is a string, it is encoded
2311 with the filesystem encoding.
2312
2313 This function can support :ref:`specifying a file descriptor <path_fd>` and
2314 :ref:`not following symlinks <follow_symlinks>`.
2315
2316
2317.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
2318
2319 Set the extended filesystem attribute *attribute* on *path* to *value*.
2320 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
2321 it is encoded with the filesystem encoding. *flags* may be
2322 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
2323 given and the attribute does not exist, ``EEXISTS`` will be raised.
2324 If :data:`XATTR_CREATE` is given and the attribute already exists, the
2325 attribute will not be created and ``ENODATA`` will be raised.
2326
2327 This function can support :ref:`specifying a file descriptor <path_fd>` and
2328 :ref:`not following symlinks <follow_symlinks>`.
2329
2330 .. note::
2331
2332 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
2333 to be ignored on some filesystems.
2334
2335
2336.. data:: XATTR_SIZE_MAX
2337
2338 The maximum size the value of an extended attribute can be. Currently, this
Serhiy Storchakaf8def282013-02-16 17:29:56 +02002339 is 64 KiB on Linux.
Georg Brandlb9831ab2012-06-24 11:57:07 +02002340
2341
2342.. data:: XATTR_CREATE
2343
2344 This is a possible value for the flags argument in :func:`setxattr`. It
2345 indicates the operation must create an attribute.
2346
2347
2348.. data:: XATTR_REPLACE
2349
2350 This is a possible value for the flags argument in :func:`setxattr`. It
2351 indicates the operation must replace an existing attribute.
2352
2353
Georg Brandl116aa622007-08-15 14:28:22 +00002354.. _os-process:
2355
2356Process Management
2357------------------
2358
2359These functions may be used to create and manage processes.
2360
Serhiy Storchakadab83542013-10-13 20:12:43 +03002361The various :func:`exec\* <execl>` functions take a list of arguments for the new
Georg Brandl116aa622007-08-15 14:28:22 +00002362program loaded into the process. In each case, the first of these arguments is
2363passed to the new program as its own name rather than as an argument a user may
2364have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002365passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002366['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2367to be ignored.
2368
2369
2370.. function:: abort()
2371
2372 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2373 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002374 an exit code of ``3``. Be aware that calling this function will not call the
2375 Python signal handler registered for :const:`SIGABRT` with
2376 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002377
Georg Brandlc575c902008-09-13 17:46:05 +00002378 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002379
2380
2381.. function:: execl(path, arg0, arg1, ...)
2382 execle(path, arg0, arg1, ..., env)
2383 execlp(file, arg0, arg1, ...)
2384 execlpe(file, arg0, arg1, ..., env)
2385 execv(path, args)
2386 execve(path, args, env)
2387 execvp(file, args)
2388 execvpe(file, args, env)
2389
2390 These functions all execute a new program, replacing the current process; they
2391 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002392 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002393 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002394
2395 The current process is replaced immediately. Open file objects and
2396 descriptors are not flushed, so if there may be data buffered
2397 on these open files, you should flush them using
2398 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
Serhiy Storchakadab83542013-10-13 20:12:43 +03002399 :func:`exec\* <execl>` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002400
Serhiy Storchakadab83542013-10-13 20:12:43 +03002401 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00002402 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002403 to work with if the number of parameters is fixed when the code is written; the
2404 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002405 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002406 variable, with the arguments being passed in a list or tuple as the *args*
2407 parameter. In either case, the arguments to the child process should start with
2408 the name of the command being run, but this is not enforced.
2409
Christian Heimesfaf2f632008-01-06 16:59:19 +00002410 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002411 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2412 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03002413 environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00002414 discussed in the next paragraph), the new environment is used as the source of
2415 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2416 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2417 locate the executable; *path* must contain an appropriate absolute or relative
2418 path.
2419
2420 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002421 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002422 used to define the environment variables for the new process (these are used
2423 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002424 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002425 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002426
Larry Hastings9cf065c2012-06-22 16:30:09 -07002427 For :func:`execve` on some platforms, *path* may also be specified as an open
2428 file descriptor. This functionality may not be supported on your platform;
2429 you can check whether or not it is available using :data:`os.supports_fd`.
2430 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2431
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002432 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002433
Larry Hastings9cf065c2012-06-22 16:30:09 -07002434 .. versionadded:: 3.3
2435 Added support for specifying an open file descriptor for *path*
2436 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002437
2438.. function:: _exit(n)
2439
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002440 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002441 stdio buffers, etc.
2442
2443 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002444
2445 .. note::
2446
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002447 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2448 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002449
Christian Heimesfaf2f632008-01-06 16:59:19 +00002450The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002451although they are not required. These are typically used for system programs
2452written in Python, such as a mail server's external command delivery program.
2453
2454.. note::
2455
2456 Some of these may not be available on all Unix platforms, since there is some
2457 variation. These constants are defined where they are defined by the underlying
2458 platform.
2459
2460
2461.. data:: EX_OK
2462
Benjamin Petersonf650e462010-05-06 23:03:05 +00002463 Exit code that means no error occurred.
2464
2465 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002466
Georg Brandl116aa622007-08-15 14:28:22 +00002467
2468.. data:: EX_USAGE
2469
2470 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002471 number of arguments are given.
2472
2473 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002474
Georg Brandl116aa622007-08-15 14:28:22 +00002475
2476.. data:: EX_DATAERR
2477
Benjamin Petersonf650e462010-05-06 23:03:05 +00002478 Exit code that means the input data was incorrect.
2479
2480 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002481
Georg Brandl116aa622007-08-15 14:28:22 +00002482
2483.. data:: EX_NOINPUT
2484
2485 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002486
Georg Brandlc575c902008-09-13 17:46:05 +00002487 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002488
Georg Brandl116aa622007-08-15 14:28:22 +00002489
2490.. data:: EX_NOUSER
2491
Benjamin Petersonf650e462010-05-06 23:03:05 +00002492 Exit code that means a specified user did not exist.
2493
2494 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002495
Georg Brandl116aa622007-08-15 14:28:22 +00002496
2497.. data:: EX_NOHOST
2498
Benjamin Petersonf650e462010-05-06 23:03:05 +00002499 Exit code that means a specified host did not exist.
2500
2501 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002502
Georg Brandl116aa622007-08-15 14:28:22 +00002503
2504.. data:: EX_UNAVAILABLE
2505
Benjamin Petersonf650e462010-05-06 23:03:05 +00002506 Exit code that means that a required service is unavailable.
2507
2508 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002509
Georg Brandl116aa622007-08-15 14:28:22 +00002510
2511.. data:: EX_SOFTWARE
2512
Benjamin Petersonf650e462010-05-06 23:03:05 +00002513 Exit code that means an internal software error was detected.
2514
2515 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002516
Georg Brandl116aa622007-08-15 14:28:22 +00002517
2518.. data:: EX_OSERR
2519
2520 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002521 inability to fork or create a pipe.
2522
2523 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002524
Georg Brandl116aa622007-08-15 14:28:22 +00002525
2526.. data:: EX_OSFILE
2527
2528 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002529 some other kind of error.
2530
2531 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002532
Georg Brandl116aa622007-08-15 14:28:22 +00002533
2534.. data:: EX_CANTCREAT
2535
2536 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002537
Georg Brandlc575c902008-09-13 17:46:05 +00002538 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002539
Georg Brandl116aa622007-08-15 14:28:22 +00002540
2541.. data:: EX_IOERR
2542
2543 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002544
Georg Brandlc575c902008-09-13 17:46:05 +00002545 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002546
Georg Brandl116aa622007-08-15 14:28:22 +00002547
2548.. data:: EX_TEMPFAIL
2549
2550 Exit code that means a temporary failure occurred. This indicates something
2551 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002552 made during a retryable operation.
2553
2554 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002555
Georg Brandl116aa622007-08-15 14:28:22 +00002556
2557.. data:: EX_PROTOCOL
2558
2559 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002560 understood.
2561
2562 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002563
Georg Brandl116aa622007-08-15 14:28:22 +00002564
2565.. data:: EX_NOPERM
2566
2567 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002568 operation (but not intended for file system problems).
2569
2570 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002571
Georg Brandl116aa622007-08-15 14:28:22 +00002572
2573.. data:: EX_CONFIG
2574
2575 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002576
Georg Brandlc575c902008-09-13 17:46:05 +00002577 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002578
Georg Brandl116aa622007-08-15 14:28:22 +00002579
2580.. data:: EX_NOTFOUND
2581
Benjamin Petersonf650e462010-05-06 23:03:05 +00002582 Exit code that means something like "an entry was not found".
2583
2584 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002585
Georg Brandl116aa622007-08-15 14:28:22 +00002586
2587.. function:: fork()
2588
Christian Heimesfaf2f632008-01-06 16:59:19 +00002589 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002590 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002591
2592 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
2593 known issues when using fork() from a thread.
2594
Christian Heimes3046fe42013-10-29 21:08:56 +01002595 .. warning::
2596
2597 See :mod:`ssl` for applications that use the SSL module with fork().
2598
Georg Brandlc575c902008-09-13 17:46:05 +00002599 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002600
2601
2602.. function:: forkpty()
2603
2604 Fork a child process, using a new pseudo-terminal as the child's controlling
2605 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2606 new child's process id in the parent, and *fd* is the file descriptor of the
2607 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002608 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002609
Georg Brandlc575c902008-09-13 17:46:05 +00002610 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002611
2612
2613.. function:: kill(pid, sig)
2614
2615 .. index::
2616 single: process; killing
2617 single: process; signalling
2618
2619 Send signal *sig* to the process *pid*. Constants for the specific signals
2620 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00002621
2622 Windows: The :data:`signal.CTRL_C_EVENT` and
2623 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
2624 only be sent to console processes which share a common console window,
2625 e.g., some subprocesses. Any other value for *sig* will cause the process
2626 to be unconditionally killed by the TerminateProcess API, and the exit code
2627 will be set to *sig*. The Windows version of :func:`kill` additionally takes
2628 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00002629
Victor Stinnerb3e72192011-05-08 01:46:11 +02002630 See also :func:`signal.pthread_kill`.
2631
Georg Brandl67b21b72010-08-17 15:07:14 +00002632 .. versionadded:: 3.2
2633 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00002634
Georg Brandl116aa622007-08-15 14:28:22 +00002635
2636.. function:: killpg(pgid, sig)
2637
2638 .. index::
2639 single: process; killing
2640 single: process; signalling
2641
Benjamin Petersonf650e462010-05-06 23:03:05 +00002642 Send the signal *sig* to the process group *pgid*.
2643
2644 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002645
Georg Brandl116aa622007-08-15 14:28:22 +00002646
2647.. function:: nice(increment)
2648
2649 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002650
Georg Brandlc575c902008-09-13 17:46:05 +00002651 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002652
2653
2654.. function:: plock(op)
2655
2656 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00002657 ``<sys/lock.h>``) determines which segments are locked.
2658
2659 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002660
2661
2662.. function:: popen(...)
Georg Brandl116aa622007-08-15 14:28:22 +00002663
2664 Run child processes, returning opened pipes for communications. These functions
2665 are described in section :ref:`os-newstreams`.
2666
2667
2668.. function:: spawnl(mode, path, ...)
2669 spawnle(mode, path, ..., env)
2670 spawnlp(mode, file, ...)
2671 spawnlpe(mode, file, ..., env)
2672 spawnv(mode, path, args)
2673 spawnve(mode, path, args, env)
2674 spawnvp(mode, file, args)
2675 spawnvpe(mode, file, args, env)
2676
2677 Execute the program *path* in a new process.
2678
2679 (Note that the :mod:`subprocess` module provides more powerful facilities for
2680 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00002681 preferable to using these functions. Check especially the
2682 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00002683
Christian Heimesfaf2f632008-01-06 16:59:19 +00002684 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00002685 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
2686 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002687 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00002688 be used with the :func:`waitpid` function.
2689
Serhiy Storchakadab83542013-10-13 20:12:43 +03002690 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00002691 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002692 to work with if the number of parameters is fixed when the code is written; the
2693 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002694 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00002695 parameters is variable, with the arguments being passed in a list or tuple as
2696 the *args* parameter. In either case, the arguments to the child process must
2697 start with the name of the command being run.
2698
Christian Heimesfaf2f632008-01-06 16:59:19 +00002699 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002700 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
2701 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03002702 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00002703 discussed in the next paragraph), the new environment is used as the source of
2704 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
2705 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
2706 :envvar:`PATH` variable to locate the executable; *path* must contain an
2707 appropriate absolute or relative path.
2708
2709 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002710 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00002711 which is used to define the environment variables for the new process (they are
2712 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00002713 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00002714 the new process to inherit the environment of the current process. Note that
2715 keys and values in the *env* dictionary must be strings; invalid keys or
2716 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00002717
2718 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
2719 equivalent::
2720
2721 import os
2722 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
2723
2724 L = ['cp', 'index.html', '/dev/null']
2725 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
2726
2727 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02002728 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
2729 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
2730 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00002731
Georg Brandl116aa622007-08-15 14:28:22 +00002732
2733.. data:: P_NOWAIT
2734 P_NOWAITO
2735
Serhiy Storchakadab83542013-10-13 20:12:43 +03002736 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00002737 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00002738 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00002739 the return value.
2740
2741 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002742
Georg Brandl116aa622007-08-15 14:28:22 +00002743
2744.. data:: P_WAIT
2745
Serhiy Storchakadab83542013-10-13 20:12:43 +03002746 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00002747 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
2748 return until the new process has run to completion and will return the exit code
2749 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002750 process.
2751
2752 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002753
Georg Brandl116aa622007-08-15 14:28:22 +00002754
2755.. data:: P_DETACH
2756 P_OVERLAY
2757
Serhiy Storchakadab83542013-10-13 20:12:43 +03002758 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00002759 functions. These are less portable than those listed above. :const:`P_DETACH`
2760 is similar to :const:`P_NOWAIT`, but the new process is detached from the
2761 console of the calling process. If :const:`P_OVERLAY` is used, the current
Serhiy Storchakadab83542013-10-13 20:12:43 +03002762 process will be replaced; the :func:`spawn\* <spawnl>` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002763
Georg Brandl116aa622007-08-15 14:28:22 +00002764 Availability: Windows.
2765
Georg Brandl116aa622007-08-15 14:28:22 +00002766
2767.. function:: startfile(path[, operation])
2768
2769 Start a file with its associated application.
2770
2771 When *operation* is not specified or ``'open'``, this acts like double-clicking
2772 the file in Windows Explorer, or giving the file name as an argument to the
2773 :program:`start` command from the interactive command shell: the file is opened
2774 with whatever application (if any) its extension is associated.
2775
2776 When another *operation* is given, it must be a "command verb" that specifies
2777 what should be done with the file. Common verbs documented by Microsoft are
2778 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
2779 ``'find'`` (to be used on directories).
2780
2781 :func:`startfile` returns as soon as the associated application is launched.
2782 There is no option to wait for the application to close, and no way to retrieve
2783 the application's exit status. The *path* parameter is relative to the current
2784 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00002785 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00002786 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00002787 the path is properly encoded for Win32.
2788
2789 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002790
Georg Brandl116aa622007-08-15 14:28:22 +00002791
2792.. function:: system(command)
2793
2794 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00002795 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00002796 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
2797 the executed command. If *command* generates any output, it will be sent to
2798 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00002799
2800 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00002801 format specified for :func:`wait`. Note that POSIX does not specify the
2802 meaning of the return value of the C :c:func:`system` function, so the return
2803 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00002804
Georg Brandl8f7b4272010-10-14 06:35:53 +00002805 On Windows, the return value is that returned by the system shell after
2806 running *command*. The shell is given by the Windows environment variable
2807 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
2808 status of the command run; on systems using a non-native shell, consult your
2809 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00002810
Georg Brandl8f7b4272010-10-14 06:35:53 +00002811 The :mod:`subprocess` module provides more powerful facilities for spawning
2812 new processes and retrieving their results; using that module is preferable
2813 to using this function. See the :ref:`subprocess-replacements` section in
2814 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00002815
Benjamin Petersonf650e462010-05-06 23:03:05 +00002816 Availability: Unix, Windows.
2817
Georg Brandl116aa622007-08-15 14:28:22 +00002818
2819.. function:: times()
2820
Larry Hastings605a62d2012-06-24 04:33:36 -07002821 Returns the current global process times.
2822 The return value is an object with five attributes:
2823
2824 * :attr:`user` - user time
2825 * :attr:`system` - system time
2826 * :attr:`children_user` - user time of all child processes
2827 * :attr:`children_system` - system time of all child processes
2828 * :attr:`elapsed` - elapsed real time since a fixed point in the past
2829
2830 For backwards compatibility, this object also behaves like a five-tuple
2831 containing :attr:`user`, :attr:`system`, :attr:`children_user`,
2832 :attr:`children_system`, and :attr:`elapsed` in that order.
2833
2834 See the Unix manual page
Benjamin Petersonf650e462010-05-06 23:03:05 +00002835 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
Larry Hastings605a62d2012-06-24 04:33:36 -07002836 On Windows, only :attr:`user` and :attr:`system` are known; the other
2837 attributes are zero.
2838 On OS/2, only :attr:`elapsed` is known; the other attributes are zero.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002839
Georg Brandl8a5555f2012-06-24 13:29:09 +02002840 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002841
Larry Hastings605a62d2012-06-24 04:33:36 -07002842 .. versionchanged:: 3.3
2843 Return type changed from a tuple to a tuple-like object
2844 with named attributes.
2845
Georg Brandl116aa622007-08-15 14:28:22 +00002846
2847.. function:: wait()
2848
2849 Wait for completion of a child process, and return a tuple containing its pid
2850 and exit status indication: a 16-bit number, whose low byte is the signal number
2851 that killed the process, and whose high byte is the exit status (if the signal
2852 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00002853 produced.
2854
2855 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002856
Ross Lagerwall7807c352011-03-17 20:20:30 +02002857.. function:: waitid(idtype, id, options)
2858
2859 Wait for the completion of one or more child processes.
2860 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
2861 *id* specifies the pid to wait on.
2862 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
2863 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
2864 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
2865 representing the data contained in the :c:type:`siginfo_t` structure, namely:
2866 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
2867 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
2868 children in a waitable state.
2869
2870 Availability: Unix.
2871
2872 .. versionadded:: 3.3
2873
2874.. data:: P_PID
2875 P_PGID
2876 P_ALL
2877
2878 These are the possible values for *idtype* in :func:`waitid`. They affect
2879 how *id* is interpreted.
2880
2881 Availability: Unix.
2882
2883 .. versionadded:: 3.3
2884
2885.. data:: WEXITED
2886 WSTOPPED
2887 WNOWAIT
2888
2889 Flags that can be used in *options* in :func:`waitid` that specify what
2890 child signal to wait for.
2891
2892 Availability: Unix.
2893
2894 .. versionadded:: 3.3
2895
2896
2897.. data:: CLD_EXITED
2898 CLD_DUMPED
2899 CLD_TRAPPED
2900 CLD_CONTINUED
2901
2902 These are the possible values for :attr:`si_code` in the result returned by
2903 :func:`waitid`.
2904
2905 Availability: Unix.
2906
2907 .. versionadded:: 3.3
2908
Georg Brandl116aa622007-08-15 14:28:22 +00002909
2910.. function:: waitpid(pid, options)
2911
2912 The details of this function differ on Unix and Windows.
2913
2914 On Unix: Wait for completion of a child process given by process id *pid*, and
2915 return a tuple containing its process id and exit status indication (encoded as
2916 for :func:`wait`). The semantics of the call are affected by the value of the
2917 integer *options*, which should be ``0`` for normal operation.
2918
2919 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
2920 that specific process. If *pid* is ``0``, the request is for the status of any
2921 child in the process group of the current process. If *pid* is ``-1``, the
2922 request pertains to any child of the current process. If *pid* is less than
2923 ``-1``, status is requested for any process in the process group ``-pid`` (the
2924 absolute value of *pid*).
2925
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00002926 An :exc:`OSError` is raised with the value of errno when the syscall
2927 returns -1.
2928
Georg Brandl116aa622007-08-15 14:28:22 +00002929 On Windows: Wait for completion of a process given by process handle *pid*, and
2930 return a tuple containing *pid*, and its exit status shifted left by 8 bits
2931 (shifting makes cross-platform use of the function easier). A *pid* less than or
2932 equal to ``0`` has no special meaning on Windows, and raises an exception. The
2933 value of integer *options* has no effect. *pid* can refer to any process whose
Serhiy Storchakadab83542013-10-13 20:12:43 +03002934 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
2935 functions called with :const:`P_NOWAIT` return suitable process handles.
Georg Brandl116aa622007-08-15 14:28:22 +00002936
2937
Ezio Melottiba4d8ed2012-11-23 19:45:52 +02002938.. function:: wait3(options)
Georg Brandl116aa622007-08-15 14:28:22 +00002939
2940 Similar to :func:`waitpid`, except no process id argument is given and a
2941 3-element tuple containing the child's process id, exit status indication, and
2942 resource usage information is returned. Refer to :mod:`resource`.\
Serhiy Storchakadab83542013-10-13 20:12:43 +03002943 :func:`~resource.getrusage` for details on resource usage information. The
2944 option argument is the same as that provided to :func:`waitpid` and
2945 :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002946
Georg Brandl116aa622007-08-15 14:28:22 +00002947 Availability: Unix.
2948
Georg Brandl116aa622007-08-15 14:28:22 +00002949
Victor Stinner4195b5c2012-02-08 23:03:19 +01002950.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00002951
2952 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
2953 process id, exit status indication, and resource usage information is returned.
Serhiy Storchakadab83542013-10-13 20:12:43 +03002954 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
2955 resource usage information. The arguments to :func:`wait4` are the same
2956 as those provided to :func:`waitpid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002957
2958 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002959
Georg Brandl116aa622007-08-15 14:28:22 +00002960
2961.. data:: WNOHANG
2962
2963 The option for :func:`waitpid` to return immediately if no child process status
2964 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002965
Georg Brandlc575c902008-09-13 17:46:05 +00002966 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002967
2968
2969.. data:: WCONTINUED
2970
2971 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00002972 from a job control stop since their status was last reported.
2973
Georg Brandl8a5555f2012-06-24 13:29:09 +02002974 Availability: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00002975
Georg Brandl116aa622007-08-15 14:28:22 +00002976
2977.. data:: WUNTRACED
2978
2979 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00002980 their current state has not been reported since they were stopped.
2981
2982 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002983
Georg Brandl116aa622007-08-15 14:28:22 +00002984
2985The following functions take a process status code as returned by
2986:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
2987used to determine the disposition of a process.
2988
Georg Brandl116aa622007-08-15 14:28:22 +00002989.. function:: WCOREDUMP(status)
2990
Christian Heimesfaf2f632008-01-06 16:59:19 +00002991 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00002992 return ``False``.
2993
2994 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002995
Georg Brandl116aa622007-08-15 14:28:22 +00002996
2997.. function:: WIFCONTINUED(status)
2998
Christian Heimesfaf2f632008-01-06 16:59:19 +00002999 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003000 otherwise return ``False``.
3001
3002 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003003
Georg Brandl116aa622007-08-15 14:28:22 +00003004
3005.. function:: WIFSTOPPED(status)
3006
Christian Heimesfaf2f632008-01-06 16:59:19 +00003007 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003008 ``False``.
3009
3010 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003011
3012
3013.. function:: WIFSIGNALED(status)
3014
Christian Heimesfaf2f632008-01-06 16:59:19 +00003015 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003016 ``False``.
3017
3018 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003019
3020
3021.. function:: WIFEXITED(status)
3022
Christian Heimesfaf2f632008-01-06 16:59:19 +00003023 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003024 otherwise return ``False``.
3025
3026 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003027
3028
3029.. function:: WEXITSTATUS(status)
3030
3031 If ``WIFEXITED(status)`` is true, return the integer parameter to the
3032 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003033
Georg Brandlc575c902008-09-13 17:46:05 +00003034 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003035
3036
3037.. function:: WSTOPSIG(status)
3038
Benjamin Petersonf650e462010-05-06 23:03:05 +00003039 Return the signal which caused the process to stop.
3040
3041 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003042
3043
3044.. function:: WTERMSIG(status)
3045
Benjamin Petersonf650e462010-05-06 23:03:05 +00003046 Return the signal which caused the process to exit.
3047
3048 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003049
3050
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003051Interface to the scheduler
3052--------------------------
3053
3054These functions control how a process is allocated CPU time by the operating
3055system. They are only available on some Unix platforms. For more detailed
3056information, consult your Unix manpages.
3057
3058.. versionadded:: 3.3
3059
3060The following scheduling policies are exposed if they are a supported by the
3061operating system.
3062
3063.. data:: SCHED_OTHER
3064
3065 The default scheduling policy.
3066
3067.. data:: SCHED_BATCH
3068
3069 Scheduling policy for CPU-intensive processes that tries to preserve
3070 interactivity on the rest of the computer.
3071
3072.. data:: SCHED_IDLE
3073
3074 Scheduling policy for extremely low priority background tasks.
3075
3076.. data:: SCHED_SPORADIC
3077
3078 Scheduling policy for sporadic server programs.
3079
3080.. data:: SCHED_FIFO
3081
3082 A First In First Out scheduling policy.
3083
3084.. data:: SCHED_RR
3085
3086 A round-robin scheduling policy.
3087
3088.. data:: SCHED_RESET_ON_FORK
3089
3090 This flag can OR'ed with any other scheduling policy. When a process with
3091 this flag set forks, its child's scheduling policy and priority are reset to
3092 the default.
3093
3094
3095.. class:: sched_param(sched_priority)
3096
3097 This class represents tunable scheduling parameters used in
3098 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3099 :func:`sched_getparam`. It is immutable.
3100
3101 At the moment, there is only one possible parameter:
3102
3103 .. attribute:: sched_priority
3104
3105 The scheduling priority for a scheduling policy.
3106
3107
3108.. function:: sched_get_priority_min(policy)
3109
3110 Get the minimum priority value for *policy*. *policy* is one of the
3111 scheduling policy constants above.
3112
3113
3114.. function:: sched_get_priority_max(policy)
3115
3116 Get the maximum priority value for *policy*. *policy* is one of the
3117 scheduling policy constants above.
3118
3119
3120.. function:: sched_setscheduler(pid, policy, param)
3121
3122 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3123 the calling process. *policy* is one of the scheduling policy constants
3124 above. *param* is a :class:`sched_param` instance.
3125
3126
3127.. function:: sched_getscheduler(pid)
3128
3129 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3130 means the calling process. The result is one of the scheduling policy
3131 constants above.
3132
3133
3134.. function:: sched_setparam(pid, param)
3135
3136 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3137 the calling process. *param* is a :class:`sched_param` instance.
3138
3139
3140.. function:: sched_getparam(pid)
3141
3142 Return the scheduling parameters as a :class:`sched_param` instance for the
3143 process with PID *pid*. A *pid* of 0 means the calling process.
3144
3145
3146.. function:: sched_rr_get_interval(pid)
3147
3148 Return the round-robin quantum in seconds for the process with PID *pid*. A
3149 *pid* of 0 means the calling process.
3150
3151
3152.. function:: sched_yield()
3153
3154 Voluntarily relinquish the CPU.
3155
3156
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003157.. function:: sched_setaffinity(pid, mask)
3158
Antoine Pitrou84869872012-08-04 16:16:35 +02003159 Restrict the process with PID *pid* (or the current process if zero) to a
3160 set of CPUs. *mask* is an iterable of integers representing the set of
3161 CPUs to which the process should be restricted.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003162
3163
Antoine Pitrou84869872012-08-04 16:16:35 +02003164.. function:: sched_getaffinity(pid)
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003165
Antoine Pitrou84869872012-08-04 16:16:35 +02003166 Return the set of CPUs the process with PID *pid* (or the current process
3167 if zero) is restricted to.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003168
Victor Stinner15f3d1e2012-08-04 20:57:48 +02003169 .. seealso::
3170 :func:`multiprocessing.cpu_count` returns the number of CPUs in the
3171 system.
3172
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003173
Georg Brandl116aa622007-08-15 14:28:22 +00003174.. _os-path:
3175
3176Miscellaneous System Information
3177--------------------------------
3178
3179
3180.. function:: confstr(name)
3181
3182 Return string-valued system configuration values. *name* specifies the
3183 configuration value to retrieve; it may be a string which is the name of a
3184 defined system value; these names are specified in a number of standards (POSIX,
3185 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3186 The names known to the host operating system are given as the keys of the
3187 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003188 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003189
3190 If the configuration value specified by *name* isn't defined, ``None`` is
3191 returned.
3192
3193 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3194 specific value for *name* is not supported by the host system, even if it is
3195 included in ``confstr_names``, an :exc:`OSError` is raised with
3196 :const:`errno.EINVAL` for the error number.
3197
Georg Brandl8a5555f2012-06-24 13:29:09 +02003198 Availability: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003199
Georg Brandl116aa622007-08-15 14:28:22 +00003200
3201.. data:: confstr_names
3202
3203 Dictionary mapping names accepted by :func:`confstr` to the integer values
3204 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003205 determine the set of names known to the system.
3206
3207 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003208
3209
3210.. function:: getloadavg()
3211
Christian Heimesa62da1d2008-01-12 19:39:10 +00003212 Return the number of processes in the system run queue averaged over the last
3213 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003214 unobtainable.
3215
3216 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003217
Georg Brandl116aa622007-08-15 14:28:22 +00003218
3219.. function:: sysconf(name)
3220
3221 Return integer-valued system configuration values. If the configuration value
3222 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3223 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3224 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003225
Georg Brandlc575c902008-09-13 17:46:05 +00003226 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003227
3228
3229.. data:: sysconf_names
3230
3231 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3232 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003233 determine the set of names known to the system.
3234
3235 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003236
Christian Heimesfaf2f632008-01-06 16:59:19 +00003237The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003238are defined for all platforms.
3239
3240Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3241
3242
3243.. data:: curdir
3244
3245 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003246 directory. This is ``'.'`` for Windows and POSIX. Also available via
3247 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003248
3249
3250.. data:: pardir
3251
3252 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003253 directory. This is ``'..'`` for Windows and POSIX. Also available via
3254 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003255
3256
3257.. data:: sep
3258
Georg Brandlc575c902008-09-13 17:46:05 +00003259 The character used by the operating system to separate pathname components.
3260 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3261 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003262 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3263 useful. Also available via :mod:`os.path`.
3264
3265
3266.. data:: altsep
3267
3268 An alternative character used by the operating system to separate pathname
3269 components, or ``None`` if only one separator character exists. This is set to
3270 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3271 :mod:`os.path`.
3272
3273
3274.. data:: extsep
3275
3276 The character which separates the base filename from the extension; for example,
3277 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3278
Georg Brandl116aa622007-08-15 14:28:22 +00003279
3280.. data:: pathsep
3281
3282 The character conventionally used by the operating system to separate search
3283 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3284 Windows. Also available via :mod:`os.path`.
3285
3286
3287.. data:: defpath
3288
Serhiy Storchakadab83542013-10-13 20:12:43 +03003289 The default search path used by :func:`exec\*p\* <execl>` and
3290 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
3291 key. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003292
3293
3294.. data:: linesep
3295
3296 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003297 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3298 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3299 *os.linesep* as a line terminator when writing files opened in text mode (the
3300 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003301
3302
3303.. data:: devnull
3304
Georg Brandl850a9902010-05-21 22:04:32 +00003305 The file path of the null device. For example: ``'/dev/null'`` for
3306 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003307
Georg Brandl116aa622007-08-15 14:28:22 +00003308
3309.. _os-miscfunc:
3310
3311Miscellaneous Functions
3312-----------------------
3313
3314
3315.. function:: urandom(n)
3316
3317 Return a string of *n* random bytes suitable for cryptographic use.
3318
3319 This function returns random bytes from an OS-specific randomness source. The
3320 returned data should be unpredictable enough for cryptographic applications,
Georg Brandlf62445a2012-06-24 13:31:20 +02003321 though its exact quality depends on the OS implementation. On a Unix-like
Georg Brandlc6a2c9b2013-10-06 18:43:19 +02003322 system this will query ``/dev/urandom``, and on Windows it will use
3323 ``CryptGenRandom()``. If a randomness source is not found,
3324 :exc:`NotImplementedError` will be raised.
Andrew Svetlov03cb99c2012-10-16 13:15:06 +03003325
Andrew Svetlov2bfe3862012-10-16 13:52:25 +03003326 For an easy-to-use interface to the random number generator
3327 provided by your platform, please see :class:`random.SystemRandom`.