blob: 574aa2e6471ae4fd6b00e4e3a89340f40afdd4d9 [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
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007**Source code:** :source:`Lib/os.py`
8
9--------------
Georg Brandl116aa622007-08-15 14:28:22 +000010
Christian Heimesa62da1d2008-01-12 19:39:10 +000011This module provides a portable way of using operating system dependent
12functionality. If you just want to read or write a file see :func:`open`, if
13you want to manipulate paths, see the :mod:`os.path` module, and if you want to
14read all the lines in all the files on the command line see the :mod:`fileinput`
15module. For creating temporary files and directories see the :mod:`tempfile`
16module, and for high-level file and directory handling see the :mod:`shutil`
17module.
Georg Brandl116aa622007-08-15 14:28:22 +000018
Benjamin Peterson1baf4652009-12-31 03:11:23 +000019Notes on the availability of these functions:
Georg Brandl116aa622007-08-15 14:28:22 +000020
Benjamin Peterson1baf4652009-12-31 03:11:23 +000021* The design of all built-in operating system dependent modules of Python is
22 such that as long as the same functionality is available, it uses the same
23 interface; for example, the function ``os.stat(path)`` returns stat
24 information about *path* in the same format (which happens to have originated
25 with the POSIX interface).
Georg Brandl116aa622007-08-15 14:28:22 +000026
Benjamin Peterson1baf4652009-12-31 03:11:23 +000027* Extensions peculiar to a particular operating system are also available
28 through the :mod:`os` module, but using them is of course a threat to
29 portability.
Georg Brandl116aa622007-08-15 14:28:22 +000030
Benjamin Peterson1baf4652009-12-31 03:11:23 +000031* All functions accepting path or file names accept both bytes and string
32 objects, and result in an object of the same type, if a path or file name is
33 returned.
Georg Brandl76e55382008-10-08 16:34:57 +000034
pxinwre1e3c2d2020-12-16 05:20:07 +080035* On VxWorks, os.popen, os.fork, os.execv and os.spawn*p* are not supported.
Benjamin Petersonf650e462010-05-06 23:03:05 +000036
Georg Brandlc575c902008-09-13 17:46:05 +000037.. note::
38
Tim Hoffmanna55f75a2019-07-05 10:41:35 +020039 All functions in this module raise :exc:`OSError` (or subclasses thereof) in
40 the case of invalid or inaccessible file names and paths, or other arguments
41 that have the correct type, but are not accepted by the operating system.
Georg Brandl116aa622007-08-15 14:28:22 +000042
Georg Brandl116aa622007-08-15 14:28:22 +000043.. exception:: error
44
Christian Heimesa62da1d2008-01-12 19:39:10 +000045 An alias for the built-in :exc:`OSError` exception.
Georg Brandl116aa622007-08-15 14:28:22 +000046
47
48.. data:: name
49
Benjamin Peterson1baf4652009-12-31 03:11:23 +000050 The name of the operating system dependent module imported. The following
Ned Deily5c867012014-06-26 23:40:06 -070051 names have currently been registered: ``'posix'``, ``'nt'``,
Larry Hastings10108a72016-09-05 15:11:23 -070052 ``'java'``.
Georg Brandl116aa622007-08-15 14:28:22 +000053
Antoine Pitroua83cdaa2011-07-09 15:54:23 +020054 .. seealso::
55 :attr:`sys.platform` has a finer granularity. :func:`os.uname` gives
56 system-dependent version information.
57
58 The :mod:`platform` module provides detailed checks for the
59 system's identity.
60
Georg Brandl116aa622007-08-15 14:28:22 +000061
Martin v. Löwis011e8422009-05-05 04:43:17 +000062.. _os-filenames:
Victor Stinner6bfd8542014-06-19 12:50:27 +020063.. _filesystem-encoding:
Martin v. Löwis011e8422009-05-05 04:43:17 +000064
65File Names, Command Line Arguments, and Environment Variables
66-------------------------------------------------------------
67
Georg Brandl67b21b72010-08-17 15:07:14 +000068In Python, file names, command line arguments, and environment variables are
69represented using the string type. On some systems, decoding these strings to
70and from bytes is necessary before passing them to the operating system. Python
Victor Stinner4b9aad42020-11-02 16:49:54 +010071uses the :term:`filesystem encoding and error handler` to perform this
72conversion (see :func:`sys.getfilesystemencoding`).
73
74The :term:`filesystem encoding and error handler` are configured at Python
75startup by the :c:func:`PyConfig_Read` function: see
76:c:member:`~PyConfig.filesystem_encoding` and
77:c:member:`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`.
Martin v. Löwis011e8422009-05-05 04:43:17 +000078
79.. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +000080 On some systems, conversion using the file system encoding may fail. In this
Victor Stinnerf6a271a2014-08-01 12:28:48 +020081 case, Python uses the :ref:`surrogateescape encoding error handler
82 <surrogateescape>`, which means that undecodable bytes are replaced by a
83 Unicode character U+DCxx on decoding, and these are again translated to the
84 original byte on encoding.
Martin v. Löwis011e8422009-05-05 04:43:17 +000085
86
Victor Stinner4b9aad42020-11-02 16:49:54 +010087The :term:`file system encoding <filesystem encoding and error handler>` must
88guarantee to successfully decode all bytes below 128. If the file system
89encoding fails to provide this guarantee, API functions can raise
90:exc:`UnicodeError`.
91
92See also the :term:`locale encoding`.
93
94
95.. _utf8-mode:
96
97Python UTF-8 Mode
98-----------------
99
100.. versionadded:: 3.7
101 See :pep:`540` for more details.
102
103The Python UTF-8 Mode ignores the :term:`locale encoding` and forces the usage
104of the UTF-8 encoding:
105
106* Use UTF-8 as the :term:`filesystem encoding <filesystem encoding and error
107 handler>`.
108* :func:`sys.getfilesystemencoding()` returns ``'UTF-8'``.
109* :func:`locale.getpreferredencoding()` returns ``'UTF-8'`` (the *do_setlocale*
110 argument has no effect).
111* :data:`sys.stdin`, :data:`sys.stdout`, and :data:`sys.stderr` all use
112 UTF-8 as their text encoding, with the ``surrogateescape``
113 :ref:`error handler <error-handlers>` being enabled for :data:`sys.stdin`
114 and :data:`sys.stdout` (:data:`sys.stderr` continues to use
115 ``backslashreplace`` as it does in the default locale-aware mode)
Victor Stinner35297182020-11-04 11:20:10 +0100116* On Unix, :func:`os.device_encoding` returns ``'UTF-8'``. rather than the
117 device encoding.
Victor Stinner4b9aad42020-11-02 16:49:54 +0100118
119Note that the standard stream settings in UTF-8 mode can be overridden by
120:envvar:`PYTHONIOENCODING` (just as they can be in the default locale-aware
121mode).
122
123As a consequence of the changes in those lower level APIs, other higher
124level APIs also exhibit different default behaviours:
125
126* Command line arguments, environment variables and filenames are decoded
127 to text using the UTF-8 encoding.
128* :func:`os.fsdecode()` and :func:`os.fsencode()` use the UTF-8 encoding.
129* :func:`open()`, :func:`io.open()`, and :func:`codecs.open()` use the UTF-8
130 encoding by default. However, they still use the strict error handler by
131 default so that attempting to open a binary file in text mode is likely
132 to raise an exception rather than producing nonsense data.
133
134The :ref:`Python UTF-8 Mode <utf8-mode>` is enabled if the LC_CTYPE locale is
135``C`` or ``POSIX`` at Python startup (see the :c:func:`PyConfig_Read`
136function).
137
138It can be enabled or disabled using the :option:`-X utf8 <-X>` command line
139option and the :envvar:`PYTHONUTF8` environment variable.
140
141If the :envvar:`PYTHONUTF8` environment variable is not set at all, then the
142interpreter defaults to using the current locale settings, *unless* the current
143locale is identified as a legacy ASCII-based locale (as described for
144:envvar:`PYTHONCOERCECLOCALE`), and locale coercion is either disabled or
145fails. In such legacy locales, the interpreter will default to enabling UTF-8
146mode unless explicitly instructed not to do so.
147
148The Python UTF-8 Mode can only be enabled at the Python startup. Its value
149can be read from :data:`sys.flags.utf8_mode <sys.flags>`.
150
151See also the :ref:`UTF-8 mode on Windows <win-utf8-mode>`
152and the :term:`filesystem encoding and error handler`.
Martin v. Löwis011e8422009-05-05 04:43:17 +0000153
154
Georg Brandl116aa622007-08-15 14:28:22 +0000155.. _os-procinfo:
156
157Process Parameters
158------------------
159
160These functions and data items provide information and operate on the current
161process and user.
162
163
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200164.. function:: ctermid()
165
166 Return the filename corresponding to the controlling terminal of the process.
167
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400168 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200169
170
Georg Brandl116aa622007-08-15 14:28:22 +0000171.. data:: environ
172
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700173 A :term:`mapping` object representing the string environment. For example,
Georg Brandl116aa622007-08-15 14:28:22 +0000174 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
175 and is equivalent to ``getenv("HOME")`` in C.
176
177 This mapping is captured the first time the :mod:`os` module is imported,
178 typically during Python startup as part of processing :file:`site.py`. Changes
179 to the environment made after this time are not reflected in ``os.environ``,
180 except for changes made by modifying ``os.environ`` directly.
181
Victor Stinnerb8d12622020-01-24 14:05:48 +0100182 This mapping may be used to modify the environment as well as query the
183 environment. :func:`putenv` will be called automatically when the mapping
184 is modified.
Georg Brandl116aa622007-08-15 14:28:22 +0000185
Victor Stinner84ae1182010-05-06 22:05:07 +0000186 On Unix, keys and values use :func:`sys.getfilesystemencoding` and
187 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like
188 to use a different encoding.
189
Georg Brandl116aa622007-08-15 14:28:22 +0000190 .. note::
191
192 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
193 to modify ``os.environ``.
194
195 .. note::
196
Georg Brandlc575c902008-09-13 17:46:05 +0000197 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
198 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000199 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000200
Victor Stinnerb8d12622020-01-24 14:05:48 +0100201 You can delete items in this mapping to unset environment variables.
202 :func:`unsetenv` will be called automatically when an item is deleted from
203 ``os.environ``, and when one of the :meth:`pop` or :meth:`clear` methods is
204 called.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000205
Charles Burklandd648ef12020-03-13 09:04:43 -0700206 .. versionchanged:: 3.9
207 Updated to support :pep:`584`'s merge (``|``) and update (``|=``) operators.
208
Georg Brandl116aa622007-08-15 14:28:22 +0000209
Victor Stinner84ae1182010-05-06 22:05:07 +0000210.. data:: environb
211
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700212 Bytes version of :data:`environ`: a :term:`mapping` object representing the
Victor Stinner84ae1182010-05-06 22:05:07 +0000213 environment as byte strings. :data:`environ` and :data:`environb` are
214 synchronized (modify :data:`environb` updates :data:`environ`, and vice
215 versa).
216
Victor Stinnerb745a742010-05-18 17:17:23 +0000217 :data:`environb` is only available if :data:`supports_bytes_environ` is
Serhiy Storchaka138ccbb2019-11-12 16:57:03 +0200218 ``True``.
Victor Stinner84ae1182010-05-06 22:05:07 +0000219
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000220 .. versionadded:: 3.2
221
Charles Burklandd648ef12020-03-13 09:04:43 -0700222 .. versionchanged:: 3.9
223 Updated to support :pep:`584`'s merge (``|``) and update (``|=``) operators.
224
Victor Stinner84ae1182010-05-06 22:05:07 +0000225
Georg Brandl116aa622007-08-15 14:28:22 +0000226.. function:: chdir(path)
227 fchdir(fd)
228 getcwd()
229 :noindex:
230
231 These functions are described in :ref:`os-file-dir`.
232
233
Victor Stinnere8d51452010-08-19 01:05:19 +0000234.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000235
Victor Stinner4b9aad42020-11-02 16:49:54 +0100236 Encode :term:`path-like <path-like object>` *filename* to the
237 :term:`filesystem encoding and error handler`; return :class:`bytes`
238 unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000239
Antoine Pitroua305ca72010-09-25 22:12:00 +0000240 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000241
242 .. versionadded:: 3.2
243
Brett Cannonb08388d2016-06-09 15:58:06 -0700244 .. versionchanged:: 3.6
Brett Cannonc78ca1e2016-06-24 12:03:43 -0700245 Support added to accept objects implementing the :class:`os.PathLike`
246 interface.
Brett Cannonb08388d2016-06-09 15:58:06 -0700247
Victor Stinnere8d51452010-08-19 01:05:19 +0000248
249.. function:: fsdecode(filename)
250
Brett Cannonc28592b2016-06-24 12:21:47 -0700251 Decode the :term:`path-like <path-like object>` *filename* from the
Victor Stinner4b9aad42020-11-02 16:49:54 +0100252 :term:`filesystem encoding and error handler`; return :class:`str`
253 unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000254
255 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000256
257 .. versionadded:: 3.2
258
Brett Cannonb08388d2016-06-09 15:58:06 -0700259 .. versionchanged:: 3.6
Brett Cannonc78ca1e2016-06-24 12:03:43 -0700260 Support added to accept objects implementing the :class:`os.PathLike`
261 interface.
Brett Cannonb08388d2016-06-09 15:58:06 -0700262
Victor Stinner449c4662010-05-08 11:10:09 +0000263
Ethan Furmancdc08792016-06-02 15:06:09 -0700264.. function:: fspath(path)
265
Brett Cannon0fa1aa12016-06-09 14:37:06 -0700266 Return the file system representation of the path.
Ethan Furmancdc08792016-06-02 15:06:09 -0700267
Brett Cannonc78ca1e2016-06-24 12:03:43 -0700268 If :class:`str` or :class:`bytes` is passed in, it is returned unchanged.
269 Otherwise :meth:`~os.PathLike.__fspath__` is called and its value is
270 returned as long as it is a :class:`str` or :class:`bytes` object.
271 In all other cases, :exc:`TypeError` is raised.
Ethan Furmancdc08792016-06-02 15:06:09 -0700272
Brett Cannonb08388d2016-06-09 15:58:06 -0700273 .. versionadded:: 3.6
274
275
276.. class:: PathLike
277
278 An :term:`abstract base class` for objects representing a file system path,
279 e.g. :class:`pathlib.PurePath`.
280
Berker Peksagb18ffb42016-06-10 08:43:54 +0300281 .. versionadded:: 3.6
282
Brett Cannonb08388d2016-06-09 15:58:06 -0700283 .. abstractmethod:: __fspath__()
284
285 Return the file system path representation of the object.
286
287 The method should only return a :class:`str` or :class:`bytes` object,
288 with the preference being for :class:`str`.
289
Ethan Furmancdc08792016-06-02 15:06:09 -0700290
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200291.. function:: getenv(key, default=None)
292
293 Return the value of the environment variable *key* if it exists, or
294 *default* if it doesn't. *key*, *default* and the result are str.
295
296 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
297 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
298 would like to use a different encoding.
299
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400300 .. availability:: most flavors of Unix, Windows.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200301
302
303.. function:: getenvb(key, default=None)
304
305 Return the value of the environment variable *key* if it exists, or
306 *default* if it doesn't. *key*, *default* and the result are bytes.
307
Berker Peksag996e5f92016-09-26 22:44:07 +0300308 :func:`getenvb` is only available if :data:`supports_bytes_environ`
Serhiy Storchaka138ccbb2019-11-12 16:57:03 +0200309 is ``True``.
Berker Peksag996e5f92016-09-26 22:44:07 +0300310
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400311 .. availability:: most flavors of Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200312
313 .. versionadded:: 3.2
314
315
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000316.. function:: get_exec_path(env=None)
317
318 Returns the list of directories that will be searched for a named
319 executable, similar to a shell, when launching a process.
320 *env*, when specified, should be an environment variable dictionary
321 to lookup the PATH in.
Serhiy Storchakaecf41da2016-10-19 16:29:26 +0300322 By default, when *env* is ``None``, :data:`environ` is used.
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000323
324 .. versionadded:: 3.2
325
326
Georg Brandl116aa622007-08-15 14:28:22 +0000327.. function:: getegid()
328
329 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000330 "set id" bit on the file being executed in the current process.
331
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400332 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
334
335.. function:: geteuid()
336
337 .. index:: single: user; effective id
338
Benjamin Petersonf650e462010-05-06 23:03:05 +0000339 Return the current process's effective user id.
340
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400341 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000342
343
344.. function:: getgid()
345
346 .. index:: single: process; group
347
Benjamin Petersonf650e462010-05-06 23:03:05 +0000348 Return the real group id of the current process.
349
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400350 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000351
352
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200353.. function:: getgrouplist(user, group)
354
355 Return list of group ids that *user* belongs to. If *group* is not in the
356 list, it is included; typically, *group* is specified as the group ID
357 field from the password record for *user*.
358
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400359 .. availability:: Unix.
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200360
361 .. versionadded:: 3.3
362
363
Georg Brandl116aa622007-08-15 14:28:22 +0000364.. function:: getgroups()
365
366 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000367
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400368 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000369
Larry Hastings3732ed22014-03-15 21:13:56 -0700370 .. note::
371
372 On Mac OS X, :func:`getgroups` behavior differs somewhat from
Ned Deily2e209682012-04-30 11:14:02 -0700373 other Unix platforms. If the Python interpreter was built with a
374 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
375 the list of effective group ids associated with the current user process;
376 this list is limited to a system-defined number of entries, typically 16,
377 and may be modified by calls to :func:`setgroups` if suitably privileged.
378 If built with a deployment target greater than :const:`10.5`,
379 :func:`getgroups` returns the current group access list for the user
380 associated with the effective user id of the process; the group access
381 list may change over the lifetime of the process, it is not affected by
382 calls to :func:`setgroups`, and its length is not limited to 16. The
383 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
384 obtained with :func:`sysconfig.get_config_var`.
385
Georg Brandl116aa622007-08-15 14:28:22 +0000386
387.. function:: getlogin()
388
389 Return the name of the user logged in on the controlling terminal of the
Barry Warsawd4990312018-01-24 12:51:29 -0500390 process. For most purposes, it is more useful to use
391 :func:`getpass.getuser` since the latter checks the environment variables
392 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, and
393 falls back to ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the
394 current real user id.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000395
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400396 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000397
398
399.. function:: getpgid(pid)
400
401 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000402 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000403
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400404 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000405
406.. function:: getpgrp()
407
408 .. index:: single: process; group
409
Benjamin Petersonf650e462010-05-06 23:03:05 +0000410 Return the id of the current process group.
411
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400412 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000413
414
415.. function:: getpid()
416
417 .. index:: single: process; id
418
Benjamin Petersonf650e462010-05-06 23:03:05 +0000419 Return the current process id.
420
Georg Brandl116aa622007-08-15 14:28:22 +0000421
422.. function:: getppid()
423
424 .. index:: single: process; id of parent
425
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000426 Return the parent's process id. When the parent process has exited, on Unix
427 the id returned is the one of the init process (1), on Windows it is still
428 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000429
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400430 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000431
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000432 .. versionchanged:: 3.2
433 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000434
Georg Brandl8a5555f2012-06-24 13:29:09 +0200435
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000436.. function:: getpriority(which, who)
437
438 .. index:: single: process; scheduling priority
439
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200440 Get program scheduling priority. The value *which* is one of
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000441 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
442 is interpreted relative to *which* (a process identifier for
443 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200444 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000445 (respectively) the calling process, the process group of the calling process,
446 or the real user ID of the calling process.
447
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400448 .. availability:: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000449
450 .. versionadded:: 3.3
451
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200452
453.. data:: PRIO_PROCESS
454 PRIO_PGRP
455 PRIO_USER
456
457 Parameters for the :func:`getpriority` and :func:`setpriority` functions.
458
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400459 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200460
461 .. versionadded:: 3.3
462
463
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000464.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000465
466 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000467 real, effective, and saved user ids.
468
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400469 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000470
Georg Brandl1b83a452009-11-28 11:12:26 +0000471 .. versionadded:: 3.2
472
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000473
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000474.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000475
476 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000477 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000478
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400479 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000480
Georg Brandl1b83a452009-11-28 11:12:26 +0000481 .. versionadded:: 3.2
482
Georg Brandl116aa622007-08-15 14:28:22 +0000483
484.. function:: getuid()
485
486 .. index:: single: user; id
487
Benjamin Peterson4bb09c82014-06-07 13:50:34 -0700488 Return the current process's real user id.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000489
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400490 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000491
492
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200493.. function:: initgroups(username, gid)
Georg Brandl116aa622007-08-15 14:28:22 +0000494
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200495 Call the system initgroups() to initialize the group access list with all of
496 the groups of which the specified username is a member, plus the specified
497 group id.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000498
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400499 .. availability:: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000500
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200501 .. versionadded:: 3.2
502
Georg Brandl116aa622007-08-15 14:28:22 +0000503
Georg Brandl18244152009-09-02 20:34:52 +0000504.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000505
506 .. index:: single: environment variables; setting
507
Georg Brandl18244152009-09-02 20:34:52 +0000508 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000509 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000510 :func:`popen` or :func:`fork` and :func:`execv`.
511
Victor Stinnerb8d12622020-01-24 14:05:48 +0100512 Assignments to items in ``os.environ`` are automatically translated into
513 corresponding calls to :func:`putenv`; however, calls to :func:`putenv`
514 don't update ``os.environ``, so it is actually preferable to assign to items
515 of ``os.environ``.
Georg Brandl116aa622007-08-15 14:28:22 +0000516
517 .. note::
518
Georg Brandlc575c902008-09-13 17:46:05 +0000519 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
Victor Stinnerb8d12622020-01-24 14:05:48 +0100520 cause memory leaks. Refer to the system documentation for :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000521
Saiyang Gou7514f4f2020-02-12 23:47:42 -0800522 .. audit-event:: os.putenv key,value os.putenv
523
Victor Stinnerb8d12622020-01-24 14:05:48 +0100524 .. versionchanged:: 3.9
525 The function is now always available.
Georg Brandl116aa622007-08-15 14:28:22 +0000526
527
528.. function:: setegid(egid)
529
Benjamin Petersonf650e462010-05-06 23:03:05 +0000530 Set the current process's effective group id.
531
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400532 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000533
534
535.. function:: seteuid(euid)
536
Benjamin Petersonf650e462010-05-06 23:03:05 +0000537 Set the current process's effective user id.
538
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400539 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000540
541
542.. function:: setgid(gid)
543
Benjamin Petersonf650e462010-05-06 23:03:05 +0000544 Set the current process' group id.
545
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400546 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000547
548
549.. function:: setgroups(groups)
550
551 Set the list of supplemental group ids associated with the current process to
552 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000553 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000554
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400555 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000556
Ned Deily2e209682012-04-30 11:14:02 -0700557 .. note:: On Mac OS X, the length of *groups* may not exceed the
558 system-defined maximum number of effective group ids, typically 16.
559 See the documentation for :func:`getgroups` for cases where it may not
560 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562.. function:: setpgrp()
563
Andrew Svetlova2fe3342012-08-11 21:14:08 +0300564 Call the system call :c:func:`setpgrp` or ``setpgrp(0, 0)`` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000565 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000566
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400567 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000568
569
570.. function:: setpgid(pid, pgrp)
571
Georg Brandl60203b42010-10-06 10:11:56 +0000572 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000573 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000574 for the semantics.
575
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400576 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
578
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000579.. function:: setpriority(which, who, priority)
580
581 .. index:: single: process; scheduling priority
582
583 Set program scheduling priority. The value *which* is one of
584 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
585 is interpreted relative to *which* (a process identifier for
586 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
587 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
588 (respectively) the calling process, the process group of the calling process,
589 or the real user ID of the calling process.
590 *priority* is a value in the range -20 to 19. The default priority is 0;
591 lower priorities cause more favorable scheduling.
592
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400593 .. availability:: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000594
595 .. versionadded:: 3.3
596
597
Georg Brandl116aa622007-08-15 14:28:22 +0000598.. function:: setregid(rgid, egid)
599
Benjamin Petersonf650e462010-05-06 23:03:05 +0000600 Set the current process's real and effective group ids.
601
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400602 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000603
Georg Brandl1b83a452009-11-28 11:12:26 +0000604
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000605.. function:: setresgid(rgid, egid, sgid)
606
607 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000608
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400609 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000610
Georg Brandl1b83a452009-11-28 11:12:26 +0000611 .. versionadded:: 3.2
612
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000613
614.. function:: setresuid(ruid, euid, suid)
615
616 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000617
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400618 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000619
Georg Brandl1b83a452009-11-28 11:12:26 +0000620 .. versionadded:: 3.2
621
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000622
623.. function:: setreuid(ruid, euid)
624
Benjamin Petersonf650e462010-05-06 23:03:05 +0000625 Set the current process's real and effective user ids.
626
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400627 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000628
Georg Brandl116aa622007-08-15 14:28:22 +0000629
630.. function:: getsid(pid)
631
Georg Brandl60203b42010-10-06 10:11:56 +0000632 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000633
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400634 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000635
Georg Brandl116aa622007-08-15 14:28:22 +0000636
637.. function:: setsid()
638
Georg Brandl60203b42010-10-06 10:11:56 +0000639 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000640
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400641 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000642
643
644.. function:: setuid(uid)
645
646 .. index:: single: user; id, setting
647
Benjamin Petersonf650e462010-05-06 23:03:05 +0000648 Set the current process's user id.
649
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400650 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000653.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000654.. function:: strerror(code)
655
656 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000657 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000658 error number, :exc:`ValueError` is raised.
659
Georg Brandl116aa622007-08-15 14:28:22 +0000660
Victor Stinnerb745a742010-05-18 17:17:23 +0000661.. data:: supports_bytes_environ
662
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200663 ``True`` if the native OS type of the environment is bytes (eg. ``False`` on
Victor Stinnerb745a742010-05-18 17:17:23 +0000664 Windows).
665
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000666 .. versionadded:: 3.2
667
Victor Stinnerb745a742010-05-18 17:17:23 +0000668
Georg Brandl116aa622007-08-15 14:28:22 +0000669.. function:: umask(mask)
670
Benjamin Petersonf650e462010-05-06 23:03:05 +0000671 Set the current numeric umask and return the previous umask.
672
Georg Brandl116aa622007-08-15 14:28:22 +0000673
674.. function:: uname()
675
676 .. index::
677 single: gethostname() (in module socket)
678 single: gethostbyaddr() (in module socket)
679
Larry Hastings605a62d2012-06-24 04:33:36 -0700680 Returns information identifying the current operating system.
681 The return value is an object with five attributes:
682
683 * :attr:`sysname` - operating system name
684 * :attr:`nodename` - name of machine on network (implementation-defined)
685 * :attr:`release` - operating system release
686 * :attr:`version` - operating system version
687 * :attr:`machine` - hardware identifier
688
689 For backwards compatibility, this object is also iterable, behaving
690 like a five-tuple containing :attr:`sysname`, :attr:`nodename`,
691 :attr:`release`, :attr:`version`, and :attr:`machine`
692 in that order.
693
694 Some systems truncate :attr:`nodename` to 8 characters or to the
Georg Brandl116aa622007-08-15 14:28:22 +0000695 leading component; a better way to get the hostname is
696 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000697 ``socket.gethostbyaddr(socket.gethostname())``.
698
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400699 .. availability:: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000700
Larry Hastings605a62d2012-06-24 04:33:36 -0700701 .. versionchanged:: 3.3
702 Return type changed from a tuple to a tuple-like object
703 with named attributes.
704
Georg Brandl116aa622007-08-15 14:28:22 +0000705
Georg Brandl18244152009-09-02 20:34:52 +0000706.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000707
708 .. index:: single: environment variables; deleting
709
Georg Brandl18244152009-09-02 20:34:52 +0000710 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000711 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000712 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000713
Victor Stinnerb8d12622020-01-24 14:05:48 +0100714 Deletion of items in ``os.environ`` is automatically translated into a
715 corresponding call to :func:`unsetenv`; however, calls to :func:`unsetenv`
716 don't update ``os.environ``, so it is actually preferable to delete items of
717 ``os.environ``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000718
Saiyang Gou7514f4f2020-02-12 23:47:42 -0800719 .. audit-event:: os.unsetenv key os.unsetenv
720
Victor Stinner161e7b32020-01-24 11:53:44 +0100721 .. versionchanged:: 3.9
Victor Stinnerb8d12622020-01-24 14:05:48 +0100722 The function is now always available and is also available on Windows.
Victor Stinner161e7b32020-01-24 11:53:44 +0100723
Georg Brandl116aa622007-08-15 14:28:22 +0000724
725.. _os-newstreams:
726
727File Object Creation
728--------------------
729
Steve Dowerb82e17e2019-05-23 08:45:22 -0700730These functions create new :term:`file objects <file object>`. (See also
Georg Brandlb2462e22012-06-24 13:24:56 +0200731:func:`~os.open` for opening file descriptors.)
Georg Brandl116aa622007-08-15 14:28:22 +0000732
733
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300734.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000735
Georg Brandlb2462e22012-06-24 13:24:56 +0200736 Return an open file object connected to the file descriptor *fd*. This is an
737 alias of the :func:`open` built-in function and accepts the same arguments.
738 The only difference is that the first argument of :func:`fdopen` must always
739 be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000740
Georg Brandl116aa622007-08-15 14:28:22 +0000741
Georg Brandl116aa622007-08-15 14:28:22 +0000742.. _os-fd-ops:
743
744File Descriptor Operations
745--------------------------
746
747These functions operate on I/O streams referenced using file descriptors.
748
749File descriptors are small integers corresponding to a file that has been opened
750by the current process. For example, standard input is usually file descriptor
7510, standard output is 1, and standard error is 2. Further files opened by a
752process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
753is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
754by file descriptors.
755
Serhiy Storchakadab83542013-10-13 20:12:43 +0300756The :meth:`~io.IOBase.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000757associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000758descriptor directly will bypass the file object methods, ignoring aspects such
759as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000760
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000761
Georg Brandl116aa622007-08-15 14:28:22 +0000762.. function:: close(fd)
763
Benjamin Petersonf650e462010-05-06 23:03:05 +0000764 Close file descriptor *fd*.
765
Georg Brandl116aa622007-08-15 14:28:22 +0000766 .. note::
767
768 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000769 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000770 object" returned by the built-in function :func:`open` or by :func:`popen` or
Serhiy Storchakadab83542013-10-13 20:12:43 +0300771 :func:`fdopen`, use its :meth:`~io.IOBase.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000772
773
Christian Heimesfdab48e2008-01-20 09:06:41 +0000774.. function:: closerange(fd_low, fd_high)
775
776 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200777 ignoring errors. Equivalent to (but much faster than)::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000778
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000779 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000780 try:
781 os.close(fd)
782 except OSError:
783 pass
784
Christian Heimesfdab48e2008-01-20 09:06:41 +0000785
Pablo Galindoaac4d032019-05-31 19:39:47 +0100786.. function:: copy_file_range(src, dst, count, offset_src=None, offset_dst=None)
787
788 Copy *count* bytes from file descriptor *src*, starting from offset
789 *offset_src*, to file descriptor *dst*, starting from offset *offset_dst*.
790 If *offset_src* is None, then *src* is read from the current position;
791 respectively for *offset_dst*. The files pointed by *src* and *dst*
792 must reside in the same filesystem, otherwise an :exc:`OSError` is
793 raised with :attr:`~OSError.errno` set to :data:`errno.EXDEV`.
794
795 This copy is done without the additional cost of transferring data
796 from the kernel to user space and then back into the kernel. Additionally,
797 some filesystems could implement extra optimizations. The copy is done as if
798 both files are opened as binary.
799
800 The return value is the amount of bytes copied. This could be less than the
801 amount requested.
802
803 .. availability:: Linux kernel >= 4.5 or glibc >= 2.27.
804
805 .. versionadded:: 3.8
806
807
Georg Brandl81f11302007-12-21 08:45:42 +0000808.. function:: device_encoding(fd)
809
810 Return a string describing the encoding of the device associated with *fd*
811 if it is connected to a terminal; else return :const:`None`.
812
Victor Stinner35297182020-11-04 11:20:10 +0100813 On Unix, if the :ref:`Python UTF-8 Mode <utf8-mode>` is enabled, return
814 ``'UTF-8'`` rather than the device encoding.
815
816 .. versionchanged:: 3.10
817 On Unix, the function now implements the Python UTF-8 Mode.
818
Georg Brandl81f11302007-12-21 08:45:42 +0000819
Georg Brandl116aa622007-08-15 14:28:22 +0000820.. function:: dup(fd)
821
Victor Stinnerdaf45552013-08-28 00:53:59 +0200822 Return a duplicate of file descriptor *fd*. The new file descriptor is
823 :ref:`non-inheritable <fd_inheritance>`.
824
825 On Windows, when duplicating a standard stream (0: stdin, 1: stdout,
826 2: stderr), the new file descriptor is :ref:`inheritable
827 <fd_inheritance>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000828
Victor Stinnerdaf45552013-08-28 00:53:59 +0200829 .. versionchanged:: 3.4
830 The new file descriptor is now non-inheritable.
Georg Brandl116aa622007-08-15 14:28:22 +0000831
Victor Stinnerdaf45552013-08-28 00:53:59 +0200832
833.. function:: dup2(fd, fd2, inheritable=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000834
Benjamin Petersonbbdb17d2017-12-29 13:13:06 -0800835 Duplicate file descriptor *fd* to *fd2*, closing the latter first if
836 necessary. Return *fd2*. The new file descriptor is :ref:`inheritable
837 <fd_inheritance>` by default or non-inheritable if *inheritable*
838 is ``False``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000839
Victor Stinnerdaf45552013-08-28 00:53:59 +0200840 .. versionchanged:: 3.4
841 Add the optional *inheritable* parameter.
842
Benjamin Petersonbbdb17d2017-12-29 13:13:06 -0800843 .. versionchanged:: 3.7
844 Return *fd2* on success. Previously, ``None`` was always returned.
845
Georg Brandl116aa622007-08-15 14:28:22 +0000846
Christian Heimes4e30a842007-11-30 22:12:06 +0000847.. function:: fchmod(fd, mode)
848
Georg Brandlb9df00c2012-06-24 12:38:14 +0200849 Change the mode of the file given by *fd* to the numeric *mode*. See the
Georg Brandl4d399a42012-06-25 07:40:32 +0200850 docs for :func:`chmod` for possible values of *mode*. As of Python 3.3, this
Georg Brandlb9df00c2012-06-24 12:38:14 +0200851 is equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000852
Saiyang Gou7514f4f2020-02-12 23:47:42 -0800853 .. audit-event:: os.chmod path,mode,dir_fd os.fchmod
854
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400855 .. availability:: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000856
857
858.. function:: fchown(fd, uid, gid)
859
860 Change the owner and group id of the file given by *fd* to the numeric *uid*
Georg Brandlb9df00c2012-06-24 12:38:14 +0200861 and *gid*. To leave one of the ids unchanged, set it to -1. See
Georg Brandl4d399a42012-06-25 07:40:32 +0200862 :func:`chown`. As of Python 3.3, this is equivalent to ``os.chown(fd, uid,
Georg Brandlb9df00c2012-06-24 12:38:14 +0200863 gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000864
Saiyang Gou7514f4f2020-02-12 23:47:42 -0800865 .. audit-event:: os.chown path,uid,gid,dir_fd os.fchown
866
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400867 .. availability:: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000868
869
Georg Brandl116aa622007-08-15 14:28:22 +0000870.. function:: fdatasync(fd)
871
872 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000873 metadata.
874
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400875 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000876
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000877 .. note::
878 This function is not available on MacOS.
879
Georg Brandl116aa622007-08-15 14:28:22 +0000880
881.. function:: fpathconf(fd, name)
882
883 Return system configuration information relevant to an open file. *name*
884 specifies the configuration value to retrieve; it may be a string which is the
885 name of a defined system value; these names are specified in a number of
886 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
887 additional names as well. The names known to the host operating system are
888 given in the ``pathconf_names`` dictionary. For configuration variables not
889 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000890
891 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
892 specific value for *name* is not supported by the host system, even if it is
893 included in ``pathconf_names``, an :exc:`OSError` is raised with
894 :const:`errno.EINVAL` for the error number.
895
Georg Brandl4d399a42012-06-25 07:40:32 +0200896 As of Python 3.3, this is equivalent to ``os.pathconf(fd, name)``.
Georg Brandl306336b2012-06-24 12:55:33 +0200897
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400898 .. availability:: Unix.
Senthil Kumaran2a97cee2013-09-19 00:08:56 -0700899
Georg Brandl116aa622007-08-15 14:28:22 +0000900
Victor Stinner4195b5c2012-02-08 23:03:19 +0100901.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000902
Victor Stinner6d4f4fe2014-07-24 12:42:16 +0200903 Get the status of the file descriptor *fd*. Return a :class:`stat_result`
904 object.
905
906 As of Python 3.3, this is equivalent to ``os.stat(fd)``.
907
908 .. seealso::
909
Berker Peksag2034caa2015-04-27 13:53:28 +0300910 The :func:`.stat` function.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000911
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200912
Georg Brandl116aa622007-08-15 14:28:22 +0000913.. function:: fstatvfs(fd)
914
Georg Brandlb9df00c2012-06-24 12:38:14 +0200915 Return information about the filesystem containing the file associated with
Georg Brandl4d399a42012-06-25 07:40:32 +0200916 file descriptor *fd*, like :func:`statvfs`. As of Python 3.3, this is
Georg Brandlb9df00c2012-06-24 12:38:14 +0200917 equivalent to ``os.statvfs(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000918
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400919 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000920
921
922.. function:: fsync(fd)
923
924 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000925 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000926
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000927 If you're starting with a buffered Python :term:`file object` *f*, first do
928 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
929 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000930
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400931 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000932
933
934.. function:: ftruncate(fd, length)
935
Georg Brandl306336b2012-06-24 12:55:33 +0200936 Truncate the file corresponding to file descriptor *fd*, so that it is at
Georg Brandl4d399a42012-06-25 07:40:32 +0200937 most *length* bytes in size. As of Python 3.3, this is equivalent to
Georg Brandl306336b2012-06-24 12:55:33 +0200938 ``os.truncate(fd, length)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000939
Steve Dower44f91c32019-06-27 10:47:59 -0700940 .. audit-event:: os.truncate fd,length os.ftruncate
Steve Dowerb82e17e2019-05-23 08:45:22 -0700941
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400942 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000943
Steve Dowerfe0a41a2015-03-20 19:50:46 -0700944 .. versionchanged:: 3.5
945 Added support for Windows
Georg Brandl116aa622007-08-15 14:28:22 +0000946
Steve Dowerb82e17e2019-05-23 08:45:22 -0700947
Victor Stinner1db9e7b2014-07-29 22:32:47 +0200948.. function:: get_blocking(fd)
949
950 Get the blocking mode of the file descriptor: ``False`` if the
951 :data:`O_NONBLOCK` flag is set, ``True`` if the flag is cleared.
952
953 See also :func:`set_blocking` and :meth:`socket.socket.setblocking`.
954
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400955 .. availability:: Unix.
Victor Stinner1db9e7b2014-07-29 22:32:47 +0200956
957 .. versionadded:: 3.5
958
Steve Dowerb82e17e2019-05-23 08:45:22 -0700959
Georg Brandl116aa622007-08-15 14:28:22 +0000960.. function:: isatty(fd)
961
962 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000963 tty(-like) device, else ``False``.
964
Georg Brandl116aa622007-08-15 14:28:22 +0000965
Ross Lagerwall7807c352011-03-17 20:20:30 +0200966.. function:: lockf(fd, cmd, len)
967
968 Apply, test or remove a POSIX lock on an open file descriptor.
969 *fd* is an open file descriptor.
970 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
971 :data:`F_ULOCK` or :data:`F_TEST`.
972 *len* specifies the section of the file to lock.
973
Saiyang Gou7514f4f2020-02-12 23:47:42 -0800974 .. audit-event:: os.lockf fd,cmd,len os.lockf
975
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400976 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +0200977
978 .. versionadded:: 3.3
979
980
981.. data:: F_LOCK
982 F_TLOCK
983 F_ULOCK
984 F_TEST
985
986 Flags that specify what action :func:`lockf` will take.
987
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400988 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +0200989
990 .. versionadded:: 3.3
991
Georg Brandlf62445a2012-06-24 13:31:20 +0200992
Georg Brandl116aa622007-08-15 14:28:22 +0000993.. function:: lseek(fd, pos, how)
994
Christian Heimesfaf2f632008-01-06 16:59:19 +0000995 Set the current position of file descriptor *fd* to position *pos*, modified
996 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
997 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
Serhiy Storchakadab83542013-10-13 20:12:43 +0300998 current position; :const:`SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100999 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001000
Georg Brandl116aa622007-08-15 14:28:22 +00001001
Georg Brandl8569e582010-05-19 20:57:08 +00001002.. data:: SEEK_SET
1003 SEEK_CUR
1004 SEEK_END
1005
1006 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandl8a5555f2012-06-24 13:29:09 +02001007 respectively.
1008
Jesus Cea94363612012-06-22 18:32:07 +02001009 .. versionadded:: 3.3
1010 Some operating systems could support additional values, like
1011 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
1012
Georg Brandl8569e582010-05-19 20:57:08 +00001013
Martin Panterbf19d162015-09-09 01:01:13 +00001014.. function:: open(path, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001015
Martin Panterbf19d162015-09-09 01:01:13 +00001016 Open the file *path* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -07001017 its mode according to *mode*. When computing *mode*, the current umask value
1018 is first masked out. Return the file descriptor for the newly opened file.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001019 The new file descriptor is :ref:`non-inheritable <fd_inheritance>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001020
1021 For a description of the flag and mode values, see the C run-time documentation;
1022 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Andrew Kuchling4921a082013-06-21 11:49:57 -04001023 the :mod:`os` module. In particular, on Windows adding
Georg Brandl8569e582010-05-19 20:57:08 +00001024 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001025
Georg Brandl50c40002012-06-24 11:45:20 +02001026 This function can support :ref:`paths relative to directory descriptors
Andrew Kuchling4921a082013-06-21 11:49:57 -04001027 <dir_fd>` with the *dir_fd* parameter.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001028
Steve Dower44f91c32019-06-27 10:47:59 -07001029 .. audit-event:: open path,mode,flags os.open
Steve Dowerb82e17e2019-05-23 08:45:22 -07001030
Victor Stinnerdaf45552013-08-28 00:53:59 +02001031 .. versionchanged:: 3.4
1032 The new file descriptor is now non-inheritable.
1033
Georg Brandl116aa622007-08-15 14:28:22 +00001034 .. note::
1035
Georg Brandl502d9a52009-07-26 15:02:41 +00001036 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +00001037 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bcf2010-07-13 14:47:01 +00001038 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +00001039 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +00001040
Antoine Pitrouf65132d2011-02-25 23:25:17 +00001041 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07001042 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +00001043
Victor Stinnera766ddf2015-03-26 23:50:57 +01001044 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001045 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001046 exception, the function now retries the system call instead of raising an
1047 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1048
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001049 .. versionchanged:: 3.6
1050 Accepts a :term:`path-like object`.
1051
Andrew Kuchling4921a082013-06-21 11:49:57 -04001052The following constants are options for the *flags* parameter to the
1053:func:`~os.open` function. They can be combined using the bitwise OR operator
1054``|``. Some of them are not available on all platforms. For descriptions of
1055their availability and use, consult the :manpage:`open(2)` manual page on Unix
Georg Brandl5d941342016-02-26 19:37:12 +01001056or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001057
1058
1059.. data:: O_RDONLY
1060 O_WRONLY
1061 O_RDWR
1062 O_APPEND
1063 O_CREAT
1064 O_EXCL
1065 O_TRUNC
1066
Vinay Sajipe4946e72016-09-11 15:15:59 +01001067 The above constants are available on Unix and Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001068
1069
1070.. data:: O_DSYNC
1071 O_RSYNC
1072 O_SYNC
1073 O_NDELAY
1074 O_NONBLOCK
1075 O_NOCTTY
Andrew Kuchling4921a082013-06-21 11:49:57 -04001076 O_CLOEXEC
1077
Vinay Sajipe4946e72016-09-11 15:15:59 +01001078 The above constants are only available on Unix.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001079
1080 .. versionchanged:: 3.3
1081 Add :data:`O_CLOEXEC` constant.
1082
1083.. data:: O_BINARY
1084 O_NOINHERIT
1085 O_SHORT_LIVED
1086 O_TEMPORARY
1087 O_RANDOM
1088 O_SEQUENTIAL
1089 O_TEXT
1090
Vinay Sajipe4946e72016-09-11 15:15:59 +01001091 The above constants are only available on Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001092
Dong-hee Naf917c242021-02-04 08:32:55 +09001093.. data:: O_EVTONLY
1094 O_FSYNC
1095 O_SYMLINK
1096 O_NOFOLLOW_ANY
1097
1098 The above constants are only available on macOS.
1099
1100 .. versionchanged:: 3.10
1101 Add :data:`O_EVTONLY`, :data:`O_FSYNC`, :data:`O_SYMLINK`
1102 and :data:`O_NOFOLLOW_ANY` constants.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001103
1104.. data:: O_ASYNC
1105 O_DIRECT
1106 O_DIRECTORY
1107 O_NOFOLLOW
1108 O_NOATIME
1109 O_PATH
Christian Heimes177b3f92013-08-16 14:35:09 +02001110 O_TMPFILE
Vinay Sajipe4946e72016-09-11 15:15:59 +01001111 O_SHLOCK
1112 O_EXLOCK
Andrew Kuchling4921a082013-06-21 11:49:57 -04001113
Vinay Sajipe4946e72016-09-11 15:15:59 +01001114 The above constants are extensions and not present if they are not defined by
Andrew Kuchling4921a082013-06-21 11:49:57 -04001115 the C library.
1116
Christian Heimesd88f7352013-08-16 14:37:50 +02001117 .. versionchanged:: 3.4
Larry Hastings3732ed22014-03-15 21:13:56 -07001118 Add :data:`O_PATH` on systems that support it.
1119 Add :data:`O_TMPFILE`, only available on Linux Kernel 3.11
1120 or newer.
Christian Heimesd88f7352013-08-16 14:37:50 +02001121
Antoine Pitrouf65132d2011-02-25 23:25:17 +00001122
Georg Brandl116aa622007-08-15 14:28:22 +00001123.. function:: openpty()
1124
1125 .. index:: module: pty
1126
Victor Stinnerdaf45552013-08-28 00:53:59 +02001127 Open a new pseudo-terminal pair. Return a pair of file descriptors
1128 ``(master, slave)`` for the pty and the tty, respectively. The new file
1129 descriptors are :ref:`non-inheritable <fd_inheritance>`. For a (slightly) more
1130 portable approach, use the :mod:`pty` module.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001131
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001132 .. availability:: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001133
Victor Stinnerdaf45552013-08-28 00:53:59 +02001134 .. versionchanged:: 3.4
1135 The new file descriptors are now non-inheritable.
1136
Georg Brandl116aa622007-08-15 14:28:22 +00001137
1138.. function:: pipe()
1139
Victor Stinnerdaf45552013-08-28 00:53:59 +02001140 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for
Victor Stinner05f31bf2013-11-06 01:48:45 +01001141 reading and writing, respectively. The new file descriptor is
Victor Stinnerdaf45552013-08-28 00:53:59 +02001142 :ref:`non-inheritable <fd_inheritance>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001143
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001144 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001145
Victor Stinnerdaf45552013-08-28 00:53:59 +02001146 .. versionchanged:: 3.4
1147 The new file descriptors are now non-inheritable.
1148
Georg Brandl116aa622007-08-15 14:28:22 +00001149
Charles-François Natali368f34b2011-06-06 19:49:47 +02001150.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +02001151
1152 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +02001153 *flags* can be constructed by ORing together one or more of these values:
1154 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +02001155 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
1156 respectively.
1157
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001158 .. availability:: some flavors of Unix.
Charles-François Natalidaafdd52011-05-29 20:07:40 +02001159
1160 .. versionadded:: 3.3
1161
1162
Ross Lagerwall7807c352011-03-17 20:20:30 +02001163.. function:: posix_fallocate(fd, offset, len)
1164
1165 Ensures that enough disk space is allocated for the file specified by *fd*
1166 starting from *offset* and continuing for *len* bytes.
1167
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001168 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001169
1170 .. versionadded:: 3.3
1171
1172
1173.. function:: posix_fadvise(fd, offset, len, advice)
1174
1175 Announces an intention to access data in a specific pattern thus allowing
1176 the kernel to make optimizations.
1177 The advice applies to the region of the file specified by *fd* starting at
1178 *offset* and continuing for *len* bytes.
1179 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
1180 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
1181 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
1182
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001183 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001184
1185 .. versionadded:: 3.3
1186
1187
1188.. data:: POSIX_FADV_NORMAL
1189 POSIX_FADV_SEQUENTIAL
1190 POSIX_FADV_RANDOM
1191 POSIX_FADV_NOREUSE
1192 POSIX_FADV_WILLNEED
1193 POSIX_FADV_DONTNEED
1194
1195 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
1196 the access pattern that is likely to be used.
1197
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001198 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001199
1200 .. versionadded:: 3.3
1201
1202
Pablo Galindo02e2a082018-05-31 00:00:04 +01001203.. function:: pread(fd, n, offset)
Ross Lagerwall7807c352011-03-17 20:20:30 +02001204
Pablo Galindo02e2a082018-05-31 00:00:04 +01001205 Read at most *n* bytes from file descriptor *fd* at a position of *offset*,
1206 leaving the file offset unchanged.
1207
1208 Return a bytestring containing the bytes read. If the end of the file
1209 referred to by *fd* has been reached, an empty bytes object is returned.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001210
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001211 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001212
1213 .. versionadded:: 3.3
1214
1215
Pablo Galindo02e2a082018-05-31 00:00:04 +01001216.. function:: preadv(fd, buffers, offset, flags=0)
1217
1218 Read from a file descriptor *fd* at a position of *offset* into mutable
1219 :term:`bytes-like objects <bytes-like object>` *buffers*, leaving the file
1220 offset unchanged. Transfer data into each buffer until it is full and then
1221 move on to the next buffer in the sequence to hold the rest of the data.
1222
1223 The flags argument contains a bitwise OR of zero or more of the following
1224 flags:
1225
1226 - :data:`RWF_HIPRI`
1227 - :data:`RWF_NOWAIT`
1228
1229 Return the total number of bytes actually read which can be less than the
1230 total capacity of all the objects.
1231
1232 The operating system may set a limit (:func:`sysconf` value
1233 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
1234
1235 Combine the functionality of :func:`os.readv` and :func:`os.pread`.
1236
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001237 .. availability:: Linux 2.6.30 and newer, FreeBSD 6.0 and newer,
Batuhan Taskayacae22752020-05-17 01:36:40 +03001238 OpenBSD 2.7 and newer, AIX 7.1 and newer. Using flags requires
1239 Linux 4.6 or newer.
Pablo Galindo02e2a082018-05-31 00:00:04 +01001240
1241 .. versionadded:: 3.7
1242
1243
1244.. data:: RWF_NOWAIT
1245
1246 Do not wait for data which is not immediately available. If this flag is
1247 specified, the system call will return instantly if it would have to read
1248 data from the backing storage or wait for a lock.
1249
1250 If some data was successfully read, it will return the number of bytes read.
1251 If no bytes were read, it will return ``-1`` and set errno to
1252 :data:`errno.EAGAIN`.
1253
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001254 .. availability:: Linux 4.14 and newer.
Pablo Galindo02e2a082018-05-31 00:00:04 +01001255
1256 .. versionadded:: 3.7
1257
1258
1259.. data:: RWF_HIPRI
1260
1261 High priority read/write. Allows block-based filesystems to use polling
1262 of the device, which provides lower latency, but may use additional
1263 resources.
1264
1265 Currently, on Linux, this feature is usable only on a file descriptor opened
1266 using the :data:`O_DIRECT` flag.
1267
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001268 .. availability:: Linux 4.6 and newer.
Pablo Galindo02e2a082018-05-31 00:00:04 +01001269
1270 .. versionadded:: 3.7
1271
1272
Jesus Cea67503c52014-10-20 16:18:24 +02001273.. function:: pwrite(fd, str, offset)
Ross Lagerwall7807c352011-03-17 20:20:30 +02001274
Pablo Galindo02e2a082018-05-31 00:00:04 +01001275 Write the bytestring in *str* to file descriptor *fd* at position of
1276 *offset*, leaving the file offset unchanged.
1277
1278 Return the number of bytes actually written.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001279
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001280 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001281
1282 .. versionadded:: 3.3
1283
1284
Pablo Galindo4defba32018-01-27 16:16:37 +00001285.. function:: pwritev(fd, buffers, offset, flags=0)
1286
Pablo Galindo02e2a082018-05-31 00:00:04 +01001287 Write the *buffers* contents to file descriptor *fd* at a offset *offset*,
1288 leaving the file offset unchanged. *buffers* must be a sequence of
1289 :term:`bytes-like objects <bytes-like object>`. Buffers are processed in
1290 array order. Entire contents of the first buffer is written before
1291 proceeding to the second, and so on.
Pablo Galindo4defba32018-01-27 16:16:37 +00001292
Pablo Galindo02e2a082018-05-31 00:00:04 +01001293 The flags argument contains a bitwise OR of zero or more of the following
Pablo Galindo4defba32018-01-27 16:16:37 +00001294 flags:
1295
Pablo Galindo02e2a082018-05-31 00:00:04 +01001296 - :data:`RWF_DSYNC`
1297 - :data:`RWF_SYNC`
YoSTEALTH76ef2552020-05-27 15:32:22 -06001298 - :data:`RWF_APPEND`
Pablo Galindo4defba32018-01-27 16:16:37 +00001299
Pablo Galindo02e2a082018-05-31 00:00:04 +01001300 Return the total number of bytes actually written.
Pablo Galindo4defba32018-01-27 16:16:37 +00001301
Pablo Galindo02e2a082018-05-31 00:00:04 +01001302 The operating system may set a limit (:func:`sysconf` value
1303 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
1304
1305 Combine the functionality of :func:`os.writev` and :func:`os.pwrite`.
1306
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001307 .. availability:: Linux 2.6.30 and newer, FreeBSD 6.0 and newer,
Batuhan Taskayacae22752020-05-17 01:36:40 +03001308 OpenBSD 2.7 and newer, AIX 7.1 and newer. Using flags requires
1309 Linux 4.7 or newer.
Pablo Galindo4defba32018-01-27 16:16:37 +00001310
1311 .. versionadded:: 3.7
1312
Pablo Galindo02e2a082018-05-31 00:00:04 +01001313
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001314.. data:: RWF_DSYNC
1315
YoSTEALTH76ef2552020-05-27 15:32:22 -06001316 Provide a per-write equivalent of the :data:`O_DSYNC` :func:`os.open` flag.
1317 This flag effect applies only to the data range written by the system call.
Pablo Galindo4defba32018-01-27 16:16:37 +00001318
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001319 .. availability:: Linux 4.7 and newer.
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001320
Pablo Galindo4defba32018-01-27 16:16:37 +00001321 .. versionadded:: 3.7
1322
Pablo Galindo02e2a082018-05-31 00:00:04 +01001323
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001324.. data:: RWF_SYNC
1325
YoSTEALTH76ef2552020-05-27 15:32:22 -06001326 Provide a per-write equivalent of the :data:`O_SYNC` :func:`os.open` flag.
1327 This flag effect applies only to the data range written by the system call.
Pablo Galindo4defba32018-01-27 16:16:37 +00001328
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001329 .. availability:: Linux 4.7 and newer.
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001330
Pablo Galindo4defba32018-01-27 16:16:37 +00001331 .. versionadded:: 3.7
1332
1333
YoSTEALTH76ef2552020-05-27 15:32:22 -06001334.. data:: RWF_APPEND
1335
Andre Delfino96a09df2020-12-17 14:25:55 -03001336 Provide a per-write equivalent of the :data:`O_APPEND` :func:`os.open`
1337 flag. This flag is meaningful only for :func:`os.pwritev`, and its
1338 effect applies only to the data range written by the system call. The
1339 *offset* argument does not affect the write operation; the data is always
1340 appended to the end of the file. However, if the *offset* argument is
1341 ``-1``, the current file *offset* is updated.
YoSTEALTH76ef2552020-05-27 15:32:22 -06001342
1343 .. availability:: Linux 4.16 and newer.
1344
1345 .. versionadded:: 3.10
1346
1347
Georg Brandl116aa622007-08-15 14:28:22 +00001348.. function:: read(fd, n)
1349
Pablo Galindo02e2a082018-05-31 00:00:04 +01001350 Read at most *n* bytes from file descriptor *fd*.
1351
1352 Return a bytestring containing the bytes read. If the end of the file
1353 referred to by *fd* has been reached, an empty bytes object is returned.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001354
Georg Brandl116aa622007-08-15 14:28:22 +00001355 .. note::
1356
1357 This function is intended for low-level I/O and must be applied to a file
Georg Brandlb2462e22012-06-24 13:24:56 +02001358 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a
1359 "file object" returned by the built-in function :func:`open` or by
1360 :func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its
1361 :meth:`~file.read` or :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +00001362
Victor Stinnera766ddf2015-03-26 23:50:57 +01001363 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001364 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001365 exception, the function now retries the system call instead of raising an
1366 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1367
Georg Brandl116aa622007-08-15 14:28:22 +00001368
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001369.. function:: sendfile(out_fd, in_fd, offset, count)
Serhiy Storchaka2b560312020-04-18 19:14:10 +03001370 sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001371
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001372 Copy *count* bytes from file descriptor *in_fd* to file descriptor *out_fd*
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001373 starting at *offset*.
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001374 Return the number of bytes sent. When EOF is reached return ``0``.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001375
1376 The first function notation is supported by all platforms that define
1377 :func:`sendfile`.
1378
1379 On Linux, if *offset* is given as ``None``, the bytes are read from the
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001380 current position of *in_fd* and the position of *in_fd* is updated.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001381
1382 The second case may be used on Mac OS X and FreeBSD where *headers* and
1383 *trailers* are arbitrary sequences of buffers that are written before and
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001384 after the data from *in_fd* is written. It returns the same as the first case.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001385
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001386 On Mac OS X and FreeBSD, a value of ``0`` for *count* specifies to send until
1387 the end of *in_fd* is reached.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001388
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001389 All platforms support sockets as *out_fd* file descriptor, and some platforms
Charles-Francois Natalia771a1b2013-05-01 15:12:20 +02001390 allow other types (e.g. regular file, pipe) as well.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001391
Giampaolo Rodola'409569b2014-04-24 18:09:21 +02001392 Cross-platform applications should not use *headers*, *trailers* and *flags*
1393 arguments.
1394
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001395 .. availability:: Unix.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001396
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001397 .. note::
1398
Benjamin Peterson0ce95372014-06-15 18:30:27 -07001399 For a higher-level wrapper of :func:`sendfile`, see
Martin Panter3133a9f2015-09-11 23:44:18 +00001400 :meth:`socket.socket.sendfile`.
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001401
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001402 .. versionadded:: 3.3
1403
Serhiy Storchaka140a7d12019-10-13 11:59:31 +03001404 .. versionchanged:: 3.9
1405 Parameters *out* and *in* was renamed to *out_fd* and *in_fd*.
1406
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001407
Victor Stinner1db9e7b2014-07-29 22:32:47 +02001408.. function:: set_blocking(fd, blocking)
1409
1410 Set the blocking mode of the specified file descriptor. Set the
1411 :data:`O_NONBLOCK` flag if blocking is ``False``, clear the flag otherwise.
1412
1413 See also :func:`get_blocking` and :meth:`socket.socket.setblocking`.
1414
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001415 .. availability:: Unix.
Victor Stinner1db9e7b2014-07-29 22:32:47 +02001416
1417 .. versionadded:: 3.5
1418
1419
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001420.. data:: SF_NODISKIO
1421 SF_MNOWAIT
1422 SF_SYNC
1423
1424 Parameters to the :func:`sendfile` function, if the implementation supports
1425 them.
1426
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001427 .. availability:: Unix.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001428
1429 .. versionadded:: 3.3
1430
1431
Pablo Galindoa57b3d32020-11-17 00:00:38 +00001432.. function:: splice(src, dst, count, offset_src=None, offset_dst=None)
1433
1434 Transfer *count* bytes from file descriptor *src*, starting from offset
1435 *offset_src*, to file descriptor *dst*, starting from offset *offset_dst*.
1436 At least one of the file descriptors must refer to a pipe. If *offset_src*
1437 is None, then *src* is read from the current position; respectively for
1438 *offset_dst*. The offset associated to the file descriptor that refers to a
1439 pipe must be ``None``. The files pointed by *src* and *dst* must reside in
1440 the same filesystem, otherwise an :exc:`OSError` is raised with
1441 :attr:`~OSError.errno` set to :data:`errno.EXDEV`.
1442
1443 This copy is done without the additional cost of transferring data
1444 from the kernel to user space and then back into the kernel. Additionally,
1445 some filesystems could implement extra optimizations. The copy is done as if
1446 both files are opened as binary.
1447
1448 Upon successful completion, returns the number of bytes spliced to or from
1449 the pipe. A return value of 0 means end of input. If *src* refers to a
1450 pipe, then this means that there was no data to transfer, and it would not
1451 make sense to block because there are no writers connected to the write end
1452 of the pipe.
1453
Pablo Galindoe59958f2020-11-17 19:57:03 +00001454 .. availability:: Linux kernel >= 2.6.17 and glibc >= 2.5
Pablo Galindoa57b3d32020-11-17 00:00:38 +00001455
1456 .. versionadded:: 3.10
1457
1458
1459.. data:: SPLICE_F_MOVE
1460 SPLICE_F_NONBLOCK
1461 SPLICE_F_MORE
1462
Pablo Galindofa966082020-11-17 18:13:50 +00001463 .. versionadded:: 3.10
Pablo Galindoa57b3d32020-11-17 00:00:38 +00001464
Ross Lagerwall7807c352011-03-17 20:20:30 +02001465.. function:: readv(fd, buffers)
1466
Benjamin Petersone83ed432014-01-18 22:54:59 -05001467 Read from a file descriptor *fd* into a number of mutable :term:`bytes-like
Pablo Galindo02e2a082018-05-31 00:00:04 +01001468 objects <bytes-like object>` *buffers*. Transfer data into each buffer until
1469 it is full and then move on to the next buffer in the sequence to hold the
1470 rest of the data.
1471
1472 Return the total number of bytes actually read which can be less than the
1473 total capacity of all the objects.
1474
1475 The operating system may set a limit (:func:`sysconf` value
1476 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001477
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001478 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001479
1480 .. versionadded:: 3.3
1481
1482
Georg Brandl116aa622007-08-15 14:28:22 +00001483.. function:: tcgetpgrp(fd)
1484
1485 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001486 file descriptor as returned by :func:`os.open`).
1487
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001488 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001489
1490
1491.. function:: tcsetpgrp(fd, pg)
1492
1493 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001494 descriptor as returned by :func:`os.open`) to *pg*.
1495
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001496 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001497
1498
1499.. function:: ttyname(fd)
1500
1501 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001502 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001503 exception is raised.
1504
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001505 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001506
1507
1508.. function:: write(fd, str)
1509
Pablo Galindo02e2a082018-05-31 00:00:04 +01001510 Write the bytestring in *str* to file descriptor *fd*.
1511
1512 Return the number of bytes actually written.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001513
Georg Brandl116aa622007-08-15 14:28:22 +00001514 .. note::
1515
1516 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001517 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001518 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001519 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1520 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001521
Victor Stinnera766ddf2015-03-26 23:50:57 +01001522 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001523 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001524 exception, the function now retries the system call instead of raising an
1525 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1526
Georg Brandl8569e582010-05-19 20:57:08 +00001527
Ross Lagerwall7807c352011-03-17 20:20:30 +02001528.. function:: writev(fd, buffers)
1529
Pablo Galindo02e2a082018-05-31 00:00:04 +01001530 Write the contents of *buffers* to file descriptor *fd*. *buffers* must be
1531 a sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are
1532 processed in array order. Entire contents of the first buffer is written
1533 before proceeding to the second, and so on.
Senthil Kumarand37de3c2016-06-18 11:21:50 -07001534
Pablo Galindo02e2a082018-05-31 00:00:04 +01001535 Returns the total number of bytes actually written.
1536
1537 The operating system may set a limit (:func:`sysconf` value
1538 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001539
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001540 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001541
1542 .. versionadded:: 3.3
1543
1544
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001545.. _terminal-size:
1546
1547Querying the size of a terminal
1548~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1549
1550.. versionadded:: 3.3
1551
1552.. function:: get_terminal_size(fd=STDOUT_FILENO)
1553
1554 Return the size of the terminal window as ``(columns, lines)``,
1555 tuple of type :class:`terminal_size`.
1556
1557 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1558 output) specifies which file descriptor should be queried.
1559
1560 If the file descriptor is not connected to a terminal, an :exc:`OSError`
Andrew Svetlov5b898402012-12-18 21:26:36 +02001561 is raised.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001562
1563 :func:`shutil.get_terminal_size` is the high-level function which
1564 should normally be used, ``os.get_terminal_size`` is the low-level
1565 implementation.
1566
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001567 .. availability:: Unix, Windows.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001568
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001569.. class:: terminal_size
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001570
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001571 A subclass of tuple, holding ``(columns, lines)`` of the terminal window size.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001572
1573 .. attribute:: columns
1574
1575 Width of the terminal window in characters.
1576
1577 .. attribute:: lines
1578
1579 Height of the terminal window in characters.
1580
1581
Victor Stinnerdaf45552013-08-28 00:53:59 +02001582.. _fd_inheritance:
1583
1584Inheritance of File Descriptors
1585~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1586
Georg Brandl5642ff92013-09-15 10:37:57 +02001587.. versionadded:: 3.4
1588
1589A file descriptor has an "inheritable" flag which indicates if the file descriptor
1590can be inherited by child processes. Since Python 3.4, file descriptors
Victor Stinnerdaf45552013-08-28 00:53:59 +02001591created by Python are non-inheritable by default.
1592
1593On UNIX, non-inheritable file descriptors are closed in child processes at the
1594execution of a new program, other file descriptors are inherited.
1595
1596On Windows, non-inheritable handles and file descriptors are closed in child
Georg Brandl5642ff92013-09-15 10:37:57 +02001597processes, except for standard streams (file descriptors 0, 1 and 2: stdin, stdout
Serhiy Storchaka690a6a92013-10-13 20:13:37 +03001598and stderr), which are always inherited. Using :func:`spawn\* <spawnl>` functions,
Victor Stinnerdaf45552013-08-28 00:53:59 +02001599all inheritable handles and all inheritable file descriptors are inherited.
1600Using the :mod:`subprocess` module, all file descriptors except standard
Georg Brandl5642ff92013-09-15 10:37:57 +02001601streams are closed, and inheritable handles are only inherited if the
1602*close_fds* parameter is ``False``.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001603
1604.. function:: get_inheritable(fd)
1605
Georg Brandl5642ff92013-09-15 10:37:57 +02001606 Get the "inheritable" flag of the specified file descriptor (a boolean).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001607
1608.. function:: set_inheritable(fd, inheritable)
1609
Georg Brandl5642ff92013-09-15 10:37:57 +02001610 Set the "inheritable" flag of the specified file descriptor.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001611
1612.. function:: get_handle_inheritable(handle)
1613
Georg Brandl5642ff92013-09-15 10:37:57 +02001614 Get the "inheritable" flag of the specified handle (a boolean).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001615
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001616 .. availability:: Windows.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001617
1618.. function:: set_handle_inheritable(handle, inheritable)
1619
Georg Brandl5642ff92013-09-15 10:37:57 +02001620 Set the "inheritable" flag of the specified handle.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001621
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001622 .. availability:: Windows.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001623
1624
Georg Brandl116aa622007-08-15 14:28:22 +00001625.. _os-file-dir:
1626
1627Files and Directories
1628---------------------
1629
Georg Brandl50c40002012-06-24 11:45:20 +02001630On some Unix platforms, many of these functions support one or more of these
1631features:
1632
1633.. _path_fd:
1634
Larry Hastings77892dc2012-06-25 03:27:33 -07001635* **specifying a file descriptor:**
Cheryl Sabellae1521692019-05-06 08:39:13 -04001636 Normally the *path* argument provided to functions in the :mod:`os` module
1637 must be a string specifying a file path. However, some functions now
1638 alternatively accept an open file descriptor for their *path* argument.
1639 The function will then operate on the file referred to by the descriptor.
1640 (For POSIX systems, Python will call the variant of the function prefixed
1641 with ``f`` (e.g. call ``fchdir`` instead of ``chdir``).)
Georg Brandl50c40002012-06-24 11:45:20 +02001642
Cheryl Sabellae1521692019-05-06 08:39:13 -04001643 You can check whether or not *path* can be specified as a file descriptor
1644 for a particular function on your platform using :data:`os.supports_fd`.
1645 If this functionality is unavailable, using it will raise a
1646 :exc:`NotImplementedError`.
Georg Brandl50c40002012-06-24 11:45:20 +02001647
Cheryl Sabellae1521692019-05-06 08:39:13 -04001648 If the function also supports *dir_fd* or *follow_symlinks* arguments, it's
Georg Brandl50c40002012-06-24 11:45:20 +02001649 an error to specify one of those when supplying *path* as a file descriptor.
1650
1651.. _dir_fd:
1652
Larry Hastings77892dc2012-06-25 03:27:33 -07001653* **paths relative to directory descriptors:** If *dir_fd* is not ``None``, it
Georg Brandl50c40002012-06-24 11:45:20 +02001654 should be a file descriptor referring to a directory, and the path to operate
1655 on should be relative; path will then be relative to that directory. If the
Georg Brandlaceaf902012-06-25 08:33:56 +02001656 path is absolute, *dir_fd* is ignored. (For POSIX systems, Python will call
Cheryl Sabellae1521692019-05-06 08:39:13 -04001657 the variant of the function with an ``at`` suffix and possibly prefixed with
1658 ``f`` (e.g. call ``faccessat`` instead of ``access``).
Georg Brandl50c40002012-06-24 11:45:20 +02001659
Cheryl Sabellae1521692019-05-06 08:39:13 -04001660 You can check whether or not *dir_fd* is supported for a particular function
1661 on your platform using :data:`os.supports_dir_fd`. If it's unavailable,
1662 using it will raise a :exc:`NotImplementedError`.
Georg Brandl50c40002012-06-24 11:45:20 +02001663
1664.. _follow_symlinks:
1665
Larry Hastings77892dc2012-06-25 03:27:33 -07001666* **not following symlinks:** If *follow_symlinks* is
Georg Brandl50c40002012-06-24 11:45:20 +02001667 ``False``, and the last element of the path to operate on is a symbolic link,
Cheryl Sabellae1521692019-05-06 08:39:13 -04001668 the function will operate on the symbolic link itself rather than the file
1669 pointed to by the link. (For POSIX systems, Python will call the ``l...``
1670 variant of the function.)
Georg Brandl50c40002012-06-24 11:45:20 +02001671
Cheryl Sabellae1521692019-05-06 08:39:13 -04001672 You can check whether or not *follow_symlinks* is supported for a particular
1673 function on your platform using :data:`os.supports_follow_symlinks`.
1674 If it's unavailable, using it will raise a :exc:`NotImplementedError`.
Georg Brandl50c40002012-06-24 11:45:20 +02001675
1676
1677
Larry Hastings9cf065c2012-06-22 16:30:09 -07001678.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001679
1680 Use the real uid/gid to test for access to *path*. Note that most operations
1681 will use the effective uid/gid, therefore this routine can be used in a
1682 suid/sgid environment to test if the invoking user has the specified access to
1683 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1684 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1685 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1686 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001687 information.
1688
Georg Brandl50c40002012-06-24 11:45:20 +02001689 This function can support specifying :ref:`paths relative to directory
1690 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001691
1692 If *effective_ids* is ``True``, :func:`access` will perform its access
1693 checks using the effective uid/gid instead of the real uid/gid.
1694 *effective_ids* may not be supported on your platform; you can check whether
1695 or not it is available using :data:`os.supports_effective_ids`. If it is
1696 unavailable, using it will raise a :exc:`NotImplementedError`.
1697
Georg Brandl116aa622007-08-15 14:28:22 +00001698 .. note::
1699
Georg Brandl502d9a52009-07-26 15:02:41 +00001700 Using :func:`access` to check if a user is authorized to e.g. open a file
1701 before actually doing so using :func:`open` creates a security hole,
1702 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001703 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1704 techniques. For example::
1705
1706 if os.access("myfile", os.R_OK):
1707 with open("myfile") as fp:
1708 return fp.read()
1709 return "some default data"
1710
1711 is better written as::
1712
1713 try:
1714 fp = open("myfile")
Antoine Pitrou62ab10a02011-10-12 20:10:51 +02001715 except PermissionError:
1716 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001717 else:
1718 with fp:
1719 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001720
1721 .. note::
1722
1723 I/O operations may fail even when :func:`access` indicates that they would
1724 succeed, particularly for operations on network filesystems which may have
1725 permissions semantics beyond the usual POSIX permission-bit model.
1726
Larry Hastings9cf065c2012-06-22 16:30:09 -07001727 .. versionchanged:: 3.3
1728 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1729
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001730 .. versionchanged:: 3.6
1731 Accepts a :term:`path-like object`.
1732
Georg Brandl116aa622007-08-15 14:28:22 +00001733
1734.. data:: F_OK
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001735 R_OK
1736 W_OK
1737 X_OK
Georg Brandl116aa622007-08-15 14:28:22 +00001738
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001739 Values to pass as the *mode* parameter of :func:`access` to test the
1740 existence, readability, writability and executability of *path*,
1741 respectively.
Georg Brandl116aa622007-08-15 14:28:22 +00001742
1743
1744.. function:: chdir(path)
1745
1746 .. index:: single: directory; changing
1747
Benjamin Petersonf650e462010-05-06 23:03:05 +00001748 Change the current working directory to *path*.
1749
Larry Hastings77892dc2012-06-25 03:27:33 -07001750 This function can support :ref:`specifying a file descriptor <path_fd>`. The
Georg Brandl50c40002012-06-24 11:45:20 +02001751 descriptor must refer to an opened directory, not an open file.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001752
Terry Jan Reedya9b40e42019-07-06 22:44:01 -04001753 This function can raise :exc:`OSError` and subclasses such as
Kyle Stanley0717b4d2019-07-06 21:20:15 -04001754 :exc:`FileNotFoundError`, :exc:`PermissionError`, and :exc:`NotADirectoryError`.
1755
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001756 .. audit-event:: os.chdir path os.chdir
1757
Larry Hastings9cf065c2012-06-22 16:30:09 -07001758 .. versionadded:: 3.3
1759 Added support for specifying *path* as a file descriptor
Georg Brandl50c40002012-06-24 11:45:20 +02001760 on some platforms.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001761
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001762 .. versionchanged:: 3.6
1763 Accepts a :term:`path-like object`.
1764
Georg Brandl116aa622007-08-15 14:28:22 +00001765
Larry Hastings9cf065c2012-06-22 16:30:09 -07001766.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001767
1768 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1769 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1770
R David Murray30178062011-03-10 17:18:33 -05001771 * :data:`stat.UF_NODUMP`
1772 * :data:`stat.UF_IMMUTABLE`
1773 * :data:`stat.UF_APPEND`
1774 * :data:`stat.UF_OPAQUE`
1775 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001776 * :data:`stat.UF_COMPRESSED`
1777 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001778 * :data:`stat.SF_ARCHIVED`
1779 * :data:`stat.SF_IMMUTABLE`
1780 * :data:`stat.SF_APPEND`
1781 * :data:`stat.SF_NOUNLINK`
1782 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001783
Georg Brandl50c40002012-06-24 11:45:20 +02001784 This function can support :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001785
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001786 .. audit-event:: os.chflags path,flags os.chflags
1787
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001788 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001789
Larry Hastings9cf065c2012-06-22 16:30:09 -07001790 .. versionadded:: 3.3
1791 The *follow_symlinks* argument.
1792
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001793 .. versionchanged:: 3.6
1794 Accepts a :term:`path-like object`.
1795
Georg Brandl116aa622007-08-15 14:28:22 +00001796
Larry Hastings9cf065c2012-06-22 16:30:09 -07001797.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001798
1799 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001800 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001801 combinations of them:
1802
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001803 * :data:`stat.S_ISUID`
1804 * :data:`stat.S_ISGID`
1805 * :data:`stat.S_ENFMT`
1806 * :data:`stat.S_ISVTX`
1807 * :data:`stat.S_IREAD`
1808 * :data:`stat.S_IWRITE`
1809 * :data:`stat.S_IEXEC`
1810 * :data:`stat.S_IRWXU`
1811 * :data:`stat.S_IRUSR`
1812 * :data:`stat.S_IWUSR`
1813 * :data:`stat.S_IXUSR`
1814 * :data:`stat.S_IRWXG`
1815 * :data:`stat.S_IRGRP`
1816 * :data:`stat.S_IWGRP`
1817 * :data:`stat.S_IXGRP`
1818 * :data:`stat.S_IRWXO`
1819 * :data:`stat.S_IROTH`
1820 * :data:`stat.S_IWOTH`
1821 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001822
Georg Brandl50c40002012-06-24 11:45:20 +02001823 This function can support :ref:`specifying a file descriptor <path_fd>`,
1824 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1825 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001826
Georg Brandl116aa622007-08-15 14:28:22 +00001827 .. note::
1828
Georg Brandl50c40002012-06-24 11:45:20 +02001829 Although Windows supports :func:`chmod`, you can only set the file's
1830 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1831 constants or a corresponding integer value). All other bits are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001832
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001833 .. audit-event:: os.chmod path,mode,dir_fd os.chmod
1834
Larry Hastings9cf065c2012-06-22 16:30:09 -07001835 .. versionadded:: 3.3
1836 Added support for specifying *path* as an open file descriptor,
1837 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001838
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001839 .. versionchanged:: 3.6
1840 Accepts a :term:`path-like object`.
1841
Larry Hastings9cf065c2012-06-22 16:30:09 -07001842
1843.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001844
Georg Brandl50c40002012-06-24 11:45:20 +02001845 Change the owner and group id of *path* to the numeric *uid* and *gid*. To
1846 leave one of the ids unchanged, set it to -1.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001847
Georg Brandl50c40002012-06-24 11:45:20 +02001848 This function can support :ref:`specifying a file descriptor <path_fd>`,
1849 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1850 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001851
Sandro Tosid902a142011-08-22 23:28:27 +02001852 See :func:`shutil.chown` for a higher-level function that accepts names in
1853 addition to numeric ids.
1854
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001855 .. audit-event:: os.chown path,uid,gid,dir_fd os.chown
1856
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001857 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001858
Larry Hastings9cf065c2012-06-22 16:30:09 -07001859 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04001860 Added support for specifying *path* as an open file descriptor,
Larry Hastings9cf065c2012-06-22 16:30:09 -07001861 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001862
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001863 .. versionchanged:: 3.6
1864 Supports a :term:`path-like object`.
1865
Benjamin Peterson799bd802011-08-31 22:15:17 -04001866
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001867.. function:: chroot(path)
1868
Georg Brandl8a5555f2012-06-24 13:29:09 +02001869 Change the root directory of the current process to *path*.
1870
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001871 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001872
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001873 .. versionchanged:: 3.6
1874 Accepts a :term:`path-like object`.
1875
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001876
1877.. function:: fchdir(fd)
1878
1879 Change the current working directory to the directory represented by the file
1880 descriptor *fd*. The descriptor must refer to an opened directory, not an
Georg Brandl4d399a42012-06-25 07:40:32 +02001881 open file. As of Python 3.3, this is equivalent to ``os.chdir(fd)``.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001882
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001883 .. audit-event:: os.chdir path os.fchdir
1884
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001885 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001886
1887
1888.. function:: getcwd()
1889
1890 Return a string representing the current working directory.
1891
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001892
1893.. function:: getcwdb()
1894
1895 Return a bytestring representing the current working directory.
1896
Victor Stinner689830e2019-06-26 17:31:12 +02001897 .. versionchanged:: 3.8
1898 The function now uses the UTF-8 encoding on Windows, rather than the ANSI
1899 code page: see :pep:`529` for the rationale. The function is no longer
1900 deprecated on Windows.
1901
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001902
Georg Brandl116aa622007-08-15 14:28:22 +00001903.. function:: lchflags(path, flags)
1904
Georg Brandl50c40002012-06-24 11:45:20 +02001905 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do
Georg Brandl4d399a42012-06-25 07:40:32 +02001906 not follow symbolic links. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001907 ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001908
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001909 .. audit-event:: os.chflags path,flags os.lchflags
1910
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001911 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001912
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001913 .. versionchanged:: 3.6
1914 Accepts a :term:`path-like object`.
1915
Georg Brandl116aa622007-08-15 14:28:22 +00001916
Christian Heimes93852662007-12-01 12:22:32 +00001917.. function:: lchmod(path, mode)
1918
1919 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
Georg Brandl50c40002012-06-24 11:45:20 +02001920 affects the symlink rather than the target. See the docs for :func:`chmod`
Georg Brandl4d399a42012-06-25 07:40:32 +02001921 for possible values of *mode*. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001922 ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001923
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001924 .. audit-event:: os.chmod path,mode,dir_fd os.lchmod
1925
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001926 .. availability:: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001927
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001928 .. versionchanged:: 3.6
1929 Accepts a :term:`path-like object`.
Christian Heimes93852662007-12-01 12:22:32 +00001930
Georg Brandl116aa622007-08-15 14:28:22 +00001931.. function:: lchown(path, uid, gid)
1932
Georg Brandl50c40002012-06-24 11:45:20 +02001933 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandl4d399a42012-06-25 07:40:32 +02001934 function will not follow symbolic links. As of Python 3.3, this is equivalent
Georg Brandlb9df00c2012-06-24 12:38:14 +02001935 to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001936
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001937 .. audit-event:: os.chown path,uid,gid,dir_fd os.lchown
1938
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001939 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001940
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001941 .. versionchanged:: 3.6
1942 Accepts a :term:`path-like object`.
1943
Georg Brandl116aa622007-08-15 14:28:22 +00001944
Larry Hastings9cf065c2012-06-22 16:30:09 -07001945.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001946
Larry Hastings9cf065c2012-06-22 16:30:09 -07001947 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001948
Georg Brandlaceaf902012-06-25 08:33:56 +02001949 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1950 supply :ref:`paths relative to directory descriptors <dir_fd>`, and :ref:`not
1951 following symlinks <follow_symlinks>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001952
Saiyang Gou7514f4f2020-02-12 23:47:42 -08001953 .. audit-event:: os.link src,dst,src_dir_fd,dst_dir_fd os.link
1954
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001955 .. availability:: Unix, Windows.
Brian Curtin1b9df392010-11-24 20:24:31 +00001956
1957 .. versionchanged:: 3.2
1958 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001959
Larry Hastings9cf065c2012-06-22 16:30:09 -07001960 .. versionadded:: 3.3
1961 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1962
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001963 .. versionchanged:: 3.6
1964 Accepts a :term:`path-like object` for *src* and *dst*.
1965
Georg Brandl116aa622007-08-15 14:28:22 +00001966
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001967.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001968
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001969 Return a list containing the names of the entries in the directory given by
Larry Hastingsfdaea062012-06-25 04:42:23 -07001970 *path*. The list is in arbitrary order, and does not include the special
1971 entries ``'.'`` and ``'..'`` even if they are present in the directory.
Serhiy Storchaka306cfb32020-09-04 21:19:30 +03001972 If a file is removed from or added to the directory during the call of
1973 this function, whether a name for that file be included is unspecified.
Georg Brandl116aa622007-08-15 14:28:22 +00001974
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001975 *path* may be a :term:`path-like object`. If *path* is of type ``bytes``
1976 (directly or indirectly through the :class:`PathLike` interface),
1977 the filenames returned will also be of type ``bytes``;
Larry Hastingsfdaea062012-06-25 04:42:23 -07001978 in all other circumstances, they will be of type ``str``.
Georg Brandl116aa622007-08-15 14:28:22 +00001979
Larry Hastings77892dc2012-06-25 03:27:33 -07001980 This function can also support :ref:`specifying a file descriptor
1981 <path_fd>`; the file descriptor must refer to a directory.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001982
Steve Dower44f91c32019-06-27 10:47:59 -07001983 .. audit-event:: os.listdir path os.listdir
Steve Dower60419a72019-06-24 08:42:54 -07001984
Larry Hastingsfdaea062012-06-25 04:42:23 -07001985 .. note::
1986 To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`.
1987
Victor Stinner6036e442015-03-08 01:58:04 +01001988 .. seealso::
1989
Victor Stinner51b58322015-05-15 09:12:58 +02001990 The :func:`scandir` function returns directory entries along with
1991 file attribute information, giving better performance for many
1992 common use cases.
Victor Stinner6036e442015-03-08 01:58:04 +01001993
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001994 .. versionchanged:: 3.2
1995 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001996
Larry Hastings9cf065c2012-06-22 16:30:09 -07001997 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04001998 Added support for specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001999
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002000 .. versionchanged:: 3.6
2001 Accepts a :term:`path-like object`.
2002
Georg Brandl50c40002012-06-24 11:45:20 +02002003
Andre Delfinodcc997c2020-12-16 22:37:28 -03002004.. function:: lstat(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002005
R. David Murray7b1aae92011-01-24 19:34:58 +00002006 Perform the equivalent of an :c:func:`lstat` system call on the given path.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002007 Similar to :func:`~os.stat`, but does not follow symbolic links. Return a
2008 :class:`stat_result` object.
2009
2010 On platforms that do not support symbolic links, this is an alias for
2011 :func:`~os.stat`.
2012
2013 As of Python 3.3, this is equivalent to ``os.stat(path, dir_fd=dir_fd,
2014 follow_symlinks=False)``.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002015
Georg Brandl50c40002012-06-24 11:45:20 +02002016 This function can also support :ref:`paths relative to directory descriptors
2017 <dir_fd>`.
Brian Curtinc7395692010-07-09 15:15:09 +00002018
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002019 .. seealso::
2020
Berker Peksag2034caa2015-04-27 13:53:28 +03002021 The :func:`.stat` function.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002022
Georg Brandlb3823372010-07-10 08:58:37 +00002023 .. versionchanged:: 3.2
2024 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002025
Larry Hastings9cf065c2012-06-22 16:30:09 -07002026 .. versionchanged:: 3.3
2027 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02002028
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002029 .. versionchanged:: 3.6
Sergey Fedoseev7f8e0722021-04-26 02:24:41 +05002030 Accepts a :term:`path-like object`.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002031
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002032 .. versionchanged:: 3.8
2033 On Windows, now opens reparse points that represent another path
2034 (name surrogates), including symbolic links and directory junctions.
2035 Other kinds of reparse points are resolved by the operating system as
2036 for :func:`~os.stat`.
2037
Ross Lagerwall7807c352011-03-17 20:20:30 +02002038
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002039.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
2040
2041 Create a directory named *path* with numeric mode *mode*.
2042
Tommy Beadle63b91e52016-06-02 15:41:20 -04002043 If the directory already exists, :exc:`FileExistsError` is raised.
2044
2045 .. _mkdir_modebits:
2046
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002047 On some systems, *mode* is ignored. Where it is used, the current umask
Tommy Beadle63b91e52016-06-02 15:41:20 -04002048 value is first masked out. If bits other than the last 9 (i.e. the last 3
2049 digits of the octal representation of the *mode*) are set, their meaning is
2050 platform-dependent. On some platforms, they are ignored and you should call
2051 :func:`chmod` explicitly to set them.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002052
2053 This function can also support :ref:`paths relative to directory descriptors
2054 <dir_fd>`.
2055
2056 It is also possible to create temporary directories; see the
2057 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
2058
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002059 .. audit-event:: os.mkdir path,mode,dir_fd os.mkdir
2060
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002061 .. versionadded:: 3.3
2062 The *dir_fd* argument.
2063
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002064 .. versionchanged:: 3.6
2065 Accepts a :term:`path-like object`.
2066
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002067
Zachary Warea22ae212014-03-20 09:42:01 -05002068.. function:: makedirs(name, mode=0o777, exist_ok=False)
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002069
2070 .. index::
2071 single: directory; creating
2072 single: UNC paths; and os.makedirs()
2073
2074 Recursive directory creation function. Like :func:`mkdir`, but makes all
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02002075 intermediate-level directories needed to contain the leaf directory.
2076
Serhiy Storchakae304e332017-03-24 13:27:42 +02002077 The *mode* parameter is passed to :func:`mkdir` for creating the leaf
2078 directory; see :ref:`the mkdir() description <mkdir_modebits>` for how it
2079 is interpreted. To set the file permission bits of any newly-created parent
2080 directories you can set the umask before invoking :func:`makedirs`. The
2081 file permission bits of existing parent directories are not changed.
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02002082
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002083 If *exist_ok* is ``False`` (the default), an :exc:`FileExistsError` is
2084 raised if the target directory already exists.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002085
2086 .. note::
2087
2088 :func:`makedirs` will become confused if the path elements to create
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02002089 include :data:`pardir` (eg. ".." on UNIX systems).
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002090
2091 This function handles UNC paths correctly.
2092
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002093 .. audit-event:: os.mkdir path,mode,dir_fd os.makedirs
2094
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002095 .. versionadded:: 3.2
2096 The *exist_ok* parameter.
2097
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04002098 .. versionchanged:: 3.4.1
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04002099
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04002100 Before Python 3.4.1, if *exist_ok* was ``True`` and the directory existed,
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04002101 :func:`makedirs` would still raise an error if *mode* did not match the
2102 mode of the existing directory. Since this behavior was impossible to
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04002103 implement safely, it was removed in Python 3.4.1. See :issue:`21082`.
Benjamin Peterson4717e212014-04-01 19:17:57 -04002104
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002105 .. versionchanged:: 3.6
2106 Accepts a :term:`path-like object`.
2107
Serhiy Storchakae304e332017-03-24 13:27:42 +02002108 .. versionchanged:: 3.7
2109 The *mode* argument no longer affects the file permission bits of
2110 newly-created intermediate-level directories.
2111
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002112
Larry Hastings9cf065c2012-06-22 16:30:09 -07002113.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002114
Larry Hastings9cf065c2012-06-22 16:30:09 -07002115 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
2116 The current umask value is first masked out from the mode.
2117
Georg Brandl50c40002012-06-24 11:45:20 +02002118 This function can also support :ref:`paths relative to directory descriptors
2119 <dir_fd>`.
Georg Brandl116aa622007-08-15 14:28:22 +00002120
2121 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
2122 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
2123 rendezvous between "client" and "server" type processes: the server opens the
2124 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
2125 doesn't open the FIFO --- it just creates the rendezvous point.
2126
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002127 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002128
Larry Hastings9cf065c2012-06-22 16:30:09 -07002129 .. versionadded:: 3.3
2130 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00002131
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002132 .. versionchanged:: 3.6
2133 Accepts a :term:`path-like object`.
2134
Larry Hastings9cf065c2012-06-22 16:30:09 -07002135
Martin Panterbf19d162015-09-09 01:01:13 +00002136.. function:: mknod(path, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002137
2138 Create a filesystem node (file, device special file or named pipe) named
Martin Panterbf19d162015-09-09 01:01:13 +00002139 *path*. *mode* specifies both the permissions to use and the type of node
Georg Brandl18244152009-09-02 20:34:52 +00002140 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
2141 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
2142 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
2143 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00002144 :func:`os.makedev`), otherwise it is ignored.
2145
Georg Brandl50c40002012-06-24 11:45:20 +02002146 This function can also support :ref:`paths relative to directory descriptors
2147 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002148
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002149 .. availability:: Unix.
Berker Peksag6129e142016-09-26 22:50:11 +03002150
Larry Hastings9cf065c2012-06-22 16:30:09 -07002151 .. versionadded:: 3.3
2152 The *dir_fd* argument.
2153
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002154 .. versionchanged:: 3.6
2155 Accepts a :term:`path-like object`.
2156
Georg Brandl116aa622007-08-15 14:28:22 +00002157
2158.. function:: major(device)
2159
Christian Heimesfaf2f632008-01-06 16:59:19 +00002160 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00002161 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00002162
Georg Brandl116aa622007-08-15 14:28:22 +00002163
2164.. function:: minor(device)
2165
Christian Heimesfaf2f632008-01-06 16:59:19 +00002166 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00002167 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00002168
Georg Brandl116aa622007-08-15 14:28:22 +00002169
2170.. function:: makedev(major, minor)
2171
Christian Heimesfaf2f632008-01-06 16:59:19 +00002172 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00002173
Georg Brandl116aa622007-08-15 14:28:22 +00002174
Georg Brandl116aa622007-08-15 14:28:22 +00002175.. function:: pathconf(path, name)
2176
2177 Return system configuration information relevant to a named file. *name*
2178 specifies the configuration value to retrieve; it may be a string which is the
2179 name of a defined system value; these names are specified in a number of
2180 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
2181 additional names as well. The names known to the host operating system are
2182 given in the ``pathconf_names`` dictionary. For configuration variables not
2183 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00002184
2185 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
2186 specific value for *name* is not supported by the host system, even if it is
2187 included in ``pathconf_names``, an :exc:`OSError` is raised with
2188 :const:`errno.EINVAL` for the error number.
2189
Larry Hastings77892dc2012-06-25 03:27:33 -07002190 This function can support :ref:`specifying a file descriptor
Georg Brandl306336b2012-06-24 12:55:33 +02002191 <path_fd>`.
2192
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002193 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002194
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002195 .. versionchanged:: 3.6
2196 Accepts a :term:`path-like object`.
2197
Georg Brandl116aa622007-08-15 14:28:22 +00002198
2199.. data:: pathconf_names
2200
2201 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
2202 the integer values defined for those names by the host operating system. This
Georg Brandl8a5555f2012-06-24 13:29:09 +02002203 can be used to determine the set of names known to the system.
2204
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002205 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002206
2207
Larry Hastings9cf065c2012-06-22 16:30:09 -07002208.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002209
2210 Return a string representing the path to which the symbolic link points. The
Georg Brandl50c40002012-06-24 11:45:20 +02002211 result may be either an absolute or relative pathname; if it is relative, it
2212 may be converted to an absolute pathname using
2213 ``os.path.join(os.path.dirname(path), result)``.
Georg Brandl116aa622007-08-15 14:28:22 +00002214
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002215 If the *path* is a string object (directly or indirectly through a
2216 :class:`PathLike` interface), the result will also be a string object,
Martin Panter6245cb32016-04-15 02:14:19 +00002217 and the call may raise a UnicodeDecodeError. If the *path* is a bytes
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002218 object (direct or indirectly), the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00002219
Georg Brandl50c40002012-06-24 11:45:20 +02002220 This function can also support :ref:`paths relative to directory descriptors
2221 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002222
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002223 When trying to resolve a path that may contain links, use
2224 :func:`~os.path.realpath` to properly handle recursion and platform
2225 differences.
2226
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002227 .. availability:: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002228
Georg Brandlb3823372010-07-10 08:58:37 +00002229 .. versionchanged:: 3.2
2230 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002231
Larry Hastings9cf065c2012-06-22 16:30:09 -07002232 .. versionadded:: 3.3
2233 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00002234
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002235 .. versionchanged:: 3.6
Berker Peksage0b5b202018-08-15 13:03:41 +03002236 Accepts a :term:`path-like object` on Unix.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002237
Berker Peksage0b5b202018-08-15 13:03:41 +03002238 .. versionchanged:: 3.8
2239 Accepts a :term:`path-like object` and a bytes object on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002240
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002241 .. versionchanged:: 3.8
2242 Added support for directory junctions, and changed to return the
2243 substitution path (which typically includes ``\\?\`` prefix) rather
2244 than the optional "print name" field that was previously returned.
2245
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002246.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002247
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002248 Remove (delete) the file *path*. If *path* is a directory, an
2249 :exc:`IsADirectoryError` is raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002250
Georg Brandl50c40002012-06-24 11:45:20 +02002251 This function can support :ref:`paths relative to directory descriptors
2252 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002253
2254 On Windows, attempting to remove a file that is in use causes an exception to
2255 be raised; on Unix, the directory entry is removed but the storage allocated
2256 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002257
Brett Cannon05039172015-12-28 17:28:19 -08002258 This function is semantically identical to :func:`unlink`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002259
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002260 .. audit-event:: os.remove path,dir_fd os.remove
2261
Larry Hastings9cf065c2012-06-22 16:30:09 -07002262 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002263 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002264
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002265 .. versionchanged:: 3.6
2266 Accepts a :term:`path-like object`.
2267
Georg Brandl116aa622007-08-15 14:28:22 +00002268
Zachary Warea22ae212014-03-20 09:42:01 -05002269.. function:: removedirs(name)
Georg Brandl116aa622007-08-15 14:28:22 +00002270
2271 .. index:: single: directory; deleting
2272
Christian Heimesfaf2f632008-01-06 16:59:19 +00002273 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00002274 leaf directory is successfully removed, :func:`removedirs` tries to
2275 successively remove every parent directory mentioned in *path* until an error
2276 is raised (which is ignored, because it generally means that a parent directory
2277 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
2278 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
2279 they are empty. Raises :exc:`OSError` if the leaf directory could not be
2280 successfully removed.
2281
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002282 .. audit-event:: os.remove path,dir_fd os.removedirs
2283
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002284 .. versionchanged:: 3.6
2285 Accepts a :term:`path-like object`.
2286
Georg Brandl116aa622007-08-15 14:28:22 +00002287
Larry Hastings9cf065c2012-06-22 16:30:09 -07002288.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002289
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002290 Rename the file or directory *src* to *dst*. If *dst* exists, the operation
2291 will fail with an :exc:`OSError` subclass in a number of cases:
2292
2293 On Windows, if *dst* exists a :exc:`FileExistsError` is always raised.
2294
Mariatta7cbef722019-07-11 10:31:19 -07002295 On Unix, if *src* is a file and *dst* is a directory or vice-versa, an
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002296 :exc:`IsADirectoryError` or a :exc:`NotADirectoryError` will be raised
2297 respectively. If both are directories and *dst* is empty, *dst* will be
2298 silently replaced. If *dst* is a non-empty directory, an :exc:`OSError`
2299 is raised. If both are files, *dst* it will be replaced silently if the user
2300 has permission. The operation may fail on some Unix flavors if *src* and
2301 *dst* are on different filesystems. If successful, the renaming will be an
2302 atomic operation (this is a POSIX requirement).
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002303
Georg Brandlaceaf902012-06-25 08:33:56 +02002304 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
2305 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002306
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002307 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002308
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002309 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.rename
2310
Larry Hastings9cf065c2012-06-22 16:30:09 -07002311 .. versionadded:: 3.3
2312 The *src_dir_fd* and *dst_dir_fd* arguments.
2313
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002314 .. versionchanged:: 3.6
2315 Accepts a :term:`path-like object` for *src* and *dst*.
2316
Georg Brandl116aa622007-08-15 14:28:22 +00002317
2318.. function:: renames(old, new)
2319
2320 Recursive directory or file renaming function. Works like :func:`rename`, except
2321 creation of any intermediate directories needed to make the new pathname good is
2322 attempted first. After the rename, directories corresponding to rightmost path
2323 segments of the old name will be pruned away using :func:`removedirs`.
2324
Georg Brandl116aa622007-08-15 14:28:22 +00002325 .. note::
2326
2327 This function can fail with the new directory structure made if you lack
2328 permissions needed to remove the leaf directory or file.
2329
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002330 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.renames
2331
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002332 .. versionchanged:: 3.6
2333 Accepts a :term:`path-like object` for *old* and *new*.
2334
Georg Brandl116aa622007-08-15 14:28:22 +00002335
Larry Hastings9cf065c2012-06-22 16:30:09 -07002336.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002337
2338 Rename the file or directory *src* to *dst*. If *dst* is a directory,
2339 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
2340 be replaced silently if the user has permission. The operation may fail
2341 if *src* and *dst* are on different filesystems. If successful,
2342 the renaming will be an atomic operation (this is a POSIX requirement).
2343
Georg Brandlaceaf902012-06-25 08:33:56 +02002344 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
2345 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002346
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002347 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.replace
2348
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002349 .. versionadded:: 3.3
2350
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002351 .. versionchanged:: 3.6
2352 Accepts a :term:`path-like object` for *src* and *dst*.
2353
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002354
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002355.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002356
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002357 Remove (delete) the directory *path*. If the directory does not exist or is
2358 not empty, an :exc:`FileNotFoundError` or an :exc:`OSError` is raised
2359 respectively. In order to remove whole directory trees,
2360 :func:`shutil.rmtree` can be used.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002361
Georg Brandl50c40002012-06-24 11:45:20 +02002362 This function can support :ref:`paths relative to directory descriptors
2363 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002364
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002365 .. audit-event:: os.rmdir path,dir_fd os.rmdir
2366
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002367 .. versionadded:: 3.3
2368 The *dir_fd* parameter.
2369
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002370 .. versionchanged:: 3.6
2371 Accepts a :term:`path-like object`.
2372
Georg Brandl116aa622007-08-15 14:28:22 +00002373
Victor Stinner6036e442015-03-08 01:58:04 +01002374.. function:: scandir(path='.')
2375
Brett Cannona32c4d02016-06-24 14:14:44 -07002376 Return an iterator of :class:`os.DirEntry` objects corresponding to the
2377 entries in the directory given by *path*. The entries are yielded in
2378 arbitrary order, and the special entries ``'.'`` and ``'..'`` are not
Serhiy Storchaka306cfb32020-09-04 21:19:30 +03002379 included. If a file is removed from or added to the directory after
2380 creating the iterator, whether an entry for that file be included is
2381 unspecified.
Victor Stinner6036e442015-03-08 01:58:04 +01002382
Victor Stinner51b58322015-05-15 09:12:58 +02002383 Using :func:`scandir` instead of :func:`listdir` can significantly
2384 increase the performance of code that also needs file type or file
Brett Cannona32c4d02016-06-24 14:14:44 -07002385 attribute information, because :class:`os.DirEntry` objects expose this
Victor Stinner51b58322015-05-15 09:12:58 +02002386 information if the operating system provides it when scanning a directory.
Brett Cannona32c4d02016-06-24 14:14:44 -07002387 All :class:`os.DirEntry` methods may perform a system call, but
2388 :func:`~os.DirEntry.is_dir` and :func:`~os.DirEntry.is_file` usually only
2389 require a system call for symbolic links; :func:`os.DirEntry.stat`
Victor Stinner51b58322015-05-15 09:12:58 +02002390 always requires a system call on Unix but only requires one for
2391 symbolic links on Windows.
Victor Stinner6036e442015-03-08 01:58:04 +01002392
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002393 *path* may be a :term:`path-like object`. If *path* is of type ``bytes``
2394 (directly or indirectly through the :class:`PathLike` interface),
2395 the type of the :attr:`~os.DirEntry.name` and :attr:`~os.DirEntry.path`
2396 attributes of each :class:`os.DirEntry` will be ``bytes``; in all other
2397 circumstances, they will be of type ``str``.
Victor Stinner6036e442015-03-08 01:58:04 +01002398
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002399 This function can also support :ref:`specifying a file descriptor
2400 <path_fd>`; the file descriptor must refer to a directory.
2401
Steve Dower44f91c32019-06-27 10:47:59 -07002402 .. audit-event:: os.scandir path os.scandir
Steve Dower60419a72019-06-24 08:42:54 -07002403
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002404 The :func:`scandir` iterator supports the :term:`context manager` protocol
2405 and has the following method:
2406
2407 .. method:: scandir.close()
2408
2409 Close the iterator and free acquired resources.
2410
2411 This is called automatically when the iterator is exhausted or garbage
2412 collected, or when an error happens during iterating. However it
2413 is advisable to call it explicitly or use the :keyword:`with`
2414 statement.
2415
2416 .. versionadded:: 3.6
2417
Victor Stinner6036e442015-03-08 01:58:04 +01002418 The following example shows a simple use of :func:`scandir` to display all
Victor Stinner51b58322015-05-15 09:12:58 +02002419 the files (excluding directories) in the given *path* that don't start with
2420 ``'.'``. The ``entry.is_file()`` call will generally not make an additional
2421 system call::
Victor Stinner6036e442015-03-08 01:58:04 +01002422
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002423 with os.scandir(path) as it:
2424 for entry in it:
2425 if not entry.name.startswith('.') and entry.is_file():
2426 print(entry.name)
Victor Stinner6036e442015-03-08 01:58:04 +01002427
2428 .. note::
2429
2430 On Unix-based systems, :func:`scandir` uses the system's
2431 `opendir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/opendir.html>`_
2432 and
2433 `readdir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/readdir_r.html>`_
2434 functions. On Windows, it uses the Win32
Georg Brandl5d941342016-02-26 19:37:12 +01002435 `FindFirstFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01002436 and
Georg Brandl5d941342016-02-26 19:37:12 +01002437 `FindNextFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01002438 functions.
2439
Victor Stinner6036e442015-03-08 01:58:04 +01002440 .. versionadded:: 3.5
2441
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002442 .. versionadded:: 3.6
2443 Added support for the :term:`context manager` protocol and the
2444 :func:`~scandir.close()` method. If a :func:`scandir` iterator is neither
2445 exhausted nor explicitly closed a :exc:`ResourceWarning` will be emitted
2446 in its destructor.
2447
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002448 The function accepts a :term:`path-like object`.
2449
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002450 .. versionchanged:: 3.7
2451 Added support for :ref:`file descriptors <path_fd>` on Unix.
2452
Victor Stinner6036e442015-03-08 01:58:04 +01002453
2454.. class:: DirEntry
2455
2456 Object yielded by :func:`scandir` to expose the file path and other file
2457 attributes of a directory entry.
2458
2459 :func:`scandir` will provide as much of this information as possible without
2460 making additional system calls. When a ``stat()`` or ``lstat()`` system call
Brett Cannona32c4d02016-06-24 14:14:44 -07002461 is made, the ``os.DirEntry`` object will cache the result.
Victor Stinner6036e442015-03-08 01:58:04 +01002462
Brett Cannona32c4d02016-06-24 14:14:44 -07002463 ``os.DirEntry`` instances are not intended to be stored in long-lived data
Victor Stinner6036e442015-03-08 01:58:04 +01002464 structures; if you know the file metadata has changed or if a long time has
2465 elapsed since calling :func:`scandir`, call ``os.stat(entry.path)`` to fetch
2466 up-to-date information.
2467
Brett Cannona32c4d02016-06-24 14:14:44 -07002468 Because the ``os.DirEntry`` methods can make operating system calls, they may
Victor Stinner51b58322015-05-15 09:12:58 +02002469 also raise :exc:`OSError`. If you need very fine-grained
Victor Stinner6036e442015-03-08 01:58:04 +01002470 control over errors, you can catch :exc:`OSError` when calling one of the
Brett Cannona32c4d02016-06-24 14:14:44 -07002471 ``os.DirEntry`` methods and handle as appropriate.
Victor Stinner6036e442015-03-08 01:58:04 +01002472
Brett Cannona32c4d02016-06-24 14:14:44 -07002473 To be directly usable as a :term:`path-like object`, ``os.DirEntry``
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002474 implements the :class:`PathLike` interface.
Brett Cannon96881cd2016-06-10 14:37:21 -07002475
Brett Cannona32c4d02016-06-24 14:14:44 -07002476 Attributes and methods on a ``os.DirEntry`` instance are as follows:
Victor Stinner6036e442015-03-08 01:58:04 +01002477
2478 .. attribute:: name
2479
2480 The entry's base filename, relative to the :func:`scandir` *path*
2481 argument.
2482
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002483 The :attr:`name` attribute will be ``bytes`` if the :func:`scandir`
2484 *path* argument is of type ``bytes`` and ``str`` otherwise. Use
Victor Stinner51b58322015-05-15 09:12:58 +02002485 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01002486
2487 .. attribute:: path
2488
2489 The entry's full path name: equivalent to ``os.path.join(scandir_path,
2490 entry.name)`` where *scandir_path* is the :func:`scandir` *path*
2491 argument. The path is only absolute if the :func:`scandir` *path*
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002492 argument was absolute. If the :func:`scandir` *path*
2493 argument was a :ref:`file descriptor <path_fd>`, the :attr:`path`
2494 attribute is the same as the :attr:`name` attribute.
Victor Stinner6036e442015-03-08 01:58:04 +01002495
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002496 The :attr:`path` attribute will be ``bytes`` if the :func:`scandir`
2497 *path* argument is of type ``bytes`` and ``str`` otherwise. Use
Victor Stinner51b58322015-05-15 09:12:58 +02002498 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01002499
2500 .. method:: inode()
2501
2502 Return the inode number of the entry.
2503
Brett Cannona32c4d02016-06-24 14:14:44 -07002504 The result is cached on the ``os.DirEntry`` object. Use
2505 ``os.stat(entry.path, follow_symlinks=False).st_ino`` to fetch up-to-date
2506 information.
Victor Stinner6036e442015-03-08 01:58:04 +01002507
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002508 On the first, uncached call, a system call is required on Windows but
2509 not on Unix.
Victor Stinner6036e442015-03-08 01:58:04 +01002510
Andre Delfinodcc997c2020-12-16 22:37:28 -03002511 .. method:: is_dir(*, follow_symlinks=True)
Victor Stinner6036e442015-03-08 01:58:04 +01002512
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002513 Return ``True`` if this entry is a directory or a symbolic link pointing
2514 to a directory; return ``False`` if the entry is or points to any other
2515 kind of file, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002516
2517 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002518 is a directory (without following symlinks); return ``False`` if the
2519 entry is any other kind of file or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002520
Brett Cannona32c4d02016-06-24 14:14:44 -07002521 The result is cached on the ``os.DirEntry`` object, with a separate cache
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002522 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` along
2523 with :func:`stat.S_ISDIR` to fetch up-to-date information.
2524
2525 On the first, uncached call, no system call is required in most cases.
2526 Specifically, for non-symlinks, neither Windows or Unix require a system
2527 call, except on certain Unix file systems, such as network file systems,
2528 that return ``dirent.d_type == DT_UNKNOWN``. If the entry is a symlink,
2529 a system call will be required to follow the symlink unless
2530 *follow_symlinks* is ``False``.
Victor Stinner6036e442015-03-08 01:58:04 +01002531
Victor Stinner51b58322015-05-15 09:12:58 +02002532 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2533 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002534
Andre Delfinodcc997c2020-12-16 22:37:28 -03002535 .. method:: is_file(*, follow_symlinks=True)
Victor Stinner6036e442015-03-08 01:58:04 +01002536
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002537 Return ``True`` if this entry is a file or a symbolic link pointing to a
2538 file; return ``False`` if the entry is or points to a directory or other
2539 non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002540
2541 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002542 is a file (without following symlinks); return ``False`` if the entry is
2543 a directory or other non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002544
Brett Cannona32c4d02016-06-24 14:14:44 -07002545 The result is cached on the ``os.DirEntry`` object. Caching, system calls
2546 made, and exceptions raised are as per :func:`~os.DirEntry.is_dir`.
Victor Stinner6036e442015-03-08 01:58:04 +01002547
2548 .. method:: is_symlink()
2549
Victor Stinner51b58322015-05-15 09:12:58 +02002550 Return ``True`` if this entry is a symbolic link (even if broken);
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002551 return ``False`` if the entry points to a directory or any kind of file,
Victor Stinner51b58322015-05-15 09:12:58 +02002552 or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002553
Brett Cannona32c4d02016-06-24 14:14:44 -07002554 The result is cached on the ``os.DirEntry`` object. Call
Victor Stinner51b58322015-05-15 09:12:58 +02002555 :func:`os.path.islink` to fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002556
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002557 On the first, uncached call, no system call is required in most cases.
2558 Specifically, neither Windows or Unix require a system call, except on
2559 certain Unix file systems, such as network file systems, that return
2560 ``dirent.d_type == DT_UNKNOWN``.
Victor Stinner6036e442015-03-08 01:58:04 +01002561
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002562 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2563 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002564
Andre Delfinodcc997c2020-12-16 22:37:28 -03002565 .. method:: stat(*, follow_symlinks=True)
Victor Stinner6036e442015-03-08 01:58:04 +01002566
Victor Stinner51b58322015-05-15 09:12:58 +02002567 Return a :class:`stat_result` object for this entry. This method
2568 follows symbolic links by default; to stat a symbolic link add the
2569 ``follow_symlinks=False`` argument.
2570
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002571 On Unix, this method always requires a system call. On Windows, it
2572 only requires a system call if *follow_symlinks* is ``True`` and the
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002573 entry is a reparse point (for example, a symbolic link or directory
2574 junction).
Victor Stinner6036e442015-03-08 01:58:04 +01002575
2576 On Windows, the ``st_ino``, ``st_dev`` and ``st_nlink`` attributes of the
2577 :class:`stat_result` are always set to zero. Call :func:`os.stat` to
2578 get these attributes.
2579
Brett Cannona32c4d02016-06-24 14:14:44 -07002580 The result is cached on the ``os.DirEntry`` object, with a separate cache
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002581 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` to
2582 fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002583
Guido van Rossum1469d742016-01-06 11:36:03 -08002584 Note that there is a nice correspondence between several attributes
Brett Cannona32c4d02016-06-24 14:14:44 -07002585 and methods of ``os.DirEntry`` and of :class:`pathlib.Path`. In
Brett Cannonc28592b2016-06-24 12:21:47 -07002586 particular, the ``name`` attribute has the same
Guido van Rossum1469d742016-01-06 11:36:03 -08002587 meaning, as do the ``is_dir()``, ``is_file()``, ``is_symlink()``
2588 and ``stat()`` methods.
2589
Victor Stinner6036e442015-03-08 01:58:04 +01002590 .. versionadded:: 3.5
2591
Brett Cannon96881cd2016-06-10 14:37:21 -07002592 .. versionchanged:: 3.6
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002593 Added support for the :class:`~os.PathLike` interface. Added support
2594 for :class:`bytes` paths on Windows.
Brett Cannon96881cd2016-06-10 14:37:21 -07002595
Victor Stinner6036e442015-03-08 01:58:04 +01002596
Andre Delfinodcc997c2020-12-16 22:37:28 -03002597.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002598
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002599 Get the status of a file or a file descriptor. Perform the equivalent of a
2600 :c:func:`stat` system call on the given path. *path* may be specified as
Xiang Zhang4459e002017-01-22 13:04:17 +08002601 either a string or bytes -- directly or indirectly through the :class:`PathLike`
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002602 interface -- or as an open file descriptor. Return a :class:`stat_result`
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002603 object.
Georg Brandl116aa622007-08-15 14:28:22 +00002604
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002605 This function normally follows symlinks; to stat a symlink add the argument
2606 ``follow_symlinks=False``, or use :func:`lstat`.
R. David Murray7b1aae92011-01-24 19:34:58 +00002607
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002608 This function can support :ref:`specifying a file descriptor <path_fd>` and
2609 :ref:`not following symlinks <follow_symlinks>`.
Georg Brandl116aa622007-08-15 14:28:22 +00002610
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002611 On Windows, passing ``follow_symlinks=False`` will disable following all
2612 name-surrogate reparse points, which includes symlinks and directory
2613 junctions. Other types of reparse points that do not resemble links or that
2614 the operating system is unable to follow will be opened directly. When
2615 following a chain of multiple links, this may result in the original link
2616 being returned instead of the non-link that prevented full traversal. To
2617 obtain stat results for the final path in this case, use the
2618 :func:`os.path.realpath` function to resolve the path name as far as
2619 possible and call :func:`lstat` on the result. This does not apply to
2620 dangling symlinks or junction points, which will raise the usual exceptions.
2621
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002622 .. index:: module: stat
R. David Murray7b1aae92011-01-24 19:34:58 +00002623
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002624 Example::
Georg Brandl116aa622007-08-15 14:28:22 +00002625
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002626 >>> import os
2627 >>> statinfo = os.stat('somefile.txt')
2628 >>> statinfo
2629 os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2630 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2631 st_mtime=1297230027, st_ctime=1297230027)
2632 >>> statinfo.st_size
2633 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002634
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002635 .. seealso::
Zachary Ware63f277b2014-06-19 09:46:37 -05002636
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002637 :func:`fstat` and :func:`lstat` functions.
2638
2639 .. versionadded:: 3.3
2640 Added the *dir_fd* and *follow_symlinks* arguments, specifying a file
2641 descriptor instead of a path.
2642
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002643 .. versionchanged:: 3.6
2644 Accepts a :term:`path-like object`.
2645
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002646 .. versionchanged:: 3.8
2647 On Windows, all reparse points that can be resolved by the operating
2648 system are now followed, and passing ``follow_symlinks=False``
2649 disables following all name surrogate reparse points. If the operating
2650 system reaches a reparse point that it is not able to follow, *stat* now
2651 returns the information for the original path as if
2652 ``follow_symlinks=False`` had been specified instead of raising an error.
2653
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002654
2655.. class:: stat_result
2656
2657 Object whose attributes correspond roughly to the members of the
2658 :c:type:`stat` structure. It is used for the result of :func:`os.stat`,
2659 :func:`os.fstat` and :func:`os.lstat`.
2660
2661 Attributes:
2662
2663 .. attribute:: st_mode
2664
2665 File mode: file type and file mode bits (permissions).
2666
2667 .. attribute:: st_ino
2668
Steve Dower3e51a3d2018-05-28 17:24:36 -07002669 Platform dependent, but if non-zero, uniquely identifies the
2670 file for a given value of ``st_dev``. Typically:
2671
2672 * the inode number on Unix,
2673 * the `file index
2674 <https://msdn.microsoft.com/en-us/library/aa363788>`_ on
2675 Windows
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002676
2677 .. attribute:: st_dev
2678
2679 Identifier of the device on which this file resides.
2680
2681 .. attribute:: st_nlink
2682
2683 Number of hard links.
2684
2685 .. attribute:: st_uid
2686
2687 User identifier of the file owner.
2688
2689 .. attribute:: st_gid
2690
2691 Group identifier of the file owner.
2692
2693 .. attribute:: st_size
2694
2695 Size of the file in bytes, if it is a regular file or a symbolic link.
2696 The size of a symbolic link is the length of the pathname it contains,
2697 without a terminating null byte.
2698
2699 Timestamps:
2700
2701 .. attribute:: st_atime
2702
2703 Time of most recent access expressed in seconds.
2704
2705 .. attribute:: st_mtime
2706
2707 Time of most recent content modification expressed in seconds.
2708
2709 .. attribute:: st_ctime
2710
2711 Platform dependent:
2712
2713 * the time of most recent metadata change on Unix,
2714 * the time of creation on Windows, expressed in seconds.
2715
2716 .. attribute:: st_atime_ns
2717
2718 Time of most recent access expressed in nanoseconds as an integer.
2719
2720 .. attribute:: st_mtime_ns
2721
2722 Time of most recent content modification expressed in nanoseconds as an
2723 integer.
2724
2725 .. attribute:: st_ctime_ns
2726
2727 Platform dependent:
2728
2729 * the time of most recent metadata change on Unix,
2730 * the time of creation on Windows, expressed in nanoseconds as an
2731 integer.
2732
Georg Brandl116aa622007-08-15 14:28:22 +00002733 .. note::
2734
Senthil Kumaran3aac1792011-07-04 11:43:51 -07002735 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07002736 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
2737 system and the file system. For example, on Windows systems using the FAT
2738 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
2739 :attr:`st_atime` has only 1-day resolution. See your operating system
2740 documentation for details.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002741
Larry Hastings6fe20b32012-04-19 15:07:49 -07002742 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
2743 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
2744 systems do not provide nanosecond precision. On systems that do
2745 provide nanosecond precision, the floating-point object used to
2746 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
2747 cannot preserve all of it, and as such will be slightly inexact.
2748 If you need the exact timestamps you should always use
2749 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00002750
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002751 On some Unix systems (such as Linux), the following attributes may also be
2752 available:
2753
2754 .. attribute:: st_blocks
2755
2756 Number of 512-byte blocks allocated for file.
2757 This may be smaller than :attr:`st_size`/512 when the file has holes.
2758
2759 .. attribute:: st_blksize
2760
2761 "Preferred" blocksize for efficient file system I/O. Writing to a file in
2762 smaller chunks may cause an inefficient read-modify-rewrite.
2763
2764 .. attribute:: st_rdev
2765
2766 Type of device if an inode device.
2767
2768 .. attribute:: st_flags
2769
2770 User defined flags for file.
2771
2772 On other Unix systems (such as FreeBSD), the following attributes may be
2773 available (but may be only filled out if root tries to use them):
2774
2775 .. attribute:: st_gen
2776
2777 File generation number.
2778
2779 .. attribute:: st_birthtime
2780
2781 Time of file creation.
2782
jcea6c51d512018-01-28 14:00:08 +01002783 On Solaris and derivatives, the following attributes may also be
2784 available:
2785
2786 .. attribute:: st_fstype
2787
2788 String that uniquely identifies the type of the filesystem that
2789 contains the file.
2790
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002791 On Mac OS systems, the following attributes may also be available:
2792
2793 .. attribute:: st_rsize
2794
2795 Real size of the file.
2796
2797 .. attribute:: st_creator
2798
2799 Creator of the file.
2800
2801 .. attribute:: st_type
2802
2803 File type.
2804
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002805 On Windows systems, the following attributes are also available:
Victor Stinnere1d24f72014-07-24 12:44:07 +02002806
2807 .. attribute:: st_file_attributes
2808
2809 Windows file attributes: ``dwFileAttributes`` member of the
2810 ``BY_HANDLE_FILE_INFORMATION`` structure returned by
2811 :c:func:`GetFileInformationByHandle`. See the ``FILE_ATTRIBUTE_*``
2812 constants in the :mod:`stat` module.
2813
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002814 .. attribute:: st_reparse_tag
2815
2816 When :attr:`st_file_attributes` has the ``FILE_ATTRIBUTE_REPARSE_POINT``
2817 set, this field contains the tag identifying the type of reparse point.
2818 See the ``IO_REPARSE_TAG_*`` constants in the :mod:`stat` module.
2819
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002820 The standard module :mod:`stat` defines functions and constants that are
2821 useful for extracting information from a :c:type:`stat` structure. (On
2822 Windows, some items are filled with dummy values.)
2823
2824 For backward compatibility, a :class:`stat_result` instance is also
Georg Brandl50c40002012-06-24 11:45:20 +02002825 accessible as a tuple of at least 10 integers giving the most important (and
2826 portable) members of the :c:type:`stat` structure, in the order
2827 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
2828 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
2829 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002830 some implementations. For compatibility with older Python versions,
2831 accessing :class:`stat_result` as a tuple always returns integers.
Georg Brandl116aa622007-08-15 14:28:22 +00002832
Larry Hastings6fe20b32012-04-19 15:07:49 -07002833 .. versionadded:: 3.3
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002834 Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and
2835 :attr:`st_ctime_ns` members.
Larry Hastings6fe20b32012-04-19 15:07:49 -07002836
Zachary Ware63f277b2014-06-19 09:46:37 -05002837 .. versionadded:: 3.5
2838 Added the :attr:`st_file_attributes` member on Windows.
2839
Steve Dower3e51a3d2018-05-28 17:24:36 -07002840 .. versionchanged:: 3.5
2841 Windows now returns the file index as :attr:`st_ino` when
2842 available.
2843
jcea6c51d512018-01-28 14:00:08 +01002844 .. versionadded:: 3.7
2845 Added the :attr:`st_fstype` member to Solaris/derivatives.
Georg Brandl116aa622007-08-15 14:28:22 +00002846
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002847 .. versionadded:: 3.8
2848 Added the :attr:`st_reparse_tag` member on Windows.
2849
2850 .. versionchanged:: 3.8
2851 On Windows, the :attr:`st_mode` member now identifies special
2852 files as :const:`S_IFCHR`, :const:`S_IFIFO` or :const:`S_IFBLK`
2853 as appropriate.
2854
Georg Brandl116aa622007-08-15 14:28:22 +00002855.. function:: statvfs(path)
2856
Georg Brandl60203b42010-10-06 10:11:56 +00002857 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002858 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002859 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002860 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2861 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Giuseppe Scrivano96a5e502017-12-14 23:46:46 +01002862 :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002863
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002864 Two module-level constants are defined for the :attr:`f_flag` attribute's
2865 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2866 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2867 setuid/setgid bits are disabled or not supported.
2868
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002869 Additional module-level constants are defined for GNU/glibc based systems.
2870 These are :const:`ST_NODEV` (disallow access to device special files),
2871 :const:`ST_NOEXEC` (disallow program execution), :const:`ST_SYNCHRONOUS`
2872 (writes are synced at once), :const:`ST_MANDLOCK` (allow mandatory locks on an FS),
2873 :const:`ST_WRITE` (write on file/directory/symlink), :const:`ST_APPEND`
2874 (append-only file), :const:`ST_IMMUTABLE` (immutable file), :const:`ST_NOATIME`
2875 (do not update access times), :const:`ST_NODIRATIME` (do not update directory access
2876 times), :const:`ST_RELATIME` (update atime relative to mtime/ctime).
2877
Georg Brandl50c40002012-06-24 11:45:20 +02002878 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002879
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002880 .. availability:: Unix.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002881
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002882 .. versionchanged:: 3.2
2883 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2884
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002885 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04002886 Added support for specifying *path* as an open file descriptor.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002887
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002888 .. versionchanged:: 3.4
2889 The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`,
2890 :const:`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`,
2891 :const:`ST_IMMUTABLE`, :const:`ST_NOATIME`, :const:`ST_NODIRATIME`,
2892 and :const:`ST_RELATIME` constants were added.
2893
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002894 .. versionchanged:: 3.6
2895 Accepts a :term:`path-like object`.
Georg Brandl116aa622007-08-15 14:28:22 +00002896
Giuseppe Scrivano96a5e502017-12-14 23:46:46 +01002897 .. versionadded:: 3.7
2898 Added :attr:`f_fsid`.
2899
Larry Hastings9cf065c2012-06-22 16:30:09 -07002900
2901.. data:: supports_dir_fd
2902
Cheryl Sabellae1521692019-05-06 08:39:13 -04002903 A :class:`set` object indicating which functions in the :mod:`os`
2904 module accept an open file descriptor for their *dir_fd* parameter.
2905 Different platforms provide different features, and the underlying
2906 functionality Python uses to implement the *dir_fd* parameter is not
2907 available on all platforms Python supports. For consistency's sake,
2908 functions that may support *dir_fd* always allow specifying the
2909 parameter, but will throw an exception if the functionality is used
2910 when it's not locally available. (Specifying ``None`` for *dir_fd*
2911 is always supported on all platforms.)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002912
Cheryl Sabellae1521692019-05-06 08:39:13 -04002913 To check whether a particular function accepts an open file descriptor
2914 for its *dir_fd* parameter, use the ``in`` operator on ``supports_dir_fd``.
2915 As an example, this expression evaluates to ``True`` if :func:`os.stat`
2916 accepts open file descriptors for *dir_fd* on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002917
2918 os.stat in os.supports_dir_fd
2919
Cheryl Sabellae1521692019-05-06 08:39:13 -04002920 Currently *dir_fd* parameters only work on Unix platforms;
2921 none of them work on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002922
2923 .. versionadded:: 3.3
2924
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002925
Larry Hastings9cf065c2012-06-22 16:30:09 -07002926.. data:: supports_effective_ids
2927
Cheryl Sabellae1521692019-05-06 08:39:13 -04002928 A :class:`set` object indicating whether :func:`os.access` permits
2929 specifying ``True`` for its *effective_ids* parameter on the local platform.
2930 (Specifying ``False`` for *effective_ids* is always supported on all
2931 platforms.) If the local platform supports it, the collection will contain
2932 :func:`os.access`; otherwise it will be empty.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002933
Cheryl Sabellae1521692019-05-06 08:39:13 -04002934 This expression evaluates to ``True`` if :func:`os.access` supports
2935 ``effective_ids=True`` on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002936
2937 os.access in os.supports_effective_ids
2938
Cheryl Sabellae1521692019-05-06 08:39:13 -04002939 Currently *effective_ids* is only supported on Unix platforms;
2940 it does not work on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002941
2942 .. versionadded:: 3.3
2943
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002944
Larry Hastings9cf065c2012-06-22 16:30:09 -07002945.. data:: supports_fd
2946
Cheryl Sabellae1521692019-05-06 08:39:13 -04002947 A :class:`set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002948 :mod:`os` module permit specifying their *path* parameter as an open file
Cheryl Sabellae1521692019-05-06 08:39:13 -04002949 descriptor on the local platform. Different platforms provide different
2950 features, and the underlying functionality Python uses to accept open file
2951 descriptors as *path* arguments is not available on all platforms Python
2952 supports.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002953
Cheryl Sabellae1521692019-05-06 08:39:13 -04002954 To determine whether a particular function permits specifying an open file
Larry Hastings9cf065c2012-06-22 16:30:09 -07002955 descriptor for its *path* parameter, use the ``in`` operator on
Cheryl Sabellae1521692019-05-06 08:39:13 -04002956 ``supports_fd``. As an example, this expression evaluates to ``True`` if
2957 :func:`os.chdir` accepts open file descriptors for *path* on your local
Larry Hastings9cf065c2012-06-22 16:30:09 -07002958 platform::
2959
2960 os.chdir in os.supports_fd
2961
2962 .. versionadded:: 3.3
2963
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002964
Larry Hastings9cf065c2012-06-22 16:30:09 -07002965.. data:: supports_follow_symlinks
2966
Cheryl Sabellae1521692019-05-06 08:39:13 -04002967 A :class:`set` object indicating which functions in the :mod:`os` module
2968 accept ``False`` for their *follow_symlinks* parameter on the local platform.
2969 Different platforms provide different features, and the underlying
2970 functionality Python uses to implement *follow_symlinks* is not available
2971 on all platforms Python supports. For consistency's sake, functions that
2972 may support *follow_symlinks* always allow specifying the parameter, but
2973 will throw an exception if the functionality is used when it's not locally
2974 available. (Specifying ``True`` for *follow_symlinks* is always supported
2975 on all platforms.)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002976
Cheryl Sabellae1521692019-05-06 08:39:13 -04002977 To check whether a particular function accepts ``False`` for its
2978 *follow_symlinks* parameter, use the ``in`` operator on
2979 ``supports_follow_symlinks``. As an example, this expression evaluates
2980 to ``True`` if you may specify ``follow_symlinks=False`` when calling
2981 :func:`os.stat` on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002982
2983 os.stat in os.supports_follow_symlinks
2984
2985 .. versionadded:: 3.3
2986
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002987
Martin Panterbf19d162015-09-09 01:01:13 +00002988.. function:: symlink(src, dst, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002989
Martin Panterbf19d162015-09-09 01:01:13 +00002990 Create a symbolic link pointing to *src* named *dst*.
Brian Curtinc7395692010-07-09 15:15:09 +00002991
Larry Hastings9cf065c2012-06-22 16:30:09 -07002992 On Windows, a symlink represents either a file or a directory, and does not
Jason R. Coombs3a092862013-05-27 23:21:28 -04002993 morph to the target dynamically. If the target is present, the type of the
2994 symlink will be created to match. Otherwise, the symlink will be created
2995 as a directory if *target_is_directory* is ``True`` or a file symlink (the
l-n-sdaeb3c42018-11-14 00:13:12 +00002996 default) otherwise. On non-Windows platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002997
Georg Brandl50c40002012-06-24 11:45:20 +02002998 This function can support :ref:`paths relative to directory descriptors
2999 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07003000
Brian Curtin52173d42010-12-02 18:29:18 +00003001 .. note::
3002
Vidar Tonaas Fauske0e107662019-04-09 20:19:46 +02003003 On newer versions of Windows 10, unprivileged accounts can create symlinks
3004 if Developer Mode is enabled. When Developer Mode is not available/enabled,
3005 the *SeCreateSymbolicLinkPrivilege* privilege is required, or the process
3006 must be run as an administrator.
Brian Curtin96245592010-12-28 17:08:22 +00003007
Jason R. Coombs3a092862013-05-27 23:21:28 -04003008
Brian Curtin96245592010-12-28 17:08:22 +00003009 :exc:`OSError` is raised when the function is called by an unprivileged
3010 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00003011
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003012 .. audit-event:: os.symlink src,dst,dir_fd os.symlink
3013
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003014 .. availability:: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00003015
Georg Brandlb3823372010-07-10 08:58:37 +00003016 .. versionchanged:: 3.2
3017 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00003018
Larry Hastings9cf065c2012-06-22 16:30:09 -07003019 .. versionadded:: 3.3
3020 Added the *dir_fd* argument, and now allow *target_is_directory*
3021 on non-Windows platforms.
3022
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003023 .. versionchanged:: 3.6
3024 Accepts a :term:`path-like object` for *src* and *dst*.
3025
Vidar Tonaas Fauske0e107662019-04-09 20:19:46 +02003026 .. versionchanged:: 3.8
3027 Added support for unelevated symlinks on Windows with Developer Mode.
3028
Georg Brandl116aa622007-08-15 14:28:22 +00003029
Ross Lagerwall7807c352011-03-17 20:20:30 +02003030.. function:: sync()
3031
3032 Force write of everything to disk.
3033
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003034 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02003035
3036 .. versionadded:: 3.3
3037
3038
3039.. function:: truncate(path, length)
3040
3041 Truncate the file corresponding to *path*, so that it is at most
3042 *length* bytes in size.
3043
Georg Brandl306336b2012-06-24 12:55:33 +02003044 This function can support :ref:`specifying a file descriptor <path_fd>`.
3045
Steve Dower44f91c32019-06-27 10:47:59 -07003046 .. audit-event:: os.truncate path,length os.truncate
Steve Dowerb82e17e2019-05-23 08:45:22 -07003047
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003048 .. availability:: Unix, Windows.
Ross Lagerwall7807c352011-03-17 20:20:30 +02003049
3050 .. versionadded:: 3.3
3051
Steve Dowerfe0a41a2015-03-20 19:50:46 -07003052 .. versionchanged:: 3.5
3053 Added support for Windows
Ross Lagerwall7807c352011-03-17 20:20:30 +02003054
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003055 .. versionchanged:: 3.6
3056 Accepts a :term:`path-like object`.
3057
3058
Larry Hastingsb698d8e2012-06-23 16:55:07 -07003059.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00003060
Brett Cannon05039172015-12-28 17:28:19 -08003061 Remove (delete) the file *path*. This function is semantically
3062 identical to :func:`remove`; the ``unlink`` name is its
3063 traditional Unix name. Please see the documentation for
3064 :func:`remove` for further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003065
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003066 .. audit-event:: os.remove path,dir_fd os.unlink
3067
Larry Hastings9cf065c2012-06-22 16:30:09 -07003068 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07003069 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00003070
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003071 .. versionchanged:: 3.6
3072 Accepts a :term:`path-like object`.
3073
Larry Hastings9cf065c2012-06-22 16:30:09 -07003074
Martin Panterbf19d162015-09-09 01:01:13 +00003075.. function:: utime(path, times=None, *[, ns], dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00003076
Larry Hastings76ad59b2012-05-03 00:30:07 -07003077 Set the access and modified times of the file specified by *path*.
3078
3079 :func:`utime` takes two optional parameters, *times* and *ns*.
3080 These specify the times set on *path* and are used as follows:
3081
Martin Panterbf19d162015-09-09 01:01:13 +00003082 - If *ns* is specified,
Larry Hastings76ad59b2012-05-03 00:30:07 -07003083 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
3084 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07003085 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07003086 it must be a 2-tuple of the form ``(atime, mtime)``
3087 where each member is an int or float expressing seconds.
Martin Panterbf19d162015-09-09 01:01:13 +00003088 - If *times* is ``None`` and *ns* is unspecified,
Larry Hastings9cf065c2012-06-22 16:30:09 -07003089 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07003090 where both times are the current time.
Larry Hastings76ad59b2012-05-03 00:30:07 -07003091
Larry Hastings9cf065c2012-06-22 16:30:09 -07003092 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07003093
Stéphane Wirtel7508a542018-05-01 12:02:26 +02003094 Note that the exact times you set here may not be returned by a subsequent
3095 :func:`~os.stat` call, depending on the resolution with which your operating
3096 system records access and modification times; see :func:`~os.stat`. The best
3097 way to preserve exact times is to use the *st_atime_ns* and *st_mtime_ns*
3098 fields from the :func:`os.stat` result object with the *ns* parameter to
3099 `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00003100
Georg Brandl50c40002012-06-24 11:45:20 +02003101 This function can support :ref:`specifying a file descriptor <path_fd>`,
3102 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
3103 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07003104
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003105 .. audit-event:: os.utime path,times,ns,dir_fd os.utime
3106
Larry Hastings76ad59b2012-05-03 00:30:07 -07003107 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04003108 Added support for specifying *path* as an open file descriptor,
Larry Hastings9cf065c2012-06-22 16:30:09 -07003109 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07003110
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003111 .. versionchanged:: 3.6
3112 Accepts a :term:`path-like object`.
3113
Georg Brandl116aa622007-08-15 14:28:22 +00003114
Georg Brandl18244152009-09-02 20:34:52 +00003115.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00003116
3117 .. index::
3118 single: directory; walking
3119 single: directory; traversal
3120
Christian Heimesfaf2f632008-01-06 16:59:19 +00003121 Generate the file names in a directory tree by walking the tree
3122 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00003123 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
3124 filenames)``.
3125
3126 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
3127 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
3128 *filenames* is a list of the names of the non-directory files in *dirpath*.
3129 Note that the names in the lists contain no path components. To get a full path
3130 (which begins with *top*) to a file or directory in *dirpath*, do
Serhiy Storchaka306cfb32020-09-04 21:19:30 +03003131 ``os.path.join(dirpath, name)``. Whether or not the lists are sorted
3132 depends on the file system. If a file is removed from or added to the
3133 *dirpath* directory during generating the lists, whether a name for that
3134 file be included is unspecified.
Georg Brandl116aa622007-08-15 14:28:22 +00003135
Christian Heimesfaf2f632008-01-06 16:59:19 +00003136 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00003137 directory is generated before the triples for any of its subdirectories
Benjamin Petersone58e0c72014-06-15 20:51:12 -07003138 (directories are generated top-down). If *topdown* is ``False``, the triple
3139 for a directory is generated after the triples for all of its subdirectories
3140 (directories are generated bottom-up). No matter the value of *topdown*, the
3141 list of subdirectories is retrieved before the tuples for the directory and
3142 its subdirectories are generated.
Georg Brandl116aa622007-08-15 14:28:22 +00003143
Christian Heimesfaf2f632008-01-06 16:59:19 +00003144 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00003145 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
3146 recurse into the subdirectories whose names remain in *dirnames*; this can be
3147 used to prune the search, impose a specific order of visiting, or even to inform
3148 :func:`walk` about directories the caller creates or renames before it resumes
Victor Stinner0e316f62015-10-23 12:38:11 +02003149 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` has
3150 no effect on the behavior of the walk, because in bottom-up mode the directories
3151 in *dirnames* are generated before *dirpath* itself is generated.
Georg Brandl116aa622007-08-15 14:28:22 +00003152
Andrés Delfinobadb8942018-04-02 23:48:54 -03003153 By default, errors from the :func:`scandir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00003154 argument *onerror* is specified, it should be a function; it will be called with
3155 one argument, an :exc:`OSError` instance. It can report the error to continue
3156 with the walk, or raise the exception to abort the walk. Note that the filename
3157 is available as the ``filename`` attribute of the exception object.
3158
3159 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00003160 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00003161 symlinks, on systems that support them.
3162
Georg Brandl116aa622007-08-15 14:28:22 +00003163 .. note::
3164
Georg Brandl50c40002012-06-24 11:45:20 +02003165 Be aware that setting *followlinks* to ``True`` can lead to infinite
3166 recursion if a link points to a parent directory of itself. :func:`walk`
3167 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00003168
3169 .. note::
3170
3171 If you pass a relative pathname, don't change the current working directory
3172 between resumptions of :func:`walk`. :func:`walk` never changes the current
3173 directory, and assumes that its caller doesn't either.
3174
3175 This example displays the number of bytes taken by non-directory files in each
3176 directory under the starting directory, except that it doesn't look under any
3177 CVS subdirectory::
3178
3179 import os
3180 from os.path import join, getsize
3181 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00003182 print(root, "consumes", end=" ")
3183 print(sum(getsize(join(root, name)) for name in files), end=" ")
3184 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00003185 if 'CVS' in dirs:
3186 dirs.remove('CVS') # don't visit CVS directories
3187
Victor Stinner47c41b42015-03-10 13:31:47 +01003188 In the next example (simple implementation of :func:`shutil.rmtree`),
3189 walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
3190 deleting a directory before the directory is empty::
Georg Brandl116aa622007-08-15 14:28:22 +00003191
Christian Heimesfaf2f632008-01-06 16:59:19 +00003192 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00003193 # assuming there are no symbolic links.
3194 # CAUTION: This is dangerous! For example, if top == '/', it
3195 # could delete all your disk files.
3196 import os
3197 for root, dirs, files in os.walk(top, topdown=False):
3198 for name in files:
3199 os.remove(os.path.join(root, name))
3200 for name in dirs:
3201 os.rmdir(os.path.join(root, name))
3202
Serhiy Storchakadb283b32020-03-08 14:31:47 +02003203 .. audit-event:: os.walk top,topdown,onerror,followlinks os.walk
3204
Victor Stinner524a5ba2015-03-10 13:20:34 +01003205 .. versionchanged:: 3.5
Victor Stinner51b58322015-05-15 09:12:58 +02003206 This function now calls :func:`os.scandir` instead of :func:`os.listdir`,
3207 making it faster by reducing the number of calls to :func:`os.stat`.
Victor Stinner524a5ba2015-03-10 13:20:34 +01003208
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003209 .. versionchanged:: 3.6
3210 Accepts a :term:`path-like object`.
3211
Georg Brandl116aa622007-08-15 14:28:22 +00003212
Larry Hastingsb4038062012-07-15 10:57:38 -07003213.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)
Charles-François Natali7372b062012-02-05 15:15:38 +01003214
3215 .. index::
3216 single: directory; walking
3217 single: directory; traversal
3218
Eli Benderskyd049d5c2012-02-11 09:52:29 +02003219 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
Larry Hastingsc48fe982012-06-25 04:49:05 -07003220 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``.
Charles-François Natali7372b062012-02-05 15:15:38 +01003221
3222 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
3223 and *dirfd* is a file descriptor referring to the directory *dirpath*.
3224
Larry Hastingsc48fe982012-06-25 04:49:05 -07003225 This function always supports :ref:`paths relative to directory descriptors
Larry Hastingsb4038062012-07-15 10:57:38 -07003226 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however
Larry Hastings950b76a2012-07-15 17:32:36 -07003227 that, unlike other functions, the :func:`fwalk` default value for
Larry Hastingsb4038062012-07-15 10:57:38 -07003228 *follow_symlinks* is ``False``.
Larry Hastingsc48fe982012-06-25 04:49:05 -07003229
Charles-François Natali7372b062012-02-05 15:15:38 +01003230 .. note::
3231
3232 Since :func:`fwalk` yields file descriptors, those are only valid until
3233 the next iteration step, so you should duplicate them (e.g. with
3234 :func:`dup`) if you want to keep them longer.
3235
3236 This example displays the number of bytes taken by non-directory files in each
3237 directory under the starting directory, except that it doesn't look under any
3238 CVS subdirectory::
3239
3240 import os
3241 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
3242 print(root, "consumes", end="")
Hynek Schlawack1729b8f2012-06-24 16:11:08 +02003243 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
Charles-François Natali7372b062012-02-05 15:15:38 +01003244 end="")
3245 print("bytes in", len(files), "non-directory files")
3246 if 'CVS' in dirs:
3247 dirs.remove('CVS') # don't visit CVS directories
3248
3249 In the next example, walking the tree bottom-up is essential:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003250 :func:`rmdir` doesn't allow deleting a directory before the directory is
Charles-François Natali7372b062012-02-05 15:15:38 +01003251 empty::
3252
3253 # Delete everything reachable from the directory named in "top",
3254 # assuming there are no symbolic links.
3255 # CAUTION: This is dangerous! For example, if top == '/', it
3256 # could delete all your disk files.
3257 import os
3258 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
3259 for name in files:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003260 os.unlink(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01003261 for name in dirs:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003262 os.rmdir(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01003263
Serhiy Storchakadb283b32020-03-08 14:31:47 +02003264 .. audit-event:: os.fwalk top,topdown,onerror,follow_symlinks,dir_fd os.fwalk
3265
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003266 .. availability:: Unix.
Charles-François Natali7372b062012-02-05 15:15:38 +01003267
3268 .. versionadded:: 3.3
3269
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003270 .. versionchanged:: 3.6
3271 Accepts a :term:`path-like object`.
3272
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +02003273 .. versionchanged:: 3.7
3274 Added support for :class:`bytes` paths.
3275
Charles-François Natali7372b062012-02-05 15:15:38 +01003276
Zackery Spytz43fdbd22019-05-29 13:57:07 -06003277.. function:: memfd_create(name[, flags=os.MFD_CLOEXEC])
3278
3279 Create an anonymous file and return a file descriptor that refers to it.
3280 *flags* must be one of the ``os.MFD_*`` constants available on the system
3281 (or a bitwise ORed combination of them). By default, the new file
3282 descriptor is :ref:`non-inheritable <fd_inheritance>`.
3283
Victor Stinnerccf0efb2019-06-05 12:24:52 +02003284 The name supplied in *name* is used as a filename and will be displayed as
3285 the target of the corresponding symbolic link in the directory
3286 ``/proc/self/fd/``. The displayed name is always prefixed with ``memfd:``
3287 and serves only for debugging purposes. Names do not affect the behavior of
3288 the file descriptor, and as such multiple files can have the same name
3289 without any side effects.
3290
Zackery Spytz43fdbd22019-05-29 13:57:07 -06003291 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer.
3292
3293 .. versionadded:: 3.8
3294
3295
3296.. data:: MFD_CLOEXEC
3297 MFD_ALLOW_SEALING
3298 MFD_HUGETLB
3299 MFD_HUGE_SHIFT
3300 MFD_HUGE_MASK
3301 MFD_HUGE_64KB
3302 MFD_HUGE_512KB
3303 MFD_HUGE_1MB
3304 MFD_HUGE_2MB
3305 MFD_HUGE_8MB
3306 MFD_HUGE_16MB
3307 MFD_HUGE_32MB
3308 MFD_HUGE_256MB
3309 MFD_HUGE_512MB
3310 MFD_HUGE_1GB
3311 MFD_HUGE_2GB
3312 MFD_HUGE_16GB
3313
3314 These flags can be passed to :func:`memfd_create`.
3315
3316 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer. The
3317 ``MFD_HUGE*`` flags are only available since Linux 4.14.
3318
3319 .. versionadded:: 3.8
3320
3321
Christian Heimescd9fed62020-11-13 19:48:52 +01003322.. function:: eventfd(initval[, flags=os.EFD_CLOEXEC])
3323
3324 Create and return an event file descriptor. The file descriptors supports
3325 raw :func:`read` and :func:`write` with a buffer size of 8,
3326 :func:`~select.select`, :func:`~select.poll` and similar. See man page
3327 :manpage:`eventfd(2)` for more information. By default, the
3328 new file descriptor is :ref:`non-inheritable <fd_inheritance>`.
3329
3330 *initval* is the initial value of the event counter. The initial value
3331 must be an 32 bit unsigned integer. Please note that the initial value is
3332 limited to a 32 bit unsigned int although the event counter is an unsigned
3333 64 bit integer with a maximum value of 2\ :sup:`64`\ -\ 2.
3334
3335 *flags* can be constructed from :const:`EFD_CLOEXEC`,
3336 :const:`EFD_NONBLOCK`, and :const:`EFD_SEMAPHORE`.
3337
3338 If :const:`EFD_SEMAPHORE` is specified and the event counter is non-zero,
3339 :func:`eventfd_read` returns 1 and decrements the counter by one.
3340
3341 If :const:`EFD_SEMAPHORE` is not specified and the event counter is
3342 non-zero, :func:`eventfd_read` returns the current event counter value and
3343 resets the counter to zero.
3344
3345 If the event counter is zero and :const:`EFD_NONBLOCK` is not
3346 specified, :func:`eventfd_read` blocks.
3347
3348 :func:`eventfd_write` increments the event counter. Write blocks if the
3349 write operation would increment the counter to a value larger than
3350 2\ :sup:`64`\ -\ 2.
3351
3352 Example::
3353
3354 import os
3355
3356 # semaphore with start value '1'
3357 fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)
3358 try:
3359 # acquire semaphore
3360 v = os.eventfd_read(fd)
3361 try:
3362 do_work()
3363 finally:
3364 # release semaphore
3365 os.eventfd_write(fd, v)
3366 finally:
3367 os.close(fd)
3368
3369 .. availability:: Linux 2.6.27 or newer with glibc 2.8 or newer.
3370
3371 .. versionadded:: 3.10
3372
3373.. function:: eventfd_read(fd)
3374
3375 Read value from an :func:`eventfd` file descriptor and return a 64 bit
3376 unsigned int. The function does not verify that *fd* is an :func:`eventfd`.
3377
3378 .. availability:: See :func:`eventfd`
3379
3380 .. versionadded:: 3.10
3381
3382.. function:: eventfd_write(fd, value)
3383
3384 Add value to an :func:`eventfd` file descriptor. *value* must be a 64 bit
3385 unsigned int. The function does not verify that *fd* is an :func:`eventfd`.
3386
3387 .. availability:: See :func:`eventfd`
3388
3389 .. versionadded:: 3.10
3390
3391.. data:: EFD_CLOEXEC
3392
3393 Set close-on-exec flag for new :func:`eventfd` file descriptor.
3394
3395 .. availability:: See :func:`eventfd`
3396
3397 .. versionadded:: 3.10
3398
3399.. data:: EFD_NONBLOCK
3400
3401 Set :const:`O_NONBLOCK` status flag for new :func:`eventfd` file
3402 descriptor.
3403
3404 .. availability:: See :func:`eventfd`
3405
3406 .. versionadded:: 3.10
3407
3408.. data:: EFD_SEMAPHORE
3409
3410 Provide semaphore-like semantics for reads from a :func:`eventfd` file
3411 descriptor. On read the internal counter is decremented by one.
3412
3413 .. availability:: Linux 2.6.30 or newer with glibc 2.8 or newer.
3414
3415 .. versionadded:: 3.10
3416
3417
Georg Brandlb9831ab2012-06-24 11:57:07 +02003418Linux extended attributes
3419~~~~~~~~~~~~~~~~~~~~~~~~~
3420
3421.. versionadded:: 3.3
3422
3423These functions are all available on Linux only.
3424
3425.. function:: getxattr(path, attribute, *, follow_symlinks=True)
3426
3427 Return the value of the extended filesystem attribute *attribute* for
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003428 *path*. *attribute* can be bytes or str (directly or indirectly through the
3429 :class:`PathLike` interface). If it is str, it is encoded with the filesystem
3430 encoding.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003431
3432 This function can support :ref:`specifying a file descriptor <path_fd>` and
3433 :ref:`not following symlinks <follow_symlinks>`.
3434
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003435 .. audit-event:: os.getxattr path,attribute os.getxattr
3436
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003437 .. versionchanged:: 3.6
Berker Peksagd4d48742017-02-19 03:17:35 +03003438 Accepts a :term:`path-like object` for *path* and *attribute*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003439
Georg Brandlb9831ab2012-06-24 11:57:07 +02003440
3441.. function:: listxattr(path=None, *, follow_symlinks=True)
3442
3443 Return a list of the extended filesystem attributes on *path*. The
3444 attributes in the list are represented as strings decoded with the filesystem
3445 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
3446 directory.
3447
3448 This function can support :ref:`specifying a file descriptor <path_fd>` and
3449 :ref:`not following symlinks <follow_symlinks>`.
3450
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003451 .. audit-event:: os.listxattr path os.listxattr
3452
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003453 .. versionchanged:: 3.6
3454 Accepts a :term:`path-like object`.
3455
Georg Brandlb9831ab2012-06-24 11:57:07 +02003456
3457.. function:: removexattr(path, attribute, *, follow_symlinks=True)
3458
3459 Removes the extended filesystem attribute *attribute* from *path*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003460 *attribute* should be bytes or str (directly or indirectly through the
3461 :class:`PathLike` interface). If it is a string, it is encoded
Victor Stinner4b9aad42020-11-02 16:49:54 +01003462 with the :term:`filesystem encoding and error handler`.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003463
3464 This function can support :ref:`specifying a file descriptor <path_fd>` and
3465 :ref:`not following symlinks <follow_symlinks>`.
3466
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003467 .. audit-event:: os.removexattr path,attribute os.removexattr
3468
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003469 .. versionchanged:: 3.6
3470 Accepts a :term:`path-like object` for *path* and *attribute*.
3471
Georg Brandlb9831ab2012-06-24 11:57:07 +02003472
3473.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
3474
3475 Set the extended filesystem attribute *attribute* on *path* to *value*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003476 *attribute* must be a bytes or str with no embedded NULs (directly or
3477 indirectly through the :class:`PathLike` interface). If it is a str,
Victor Stinner4b9aad42020-11-02 16:49:54 +01003478 it is encoded with the :term:`filesystem encoding and error handler`. *flags* may be
Georg Brandlb9831ab2012-06-24 11:57:07 +02003479 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
3480 given and the attribute does not exist, ``EEXISTS`` will be raised.
3481 If :data:`XATTR_CREATE` is given and the attribute already exists, the
3482 attribute will not be created and ``ENODATA`` will be raised.
3483
3484 This function can support :ref:`specifying a file descriptor <path_fd>` and
3485 :ref:`not following symlinks <follow_symlinks>`.
3486
3487 .. note::
3488
3489 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
3490 to be ignored on some filesystems.
3491
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003492 .. audit-event:: os.setxattr path,attribute,value,flags os.setxattr
3493
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003494 .. versionchanged:: 3.6
3495 Accepts a :term:`path-like object` for *path* and *attribute*.
3496
Georg Brandlb9831ab2012-06-24 11:57:07 +02003497
3498.. data:: XATTR_SIZE_MAX
3499
3500 The maximum size the value of an extended attribute can be. Currently, this
Serhiy Storchakaf8def282013-02-16 17:29:56 +02003501 is 64 KiB on Linux.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003502
3503
3504.. data:: XATTR_CREATE
3505
3506 This is a possible value for the flags argument in :func:`setxattr`. It
3507 indicates the operation must create an attribute.
3508
3509
3510.. data:: XATTR_REPLACE
3511
3512 This is a possible value for the flags argument in :func:`setxattr`. It
3513 indicates the operation must replace an existing attribute.
3514
3515
Georg Brandl116aa622007-08-15 14:28:22 +00003516.. _os-process:
3517
3518Process Management
3519------------------
3520
3521These functions may be used to create and manage processes.
3522
Serhiy Storchakadab83542013-10-13 20:12:43 +03003523The various :func:`exec\* <execl>` functions take a list of arguments for the new
Georg Brandl116aa622007-08-15 14:28:22 +00003524program loaded into the process. In each case, the first of these arguments is
3525passed to the new program as its own name rather than as an argument a user may
3526have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00003527passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00003528['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
3529to be ignored.
3530
3531
3532.. function:: abort()
3533
3534 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
3535 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02003536 an exit code of ``3``. Be aware that calling this function will not call the
3537 Python signal handler registered for :const:`SIGABRT` with
3538 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003539
Georg Brandl116aa622007-08-15 14:28:22 +00003540
Steve Dower2438cdf2019-03-29 16:37:16 -07003541.. function:: add_dll_directory(path)
3542
3543 Add a path to the DLL search path.
3544
3545 This search path is used when resolving dependencies for imported
3546 extension modules (the module itself is resolved through sys.path),
3547 and also by :mod:`ctypes`.
3548
3549 Remove the directory by calling **close()** on the returned object
3550 or using it in a :keyword:`with` statement.
3551
3552 See the `Microsoft documentation
3553 <https://msdn.microsoft.com/44228cf2-6306-466c-8f16-f513cd3ba8b5>`_
3554 for more information about how DLLs are loaded.
3555
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003556 .. audit-event:: os.add_dll_directory path os.add_dll_directory
3557
Steve Dower2438cdf2019-03-29 16:37:16 -07003558 .. availability:: Windows.
3559
3560 .. versionadded:: 3.8
3561 Previous versions of CPython would resolve DLLs using the default
3562 behavior for the current process. This led to inconsistencies,
3563 such as only sometimes searching :envvar:`PATH` or the current
3564 working directory, and OS functions such as ``AddDllDirectory``
3565 having no effect.
3566
3567 In 3.8, the two primary ways DLLs are loaded now explicitly
3568 override the process-wide behavior to ensure consistency. See the
3569 :ref:`porting notes <bpo-36085-whatsnew>` for information on
3570 updating libraries.
3571
3572
Georg Brandl116aa622007-08-15 14:28:22 +00003573.. function:: execl(path, arg0, arg1, ...)
3574 execle(path, arg0, arg1, ..., env)
3575 execlp(file, arg0, arg1, ...)
3576 execlpe(file, arg0, arg1, ..., env)
3577 execv(path, args)
3578 execve(path, args, env)
3579 execvp(file, args)
3580 execvpe(file, args, env)
3581
3582 These functions all execute a new program, replacing the current process; they
3583 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00003584 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00003585 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00003586
3587 The current process is replaced immediately. Open file objects and
3588 descriptors are not flushed, so if there may be data buffered
3589 on these open files, you should flush them using
3590 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
Serhiy Storchakadab83542013-10-13 20:12:43 +03003591 :func:`exec\* <execl>` function.
Georg Brandl116aa622007-08-15 14:28:22 +00003592
Serhiy Storchakadab83542013-10-13 20:12:43 +03003593 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00003594 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00003595 to work with if the number of parameters is fixed when the code is written; the
3596 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00003597 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00003598 variable, with the arguments being passed in a list or tuple as the *args*
3599 parameter. In either case, the arguments to the child process should start with
3600 the name of the command being run, but this is not enforced.
3601
Christian Heimesfaf2f632008-01-06 16:59:19 +00003602 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00003603 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
3604 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03003605 environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00003606 discussed in the next paragraph), the new environment is used as the source of
3607 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
3608 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
3609 locate the executable; *path* must contain an appropriate absolute or relative
3610 path.
3611
3612 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00003613 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00003614 used to define the environment variables for the new process (these are used
3615 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00003616 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00003617 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00003618
Larry Hastings9cf065c2012-06-22 16:30:09 -07003619 For :func:`execve` on some platforms, *path* may also be specified as an open
3620 file descriptor. This functionality may not be supported on your platform;
3621 you can check whether or not it is available using :data:`os.supports_fd`.
3622 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
3623
Saiyang Gou95f60012020-02-04 16:15:00 -08003624 .. audit-event:: os.exec path,args,env os.execl
3625
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003626 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003627
Larry Hastings9cf065c2012-06-22 16:30:09 -07003628 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04003629 Added support for specifying *path* as an open file descriptor
Larry Hastings9cf065c2012-06-22 16:30:09 -07003630 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00003631
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003632 .. versionchanged:: 3.6
3633 Accepts a :term:`path-like object`.
3634
Georg Brandl116aa622007-08-15 14:28:22 +00003635.. function:: _exit(n)
3636
Georg Brandl6f4e68d2010-10-17 10:51:45 +00003637 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00003638 stdio buffers, etc.
3639
Georg Brandl116aa622007-08-15 14:28:22 +00003640 .. note::
3641
Georg Brandl6f4e68d2010-10-17 10:51:45 +00003642 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
3643 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00003644
Christian Heimesfaf2f632008-01-06 16:59:19 +00003645The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00003646although they are not required. These are typically used for system programs
3647written in Python, such as a mail server's external command delivery program.
3648
3649.. note::
3650
3651 Some of these may not be available on all Unix platforms, since there is some
3652 variation. These constants are defined where they are defined by the underlying
3653 platform.
3654
3655
3656.. data:: EX_OK
3657
Benjamin Petersonf650e462010-05-06 23:03:05 +00003658 Exit code that means no error occurred.
3659
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003660 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003661
Georg Brandl116aa622007-08-15 14:28:22 +00003662
3663.. data:: EX_USAGE
3664
3665 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00003666 number of arguments are given.
3667
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003668 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003669
Georg Brandl116aa622007-08-15 14:28:22 +00003670
3671.. data:: EX_DATAERR
3672
Benjamin Petersonf650e462010-05-06 23:03:05 +00003673 Exit code that means the input data was incorrect.
3674
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003675 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003676
Georg Brandl116aa622007-08-15 14:28:22 +00003677
3678.. data:: EX_NOINPUT
3679
3680 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003681
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003682 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003683
Georg Brandl116aa622007-08-15 14:28:22 +00003684
3685.. data:: EX_NOUSER
3686
Benjamin Petersonf650e462010-05-06 23:03:05 +00003687 Exit code that means a specified user did not exist.
3688
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003689 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003690
Georg Brandl116aa622007-08-15 14:28:22 +00003691
3692.. data:: EX_NOHOST
3693
Benjamin Petersonf650e462010-05-06 23:03:05 +00003694 Exit code that means a specified host did not exist.
3695
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003696 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003697
Georg Brandl116aa622007-08-15 14:28:22 +00003698
3699.. data:: EX_UNAVAILABLE
3700
Benjamin Petersonf650e462010-05-06 23:03:05 +00003701 Exit code that means that a required service is unavailable.
3702
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003703 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003704
Georg Brandl116aa622007-08-15 14:28:22 +00003705
3706.. data:: EX_SOFTWARE
3707
Benjamin Petersonf650e462010-05-06 23:03:05 +00003708 Exit code that means an internal software error was detected.
3709
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003710 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003711
Georg Brandl116aa622007-08-15 14:28:22 +00003712
3713.. data:: EX_OSERR
3714
3715 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003716 inability to fork or create a pipe.
3717
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003718 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003719
Georg Brandl116aa622007-08-15 14:28:22 +00003720
3721.. data:: EX_OSFILE
3722
3723 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00003724 some other kind of error.
3725
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003726 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003727
Georg Brandl116aa622007-08-15 14:28:22 +00003728
3729.. data:: EX_CANTCREAT
3730
3731 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003732
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003733 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003734
Georg Brandl116aa622007-08-15 14:28:22 +00003735
3736.. data:: EX_IOERR
3737
3738 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003739
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003740 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003741
Georg Brandl116aa622007-08-15 14:28:22 +00003742
3743.. data:: EX_TEMPFAIL
3744
3745 Exit code that means a temporary failure occurred. This indicates something
3746 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00003747 made during a retryable operation.
3748
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003749 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003750
Georg Brandl116aa622007-08-15 14:28:22 +00003751
3752.. data:: EX_PROTOCOL
3753
3754 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00003755 understood.
3756
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003757 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003758
Georg Brandl116aa622007-08-15 14:28:22 +00003759
3760.. data:: EX_NOPERM
3761
3762 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003763 operation (but not intended for file system problems).
3764
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003765 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003766
Georg Brandl116aa622007-08-15 14:28:22 +00003767
3768.. data:: EX_CONFIG
3769
3770 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003771
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003772 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003773
Georg Brandl116aa622007-08-15 14:28:22 +00003774
3775.. data:: EX_NOTFOUND
3776
Benjamin Petersonf650e462010-05-06 23:03:05 +00003777 Exit code that means something like "an entry was not found".
3778
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003779 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003780
Georg Brandl116aa622007-08-15 14:28:22 +00003781
3782.. function:: fork()
3783
Christian Heimesfaf2f632008-01-06 16:59:19 +00003784 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003785 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00003786
Larry Hastings3732ed22014-03-15 21:13:56 -07003787 Note that some platforms including FreeBSD <= 6.3 and Cygwin have
Phil Connellb2203002019-11-15 16:56:03 +00003788 known issues when using ``fork()`` from a thread.
3789
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003790 .. audit-event:: os.fork "" os.fork
3791
Phil Connellb2203002019-11-15 16:56:03 +00003792 .. versionchanged:: 3.8
3793 Calling ``fork()`` in a subinterpreter is no longer supported
3794 (:exc:`RuntimeError` is raised).
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00003795
Christian Heimes3046fe42013-10-29 21:08:56 +01003796 .. warning::
3797
3798 See :mod:`ssl` for applications that use the SSL module with fork().
3799
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003800 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003801
3802
3803.. function:: forkpty()
3804
3805 Fork a child process, using a new pseudo-terminal as the child's controlling
3806 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
3807 new child's process id in the parent, and *fd* is the file descriptor of the
3808 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003809 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003810
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003811 .. audit-event:: os.forkpty "" os.forkpty
3812
Phil Connellb2203002019-11-15 16:56:03 +00003813 .. versionchanged:: 3.8
3814 Calling ``forkpty()`` in a subinterpreter is no longer supported
3815 (:exc:`RuntimeError` is raised).
3816
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003817 .. availability:: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003818
3819
3820.. function:: kill(pid, sig)
3821
3822 .. index::
3823 single: process; killing
3824 single: process; signalling
3825
3826 Send signal *sig* to the process *pid*. Constants for the specific signals
3827 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00003828
3829 Windows: The :data:`signal.CTRL_C_EVENT` and
3830 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
3831 only be sent to console processes which share a common console window,
3832 e.g., some subprocesses. Any other value for *sig* will cause the process
3833 to be unconditionally killed by the TerminateProcess API, and the exit code
3834 will be set to *sig*. The Windows version of :func:`kill` additionally takes
3835 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00003836
Victor Stinnerb3e72192011-05-08 01:46:11 +02003837 See also :func:`signal.pthread_kill`.
3838
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003839 .. audit-event:: os.kill pid,sig os.kill
3840
Georg Brandl67b21b72010-08-17 15:07:14 +00003841 .. versionadded:: 3.2
3842 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00003843
Georg Brandl116aa622007-08-15 14:28:22 +00003844
3845.. function:: killpg(pgid, sig)
3846
3847 .. index::
3848 single: process; killing
3849 single: process; signalling
3850
Benjamin Petersonf650e462010-05-06 23:03:05 +00003851 Send the signal *sig* to the process group *pgid*.
3852
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003853 .. audit-event:: os.killpg pgid,sig os.killpg
3854
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003855 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003856
Georg Brandl116aa622007-08-15 14:28:22 +00003857
3858.. function:: nice(increment)
3859
3860 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003861
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003862 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003863
3864
Benjamin Peterson6c4c45e2019-11-05 19:21:29 -08003865.. function:: pidfd_open(pid, flags=0)
3866
3867 Return a file descriptor referring to the process *pid*. This descriptor can
3868 be used to perform process management without races and signals. The *flags*
3869 argument is provided for future extensions; no flag values are currently
3870 defined.
3871
3872 See the :manpage:`pidfd_open(2)` man page for more details.
3873
3874 .. availability:: Linux 5.3+
3875 .. versionadded:: 3.9
3876
3877
Georg Brandl116aa622007-08-15 14:28:22 +00003878.. function:: plock(op)
3879
3880 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00003881 ``<sys/lock.h>``) determines which segments are locked.
3882
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003883 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003884
3885
Martin Panterbf19d162015-09-09 01:01:13 +00003886.. function:: popen(cmd, mode='r', buffering=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00003887
Martin Panterbf19d162015-09-09 01:01:13 +00003888 Open a pipe to or from command *cmd*.
3889 The return value is an open file object
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003890 connected to the pipe, which can be read or written depending on whether *mode*
3891 is ``'r'`` (default) or ``'w'``. The *buffering* argument has the same meaning as
3892 the corresponding argument to the built-in :func:`open` function. The
3893 returned file object reads or writes text strings rather than bytes.
3894
3895 The ``close`` method returns :const:`None` if the subprocess exited
3896 successfully, or the subprocess's return code if there was an
3897 error. On POSIX systems, if the return code is positive it
3898 represents the return value of the process left-shifted by one
3899 byte. If the return code is negative, the process was terminated
3900 by the signal given by the negated value of the return code. (For
3901 example, the return value might be ``- signal.SIGKILL`` if the
3902 subprocess was killed.) On Windows systems, the return value
3903 contains the signed integer return code from the child process.
3904
Victor Stinner65a796e2020-04-01 18:49:29 +02003905 On Unix, :func:`waitstatus_to_exitcode` can be used to convert the ``close``
3906 method result (exit status) into an exit code if it is not ``None``. On
3907 Windows, the ``close`` method result is directly the exit code
3908 (or ``None``).
3909
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003910 This is implemented using :class:`subprocess.Popen`; see that class's
3911 documentation for more powerful ways to manage and communicate with
3912 subprocesses.
Georg Brandl116aa622007-08-15 14:28:22 +00003913
3914
Serhiy Storchakad700f972018-09-08 14:48:18 +03003915.. function:: posix_spawn(path, argv, env, *, file_actions=None, \
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003916 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \
Pablo Galindo254a4662018-09-07 16:44:24 +01003917 setsigdef=(), scheduler=None)
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003918
Serhiy Storchakaef347532018-05-01 16:45:04 +03003919 Wraps the :c:func:`posix_spawn` C library API for use from Python.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003920
Serhiy Storchakaef347532018-05-01 16:45:04 +03003921 Most users should use :func:`subprocess.run` instead of :func:`posix_spawn`.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003922
Serhiy Storchakad700f972018-09-08 14:48:18 +03003923 The positional-only arguments *path*, *args*, and *env* are similar to
3924 :func:`execve`.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003925
Tomer Cohen5b57fa62020-10-20 12:08:58 +03003926 The *path* parameter is the path to the executable file. The *path* should
3927 contain a directory. Use :func:`posix_spawnp` to pass an executable file
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003928 without directory.
3929
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003930 The *file_actions* argument may be a sequence of tuples describing actions
3931 to take on specific file descriptors in the child process between the C
Serhiy Storchakaef347532018-05-01 16:45:04 +03003932 library implementation's :c:func:`fork` and :c:func:`exec` steps.
3933 The first item in each tuple must be one of the three type indicator
3934 listed below describing the remaining tuple elements:
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003935
Serhiy Storchakaef347532018-05-01 16:45:04 +03003936 .. data:: POSIX_SPAWN_OPEN
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003937
Serhiy Storchakaef347532018-05-01 16:45:04 +03003938 (``os.POSIX_SPAWN_OPEN``, *fd*, *path*, *flags*, *mode*)
3939
3940 Performs ``os.dup2(os.open(path, flags, mode), fd)``.
3941
3942 .. data:: POSIX_SPAWN_CLOSE
3943
3944 (``os.POSIX_SPAWN_CLOSE``, *fd*)
3945
3946 Performs ``os.close(fd)``.
3947
3948 .. data:: POSIX_SPAWN_DUP2
3949
3950 (``os.POSIX_SPAWN_DUP2``, *fd*, *new_fd*)
3951
3952 Performs ``os.dup2(fd, new_fd)``.
3953
3954 These tuples correspond to the C library
3955 :c:func:`posix_spawn_file_actions_addopen`,
3956 :c:func:`posix_spawn_file_actions_addclose`, and
3957 :c:func:`posix_spawn_file_actions_adddup2` API calls used to prepare
3958 for the :c:func:`posix_spawn` call itself.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003959
Pablo Galindo254a4662018-09-07 16:44:24 +01003960 The *setpgroup* argument will set the process group of the child to the value
3961 specified. If the value specified is 0, the child's process group ID will be
3962 made the same as its process ID. If the value of *setpgroup* is not set, the
3963 child will inherit the parent's process group ID. This argument corresponds
3964 to the C library :c:data:`POSIX_SPAWN_SETPGROUP` flag.
3965
3966 If the *resetids* argument is ``True`` it will reset the effective UID and
3967 GID of the child to the real UID and GID of the parent process. If the
3968 argument is ``False``, then the child retains the effective UID and GID of
3969 the parent. In either case, if the set-user-ID and set-group-ID permission
3970 bits are enabled on the executable file, their effect will override the
3971 setting of the effective UID and GID. This argument corresponds to the C
3972 library :c:data:`POSIX_SPAWN_RESETIDS` flag.
3973
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003974 If the *setsid* argument is ``True``, it will create a new session ID
3975 for `posix_spawn`. *setsid* requires :c:data:`POSIX_SPAWN_SETSID`
3976 or :c:data:`POSIX_SPAWN_SETSID_NP` flag. Otherwise, :exc:`NotImplementedError`
3977 is raised.
3978
Pablo Galindo254a4662018-09-07 16:44:24 +01003979 The *setsigmask* argument will set the signal mask to the signal set
3980 specified. If the parameter is not used, then the child inherits the
3981 parent's signal mask. This argument corresponds to the C library
3982 :c:data:`POSIX_SPAWN_SETSIGMASK` flag.
3983
3984 The *sigdef* argument will reset the disposition of all signals in the set
3985 specified. This argument corresponds to the C library
3986 :c:data:`POSIX_SPAWN_SETSIGDEF` flag.
3987
3988 The *scheduler* argument must be a tuple containing the (optional) scheduler
3989 policy and an instance of :class:`sched_param` with the scheduler parameters.
3990 A value of ``None`` in the place of the scheduler policy indicates that is
3991 not being provided. This argument is a combination of the C library
3992 :c:data:`POSIX_SPAWN_SETSCHEDPARAM` and :c:data:`POSIX_SPAWN_SETSCHEDULER`
3993 flags.
3994
Saiyang Gou95f60012020-02-04 16:15:00 -08003995 .. audit-event:: os.posix_spawn path,argv,env os.posix_spawn
3996
Mark Williams8b504002019-03-03 09:42:25 -08003997 .. versionadded:: 3.8
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003998
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003999 .. availability:: Unix.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07004000
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004001.. function:: posix_spawnp(path, argv, env, *, file_actions=None, \
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03004002 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004003 setsigdef=(), scheduler=None)
4004
4005 Wraps the :c:func:`posix_spawnp` C library API for use from Python.
4006
4007 Similar to :func:`posix_spawn` except that the system searches
4008 for the *executable* file in the list of directories specified by the
4009 :envvar:`PATH` environment variable (in the same way as for ``execvp(3)``).
4010
Saiyang Gou95f60012020-02-04 16:15:00 -08004011 .. audit-event:: os.posix_spawn path,argv,env os.posix_spawnp
4012
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004013 .. versionadded:: 3.8
4014
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03004015 .. availability:: See :func:`posix_spawn` documentation.
4016
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004017
Gregory P. Smith163468a2017-05-29 10:03:41 -07004018.. function:: register_at_fork(*, before=None, after_in_parent=None, \
4019 after_in_child=None)
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004020
Gregory P. Smith163468a2017-05-29 10:03:41 -07004021 Register callables to be executed when a new child process is forked
4022 using :func:`os.fork` or similar process cloning APIs.
4023 The parameters are optional and keyword-only.
4024 Each specifies a different call point.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004025
Gregory P. Smith163468a2017-05-29 10:03:41 -07004026 * *before* is a function called before forking a child process.
4027 * *after_in_parent* is a function called from the parent process
4028 after forking a child process.
4029 * *after_in_child* is a function called from the child process.
4030
4031 These calls are only made if control is expected to return to the
4032 Python interpreter. A typical :mod:`subprocess` launch will not
4033 trigger them as the child is not going to re-enter the interpreter.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004034
4035 Functions registered for execution before forking are called in
4036 reverse registration order. Functions registered for execution
4037 after forking (either in the parent or in the child) are called
4038 in registration order.
4039
4040 Note that :c:func:`fork` calls made by third-party C code may not
4041 call those functions, unless it explicitly calls :c:func:`PyOS_BeforeFork`,
4042 :c:func:`PyOS_AfterFork_Parent` and :c:func:`PyOS_AfterFork_Child`.
4043
Gregory P. Smith163468a2017-05-29 10:03:41 -07004044 There is no way to unregister a function.
4045
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004046 .. availability:: Unix.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004047
4048 .. versionadded:: 3.7
4049
4050
Georg Brandl116aa622007-08-15 14:28:22 +00004051.. function:: spawnl(mode, path, ...)
4052 spawnle(mode, path, ..., env)
4053 spawnlp(mode, file, ...)
4054 spawnlpe(mode, file, ..., env)
4055 spawnv(mode, path, args)
4056 spawnve(mode, path, args, env)
4057 spawnvp(mode, file, args)
4058 spawnvpe(mode, file, args, env)
4059
4060 Execute the program *path* in a new process.
4061
4062 (Note that the :mod:`subprocess` module provides more powerful facilities for
4063 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00004064 preferable to using these functions. Check especially the
4065 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00004066
Christian Heimesfaf2f632008-01-06 16:59:19 +00004067 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00004068 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
4069 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00004070 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00004071 be used with the :func:`waitpid` function.
4072
pxinwrf2d7ac72019-05-21 18:46:37 +08004073 Note on VxWorks, this function doesn't return ``-signal`` when the new process is
4074 killed. Instead it raises OSError exception.
4075
Serhiy Storchakadab83542013-10-13 20:12:43 +03004076 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00004077 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00004078 to work with if the number of parameters is fixed when the code is written; the
4079 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00004080 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00004081 parameters is variable, with the arguments being passed in a list or tuple as
4082 the *args* parameter. In either case, the arguments to the child process must
4083 start with the name of the command being run.
4084
Christian Heimesfaf2f632008-01-06 16:59:19 +00004085 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00004086 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
4087 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03004088 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00004089 discussed in the next paragraph), the new environment is used as the source of
4090 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
4091 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
4092 :envvar:`PATH` variable to locate the executable; *path* must contain an
4093 appropriate absolute or relative path.
4094
4095 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00004096 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00004097 which is used to define the environment variables for the new process (they are
4098 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00004099 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00004100 the new process to inherit the environment of the current process. Note that
4101 keys and values in the *env* dictionary must be strings; invalid keys or
4102 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00004103
4104 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
4105 equivalent::
4106
4107 import os
4108 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
4109
4110 L = ['cp', 'index.html', '/dev/null']
4111 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
4112
Saiyang Gou95f60012020-02-04 16:15:00 -08004113 .. audit-event:: os.spawn mode,path,args,env os.spawnl
4114
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004115 .. availability:: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
4116 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
4117 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
4118 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00004119
Brett Cannon6fa7aad2016-09-06 15:55:02 -07004120 .. versionchanged:: 3.6
4121 Accepts a :term:`path-like object`.
4122
Georg Brandl116aa622007-08-15 14:28:22 +00004123
4124.. data:: P_NOWAIT
4125 P_NOWAITO
4126
Serhiy Storchakadab83542013-10-13 20:12:43 +03004127 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00004128 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00004129 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00004130 the return value.
4131
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004132 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004133
Georg Brandl116aa622007-08-15 14:28:22 +00004134
4135.. data:: P_WAIT
4136
Serhiy Storchakadab83542013-10-13 20:12:43 +03004137 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00004138 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
4139 return until the new process has run to completion and will return the exit code
4140 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00004141 process.
4142
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004143 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004144
Georg Brandl116aa622007-08-15 14:28:22 +00004145
4146.. data:: P_DETACH
4147 P_OVERLAY
4148
Serhiy Storchakadab83542013-10-13 20:12:43 +03004149 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00004150 functions. These are less portable than those listed above. :const:`P_DETACH`
4151 is similar to :const:`P_NOWAIT`, but the new process is detached from the
4152 console of the calling process. If :const:`P_OVERLAY` is used, the current
Serhiy Storchakadab83542013-10-13 20:12:43 +03004153 process will be replaced; the :func:`spawn\* <spawnl>` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004154
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004155 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004156
Georg Brandl116aa622007-08-15 14:28:22 +00004157
Steve Dower019e9e82021-04-23 18:03:17 +01004158.. function:: startfile(path, [operation], [arguments], [cwd], [show_cmd])
Georg Brandl116aa622007-08-15 14:28:22 +00004159
4160 Start a file with its associated application.
4161
4162 When *operation* is not specified or ``'open'``, this acts like double-clicking
4163 the file in Windows Explorer, or giving the file name as an argument to the
4164 :program:`start` command from the interactive command shell: the file is opened
4165 with whatever application (if any) its extension is associated.
4166
4167 When another *operation* is given, it must be a "command verb" that specifies
4168 what should be done with the file. Common verbs documented by Microsoft are
4169 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
4170 ``'find'`` (to be used on directories).
4171
Steve Dower019e9e82021-04-23 18:03:17 +01004172 When launching an application, specify *arguments* to be passed as a single
4173 string. This argument may have no effect when using this function to launch a
4174 document.
4175
4176 The default working directory is inherited, but may be overridden by the *cwd*
4177 argument. This should be an absolute path. A relative *path* will be resolved
4178 against this argument.
4179
4180 Use *show_cmd* to override the default window style. Whether this has any
4181 effect will depend on the application being launched. Values are integers as
4182 supported by the Win32 :c:func:`ShellExecute` function.
4183
Georg Brandl116aa622007-08-15 14:28:22 +00004184 :func:`startfile` returns as soon as the associated application is launched.
4185 There is no option to wait for the application to close, and no way to retrieve
4186 the application's exit status. The *path* parameter is relative to the current
Steve Dower019e9e82021-04-23 18:03:17 +01004187 directory or *cwd*. If you want to use an absolute path, make sure the first
4188 character is not a slash (``'/'``) Use :mod:`pathlib` or the
4189 :func:`os.path.normpath` function to ensure that paths are properly encoded for
4190 Win32.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004191
Steve Dower7d0e0c92015-01-24 08:18:24 -08004192 To reduce interpreter startup overhead, the Win32 :c:func:`ShellExecute`
4193 function is not resolved until this function is first called. If the function
4194 cannot be resolved, :exc:`NotImplementedError` will be raised.
4195
Saiyang Gou95f60012020-02-04 16:15:00 -08004196 .. audit-event:: os.startfile path,operation os.startfile
4197
Steve Dower019e9e82021-04-23 18:03:17 +01004198 .. audit-event:: os.startfile/2 path,operation,arguments,cwd,show_cmd os.startfile
4199
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004200 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004201
Steve Dower019e9e82021-04-23 18:03:17 +01004202 .. versionchanged:: 3.10
4203 Added the *arguments*, *cwd* and *show_cmd* arguments, and the
4204 ``os.startfile/2`` audit event.
4205
Georg Brandl116aa622007-08-15 14:28:22 +00004206
4207.. function:: system(command)
4208
4209 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00004210 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00004211 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
4212 the executed command. If *command* generates any output, it will be sent to
4213 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00004214
4215 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00004216 format specified for :func:`wait`. Note that POSIX does not specify the
4217 meaning of the return value of the C :c:func:`system` function, so the return
4218 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00004219
Georg Brandl8f7b4272010-10-14 06:35:53 +00004220 On Windows, the return value is that returned by the system shell after
4221 running *command*. The shell is given by the Windows environment variable
4222 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
4223 status of the command run; on systems using a non-native shell, consult your
4224 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00004225
Georg Brandl8f7b4272010-10-14 06:35:53 +00004226 The :mod:`subprocess` module provides more powerful facilities for spawning
4227 new processes and retrieving their results; using that module is preferable
4228 to using this function. See the :ref:`subprocess-replacements` section in
4229 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00004230
Victor Stinner65a796e2020-04-01 18:49:29 +02004231 On Unix, :func:`waitstatus_to_exitcode` can be used to convert the result
4232 (exit status) into an exit code. On Windows, the result is directly the exit
4233 code.
4234
Steve Dower44f91c32019-06-27 10:47:59 -07004235 .. audit-event:: os.system command os.system
Steve Dowerb82e17e2019-05-23 08:45:22 -07004236
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004237 .. availability:: Unix, Windows.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004238
Georg Brandl116aa622007-08-15 14:28:22 +00004239
4240.. function:: times()
4241
Larry Hastings605a62d2012-06-24 04:33:36 -07004242 Returns the current global process times.
4243 The return value is an object with five attributes:
4244
4245 * :attr:`user` - user time
4246 * :attr:`system` - system time
4247 * :attr:`children_user` - user time of all child processes
4248 * :attr:`children_system` - system time of all child processes
4249 * :attr:`elapsed` - elapsed real time since a fixed point in the past
4250
4251 For backwards compatibility, this object also behaves like a five-tuple
4252 containing :attr:`user`, :attr:`system`, :attr:`children_user`,
4253 :attr:`children_system`, and :attr:`elapsed` in that order.
4254
4255 See the Unix manual page
Joannah Nanjekye3ccdbc32019-09-07 04:05:29 -03004256 :manpage:`times(2)` and :manpage:`times(3)` manual page on Unix or `the GetProcessTimes MSDN
Roger Hurwitz37c55b22020-02-10 14:50:19 -08004257 <https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes>`_
4258 on Windows. On Windows, only :attr:`user` and :attr:`system` are known; the other attributes are zero.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004259
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004260 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004261
Larry Hastings605a62d2012-06-24 04:33:36 -07004262 .. versionchanged:: 3.3
4263 Return type changed from a tuple to a tuple-like object
4264 with named attributes.
4265
Georg Brandl116aa622007-08-15 14:28:22 +00004266
4267.. function:: wait()
4268
4269 Wait for completion of a child process, and return a tuple containing its pid
4270 and exit status indication: a 16-bit number, whose low byte is the signal number
4271 that killed the process, and whose high byte is the exit status (if the signal
4272 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00004273 produced.
4274
Victor Stinner65a796e2020-04-01 18:49:29 +02004275 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4276 exit code.
4277
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004278 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004279
Victor Stinner65a796e2020-04-01 18:49:29 +02004280 .. seealso::
4281
4282 :func:`waitpid` can be used to wait for the completion of a specific
4283 child process and has more options.
4284
Ross Lagerwall7807c352011-03-17 20:20:30 +02004285.. function:: waitid(idtype, id, options)
4286
4287 Wait for the completion of one or more child processes.
Benjamin Peterson5c0c3252019-11-05 21:58:31 -08004288 *idtype* can be :data:`P_PID`, :data:`P_PGID`, :data:`P_ALL`, or
4289 :data:`P_PIDFD` on Linux.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004290 *id* specifies the pid to wait on.
4291 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
4292 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
4293 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
4294 representing the data contained in the :c:type:`siginfo_t` structure, namely:
4295 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
4296 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
4297 children in a waitable state.
4298
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004299 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004300
4301 .. versionadded:: 3.3
4302
4303.. data:: P_PID
4304 P_PGID
4305 P_ALL
4306
4307 These are the possible values for *idtype* in :func:`waitid`. They affect
4308 how *id* is interpreted.
4309
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004310 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004311
4312 .. versionadded:: 3.3
4313
Benjamin Peterson5c0c3252019-11-05 21:58:31 -08004314.. data:: P_PIDFD
4315
4316 This is a Linux-specific *idtype* that indicates that *id* is a file
4317 descriptor that refers to a process.
4318
4319 .. availability:: Linux 5.4+
4320
4321 .. versionadded:: 3.9
4322
Ross Lagerwall7807c352011-03-17 20:20:30 +02004323.. data:: WEXITED
4324 WSTOPPED
4325 WNOWAIT
4326
4327 Flags that can be used in *options* in :func:`waitid` that specify what
4328 child signal to wait for.
4329
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004330 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004331
4332 .. versionadded:: 3.3
4333
4334
4335.. data:: CLD_EXITED
Dong-hee Na2eba6ad2019-10-21 16:01:05 +09004336 CLD_KILLED
Ross Lagerwall7807c352011-03-17 20:20:30 +02004337 CLD_DUMPED
4338 CLD_TRAPPED
Dong-hee Na2eba6ad2019-10-21 16:01:05 +09004339 CLD_STOPPED
Ross Lagerwall7807c352011-03-17 20:20:30 +02004340 CLD_CONTINUED
4341
4342 These are the possible values for :attr:`si_code` in the result returned by
4343 :func:`waitid`.
4344
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004345 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004346
4347 .. versionadded:: 3.3
4348
Dong-hee Na2eba6ad2019-10-21 16:01:05 +09004349 .. versionchanged:: 3.9
4350 Added :data:`CLD_KILLED` and :data:`CLD_STOPPED` values.
4351
Georg Brandl116aa622007-08-15 14:28:22 +00004352
4353.. function:: waitpid(pid, options)
4354
4355 The details of this function differ on Unix and Windows.
4356
4357 On Unix: Wait for completion of a child process given by process id *pid*, and
4358 return a tuple containing its process id and exit status indication (encoded as
4359 for :func:`wait`). The semantics of the call are affected by the value of the
4360 integer *options*, which should be ``0`` for normal operation.
4361
4362 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
4363 that specific process. If *pid* is ``0``, the request is for the status of any
4364 child in the process group of the current process. If *pid* is ``-1``, the
4365 request pertains to any child of the current process. If *pid* is less than
4366 ``-1``, status is requested for any process in the process group ``-pid`` (the
4367 absolute value of *pid*).
4368
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00004369 An :exc:`OSError` is raised with the value of errno when the syscall
4370 returns -1.
4371
Georg Brandl116aa622007-08-15 14:28:22 +00004372 On Windows: Wait for completion of a process given by process handle *pid*, and
4373 return a tuple containing *pid*, and its exit status shifted left by 8 bits
4374 (shifting makes cross-platform use of the function easier). A *pid* less than or
4375 equal to ``0`` has no special meaning on Windows, and raises an exception. The
4376 value of integer *options* has no effect. *pid* can refer to any process whose
Serhiy Storchakadab83542013-10-13 20:12:43 +03004377 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
4378 functions called with :const:`P_NOWAIT` return suitable process handles.
Georg Brandl116aa622007-08-15 14:28:22 +00004379
Victor Stinner65a796e2020-04-01 18:49:29 +02004380 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4381 exit code.
4382
Victor Stinnera766ddf2015-03-26 23:50:57 +01004383 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02004384 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01004385 exception, the function now retries the system call instead of raising an
4386 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
4387
Georg Brandl116aa622007-08-15 14:28:22 +00004388
Ezio Melottiba4d8ed2012-11-23 19:45:52 +02004389.. function:: wait3(options)
Georg Brandl116aa622007-08-15 14:28:22 +00004390
4391 Similar to :func:`waitpid`, except no process id argument is given and a
Serhiy Storchaka3f819ca2018-10-31 02:26:06 +02004392 3-element tuple containing the child's process id, exit status indication,
4393 and resource usage information is returned. Refer to
4394 :mod:`resource`.\ :func:`~resource.getrusage` for details on resource usage
4395 information. The option argument is the same as that provided to
4396 :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004397
Victor Stinner65a796e2020-04-01 18:49:29 +02004398 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4399 exitcode.
4400
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004401 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004402
Georg Brandl116aa622007-08-15 14:28:22 +00004403
Victor Stinner4195b5c2012-02-08 23:03:19 +01004404.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00004405
4406 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
4407 process id, exit status indication, and resource usage information is returned.
Serhiy Storchakadab83542013-10-13 20:12:43 +03004408 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
4409 resource usage information. The arguments to :func:`wait4` are the same
4410 as those provided to :func:`waitpid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004411
Victor Stinner65a796e2020-04-01 18:49:29 +02004412 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4413 exitcode.
4414
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004415 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004416
Georg Brandl116aa622007-08-15 14:28:22 +00004417
Victor Stinner65a796e2020-04-01 18:49:29 +02004418.. function:: waitstatus_to_exitcode(status)
4419
4420 Convert a wait status to an exit code.
4421
4422 On Unix:
4423
4424 * If the process exited normally (if ``WIFEXITED(status)`` is true),
4425 return the process exit status (return ``WEXITSTATUS(status)``):
4426 result greater than or equal to 0.
4427 * If the process was terminated by a signal (if ``WIFSIGNALED(status)`` is
4428 true), return ``-signum`` where *signum* is the number of the signal that
4429 caused the process to terminate (return ``-WTERMSIG(status)``):
4430 result less than 0.
4431 * Otherwise, raise a :exc:`ValueError`.
4432
4433 On Windows, return *status* shifted right by 8 bits.
4434
4435 On Unix, if the process is being traced or if :func:`waitpid` was called
4436 with :data:`WUNTRACED` option, the caller must first check if
4437 ``WIFSTOPPED(status)`` is true. This function must not be called if
4438 ``WIFSTOPPED(status)`` is true.
4439
4440 .. seealso::
4441
4442 :func:`WIFEXITED`, :func:`WEXITSTATUS`, :func:`WIFSIGNALED`,
4443 :func:`WTERMSIG`, :func:`WIFSTOPPED`, :func:`WSTOPSIG` functions.
4444
4445 .. versionadded:: 3.9
4446
4447
Georg Brandl116aa622007-08-15 14:28:22 +00004448.. data:: WNOHANG
4449
4450 The option for :func:`waitpid` to return immediately if no child process status
4451 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004452
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004453 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004454
4455
4456.. data:: WCONTINUED
4457
4458 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00004459 from a job control stop since their status was last reported.
4460
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004461 .. availability:: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00004462
Georg Brandl116aa622007-08-15 14:28:22 +00004463
4464.. data:: WUNTRACED
4465
4466 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00004467 their current state has not been reported since they were stopped.
4468
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004469 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004470
Georg Brandl116aa622007-08-15 14:28:22 +00004471
4472The following functions take a process status code as returned by
4473:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
4474used to determine the disposition of a process.
4475
Georg Brandl116aa622007-08-15 14:28:22 +00004476.. function:: WCOREDUMP(status)
4477
Christian Heimesfaf2f632008-01-06 16:59:19 +00004478 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00004479 return ``False``.
4480
Victor Stinner7c723832020-04-01 15:48:05 +02004481 This function should be employed only if :func:`WIFSIGNALED` is true.
4482
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004483 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004484
Georg Brandl116aa622007-08-15 14:28:22 +00004485
4486.. function:: WIFCONTINUED(status)
4487
Victor Stinner7c723832020-04-01 15:48:05 +02004488 Return ``True`` if a stopped child has been resumed by delivery of
4489 :data:`~signal.SIGCONT` (if the process has been continued from a job
4490 control stop), otherwise return ``False``.
4491
4492 See :data:`WCONTINUED` option.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004493
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004494 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004495
Georg Brandl116aa622007-08-15 14:28:22 +00004496
4497.. function:: WIFSTOPPED(status)
4498
Victor Stinner7c723832020-04-01 15:48:05 +02004499 Return ``True`` if the process was stopped by delivery of a signal,
4500 otherwise return ``False``.
4501
4502 :func:`WIFSTOPPED` only returns ``True`` if the :func:`waitpid` call was
4503 done using :data:`WUNTRACED` option or when the process is being traced (see
4504 :manpage:`ptrace(2)`).
Benjamin Petersonf650e462010-05-06 23:03:05 +00004505
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004506 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004507
Georg Brandl116aa622007-08-15 14:28:22 +00004508.. function:: WIFSIGNALED(status)
4509
Victor Stinner7c723832020-04-01 15:48:05 +02004510 Return ``True`` if the process was terminated by a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00004511 ``False``.
4512
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004513 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004514
4515
4516.. function:: WIFEXITED(status)
4517
Victor Stinner7c723832020-04-01 15:48:05 +02004518 Return ``True`` if the process exited terminated normally, that is,
4519 by calling ``exit()`` or ``_exit()``, or by returning from ``main()``;
Benjamin Petersonf650e462010-05-06 23:03:05 +00004520 otherwise return ``False``.
4521
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004522 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004523
4524
4525.. function:: WEXITSTATUS(status)
4526
Victor Stinner7c723832020-04-01 15:48:05 +02004527 Return the process exit status.
4528
4529 This function should be employed only if :func:`WIFEXITED` is true.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004530
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004531 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004532
4533
4534.. function:: WSTOPSIG(status)
4535
Benjamin Petersonf650e462010-05-06 23:03:05 +00004536 Return the signal which caused the process to stop.
4537
Victor Stinner7c723832020-04-01 15:48:05 +02004538 This function should be employed only if :func:`WIFSTOPPED` is true.
4539
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004540 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004541
4542
4543.. function:: WTERMSIG(status)
4544
Victor Stinner7c723832020-04-01 15:48:05 +02004545 Return the number of the signal that caused the process to terminate.
4546
4547 This function should be employed only if :func:`WIFSIGNALED` is true.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004548
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004549 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004550
4551
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004552Interface to the scheduler
4553--------------------------
4554
4555These functions control how a process is allocated CPU time by the operating
4556system. They are only available on some Unix platforms. For more detailed
4557information, consult your Unix manpages.
4558
4559.. versionadded:: 3.3
4560
Andrew Kuchling4921a082013-06-21 11:49:57 -04004561The following scheduling policies are exposed if they are supported by the
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004562operating system.
4563
4564.. data:: SCHED_OTHER
4565
4566 The default scheduling policy.
4567
4568.. data:: SCHED_BATCH
4569
4570 Scheduling policy for CPU-intensive processes that tries to preserve
4571 interactivity on the rest of the computer.
4572
4573.. data:: SCHED_IDLE
4574
4575 Scheduling policy for extremely low priority background tasks.
4576
4577.. data:: SCHED_SPORADIC
4578
4579 Scheduling policy for sporadic server programs.
4580
4581.. data:: SCHED_FIFO
4582
4583 A First In First Out scheduling policy.
4584
4585.. data:: SCHED_RR
4586
4587 A round-robin scheduling policy.
4588
4589.. data:: SCHED_RESET_ON_FORK
4590
Martin Panter8d56c022016-05-29 04:13:35 +00004591 This flag can be OR'ed with any other scheduling policy. When a process with
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004592 this flag set forks, its child's scheduling policy and priority are reset to
4593 the default.
4594
4595
4596.. class:: sched_param(sched_priority)
4597
4598 This class represents tunable scheduling parameters used in
4599 :func:`sched_setparam`, :func:`sched_setscheduler`, and
4600 :func:`sched_getparam`. It is immutable.
4601
4602 At the moment, there is only one possible parameter:
4603
4604 .. attribute:: sched_priority
4605
4606 The scheduling priority for a scheduling policy.
4607
4608
4609.. function:: sched_get_priority_min(policy)
4610
4611 Get the minimum priority value for *policy*. *policy* is one of the
4612 scheduling policy constants above.
4613
4614
4615.. function:: sched_get_priority_max(policy)
4616
4617 Get the maximum priority value for *policy*. *policy* is one of the
4618 scheduling policy constants above.
4619
4620
4621.. function:: sched_setscheduler(pid, policy, param)
4622
4623 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
4624 the calling process. *policy* is one of the scheduling policy constants
4625 above. *param* is a :class:`sched_param` instance.
4626
4627
4628.. function:: sched_getscheduler(pid)
4629
4630 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
4631 means the calling process. The result is one of the scheduling policy
4632 constants above.
4633
4634
4635.. function:: sched_setparam(pid, param)
4636
4637 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
4638 the calling process. *param* is a :class:`sched_param` instance.
4639
4640
4641.. function:: sched_getparam(pid)
4642
4643 Return the scheduling parameters as a :class:`sched_param` instance for the
4644 process with PID *pid*. A *pid* of 0 means the calling process.
4645
4646
4647.. function:: sched_rr_get_interval(pid)
4648
4649 Return the round-robin quantum in seconds for the process with PID *pid*. A
4650 *pid* of 0 means the calling process.
4651
4652
4653.. function:: sched_yield()
4654
4655 Voluntarily relinquish the CPU.
4656
4657
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004658.. function:: sched_setaffinity(pid, mask)
4659
Antoine Pitrou84869872012-08-04 16:16:35 +02004660 Restrict the process with PID *pid* (or the current process if zero) to a
4661 set of CPUs. *mask* is an iterable of integers representing the set of
4662 CPUs to which the process should be restricted.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004663
4664
Antoine Pitrou84869872012-08-04 16:16:35 +02004665.. function:: sched_getaffinity(pid)
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004666
Antoine Pitrou84869872012-08-04 16:16:35 +02004667 Return the set of CPUs the process with PID *pid* (or the current process
4668 if zero) is restricted to.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004669
4670
Georg Brandl116aa622007-08-15 14:28:22 +00004671.. _os-path:
4672
4673Miscellaneous System Information
4674--------------------------------
4675
4676
4677.. function:: confstr(name)
4678
4679 Return string-valued system configuration values. *name* specifies the
4680 configuration value to retrieve; it may be a string which is the name of a
4681 defined system value; these names are specified in a number of standards (POSIX,
4682 Unix 95, Unix 98, and others). Some platforms define additional names as well.
4683 The names known to the host operating system are given as the keys of the
4684 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00004685 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00004686
4687 If the configuration value specified by *name* isn't defined, ``None`` is
4688 returned.
4689
4690 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
4691 specific value for *name* is not supported by the host system, even if it is
4692 included in ``confstr_names``, an :exc:`OSError` is raised with
4693 :const:`errno.EINVAL` for the error number.
4694
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004695 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004696
Georg Brandl116aa622007-08-15 14:28:22 +00004697
4698.. data:: confstr_names
4699
4700 Dictionary mapping names accepted by :func:`confstr` to the integer values
4701 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00004702 determine the set of names known to the system.
4703
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004704 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004705
4706
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004707.. function:: cpu_count()
4708
Serhiy Storchakaecf41da2016-10-19 16:29:26 +03004709 Return the number of CPUs in the system. Returns ``None`` if undetermined.
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004710
Charles-François Natalidc87e4b2015-07-13 21:01:39 +01004711 This number is not equivalent to the number of CPUs the current process can
4712 use. The number of usable CPUs can be obtained with
4713 ``len(os.sched_getaffinity(0))``
4714
4715
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004716 .. versionadded:: 3.4
4717
4718
Georg Brandl116aa622007-08-15 14:28:22 +00004719.. function:: getloadavg()
4720
Christian Heimesa62da1d2008-01-12 19:39:10 +00004721 Return the number of processes in the system run queue averaged over the last
4722 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00004723 unobtainable.
4724
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004725 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004726
Georg Brandl116aa622007-08-15 14:28:22 +00004727
4728.. function:: sysconf(name)
4729
4730 Return integer-valued system configuration values. If the configuration value
4731 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
4732 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
4733 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004734
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004735 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004736
4737
4738.. data:: sysconf_names
4739
4740 Dictionary mapping names accepted by :func:`sysconf` to the integer values
4741 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00004742 determine the set of names known to the system.
4743
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004744 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004745
Christian Heimesfaf2f632008-01-06 16:59:19 +00004746The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00004747are defined for all platforms.
4748
4749Higher-level operations on pathnames are defined in the :mod:`os.path` module.
4750
4751
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004752.. index:: single: . (dot); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004753.. data:: curdir
4754
4755 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00004756 directory. This is ``'.'`` for Windows and POSIX. Also available via
4757 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004758
4759
Serhiy Storchakaddb961d2018-10-26 09:00:49 +03004760.. index:: single: ..; in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004761.. data:: pardir
4762
4763 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00004764 directory. This is ``'..'`` for Windows and POSIX. Also available via
4765 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004766
4767
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004768.. index:: single: / (slash); in pathnames
4769.. index:: single: \ (backslash); in pathnames (Windows)
Georg Brandl116aa622007-08-15 14:28:22 +00004770.. data:: sep
4771
Georg Brandlc575c902008-09-13 17:46:05 +00004772 The character used by the operating system to separate pathname components.
4773 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
4774 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00004775 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
4776 useful. Also available via :mod:`os.path`.
4777
4778
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004779.. index:: single: / (slash); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004780.. data:: altsep
4781
4782 An alternative character used by the operating system to separate pathname
4783 components, or ``None`` if only one separator character exists. This is set to
4784 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
4785 :mod:`os.path`.
4786
4787
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004788.. index:: single: . (dot); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004789.. data:: extsep
4790
4791 The character which separates the base filename from the extension; for example,
4792 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
4793
Georg Brandl116aa622007-08-15 14:28:22 +00004794
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004795.. index:: single: : (colon); path separator (POSIX)
4796 single: ; (semicolon)
Georg Brandl116aa622007-08-15 14:28:22 +00004797.. data:: pathsep
4798
4799 The character conventionally used by the operating system to separate search
4800 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
4801 Windows. Also available via :mod:`os.path`.
4802
4803
4804.. data:: defpath
4805
Serhiy Storchakadab83542013-10-13 20:12:43 +03004806 The default search path used by :func:`exec\*p\* <execl>` and
4807 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
4808 key. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004809
4810
4811.. data:: linesep
4812
4813 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00004814 platform. This may be a single character, such as ``'\n'`` for POSIX, or
4815 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
4816 *os.linesep* as a line terminator when writing files opened in text mode (the
4817 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00004818
4819
4820.. data:: devnull
4821
Georg Brandl850a9902010-05-21 22:04:32 +00004822 The file path of the null device. For example: ``'/dev/null'`` for
4823 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004824
Andrew Kuchling4921a082013-06-21 11:49:57 -04004825.. data:: RTLD_LAZY
4826 RTLD_NOW
4827 RTLD_GLOBAL
4828 RTLD_LOCAL
4829 RTLD_NODELETE
4830 RTLD_NOLOAD
4831 RTLD_DEEPBIND
4832
4833 Flags for use with the :func:`~sys.setdlopenflags` and
4834 :func:`~sys.getdlopenflags` functions. See the Unix manual page
4835 :manpage:`dlopen(3)` for what the different flags mean.
4836
4837 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +00004838
Georg Brandl116aa622007-08-15 14:28:22 +00004839
Victor Stinner9b1f4742016-09-06 16:18:52 -07004840Random numbers
4841--------------
Georg Brandl116aa622007-08-15 14:28:22 +00004842
4843
Victor Stinner9b1f4742016-09-06 16:18:52 -07004844.. function:: getrandom(size, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +00004845
Victor Stinner9b1f4742016-09-06 16:18:52 -07004846 Get up to *size* random bytes. The function can return less bytes than
4847 requested.
4848
4849 These bytes can be used to seed user-space random number generators or for
4850 cryptographic purposes.
4851
4852 ``getrandom()`` relies on entropy gathered from device drivers and other
4853 sources of environmental noise. Unnecessarily reading large quantities of
4854 data will have a negative impact on other users of the ``/dev/random`` and
4855 ``/dev/urandom`` devices.
4856
4857 The flags argument is a bit mask that can contain zero or more of the
4858 following values ORed together: :py:data:`os.GRND_RANDOM` and
4859 :py:data:`GRND_NONBLOCK`.
4860
4861 See also the `Linux getrandom() manual page
4862 <http://man7.org/linux/man-pages/man2/getrandom.2.html>`_.
4863
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004864 .. availability:: Linux 3.17 and newer.
Victor Stinner9b1f4742016-09-06 16:18:52 -07004865
4866 .. versionadded:: 3.6
4867
4868.. function:: urandom(size)
4869
4870 Return a string of *size* random bytes suitable for cryptographic use.
Georg Brandl116aa622007-08-15 14:28:22 +00004871
4872 This function returns random bytes from an OS-specific randomness source. The
4873 returned data should be unpredictable enough for cryptographic applications,
Victor Stinnerdddf4842016-06-07 11:21:42 +02004874 though its exact quality depends on the OS implementation.
4875
Victor Stinnere66987e2016-09-06 16:33:52 -07004876 On Linux, if the ``getrandom()`` syscall is available, it is used in
4877 blocking mode: block until the system urandom entropy pool is initialized
4878 (128 bits of entropy are collected by the kernel). See the :pep:`524` for
4879 the rationale. On Linux, the :func:`getrandom` function can be used to get
4880 random bytes in non-blocking mode (using the :data:`GRND_NONBLOCK` flag) or
4881 to poll until the system urandom entropy pool is initialized.
Andrew Svetlov03cb99c2012-10-16 13:15:06 +03004882
Victor Stinnere66987e2016-09-06 16:33:52 -07004883 On a Unix-like system, random bytes are read from the ``/dev/urandom``
4884 device. If the ``/dev/urandom`` device is not available or not readable, the
4885 :exc:`NotImplementedError` exception is raised.
4886
4887 On Windows, it will use ``CryptGenRandom()``.
4888
4889 .. seealso::
4890 The :mod:`secrets` module provides higher level functions. For an
4891 easy-to-use interface to the random number generator provided by your
4892 platform, please see :class:`random.SystemRandom`.
4893
4894 .. versionchanged:: 3.6.0
4895 On Linux, ``getrandom()`` is now used in blocking mode to increase the
4896 security.
Victor Stinnerace88482015-07-29 02:28:32 +02004897
Victor Stinnerdddf4842016-06-07 11:21:42 +02004898 .. versionchanged:: 3.5.2
Victor Stinner9b1f4742016-09-06 16:18:52 -07004899 On Linux, if the ``getrandom()`` syscall blocks (the urandom entropy pool
4900 is not initialized yet), fall back on reading ``/dev/urandom``.
Victor Stinnerdddf4842016-06-07 11:21:42 +02004901
Victor Stinnerace88482015-07-29 02:28:32 +02004902 .. versionchanged:: 3.5
4903 On Linux 3.17 and newer, the ``getrandom()`` syscall is now used
4904 when available. On OpenBSD 5.6 and newer, the C ``getentropy()``
4905 function is now used. These functions avoid the usage of an internal file
4906 descriptor.
Victor Stinner9b1f4742016-09-06 16:18:52 -07004907
4908.. data:: GRND_NONBLOCK
4909
4910 By default, when reading from ``/dev/random``, :func:`getrandom` blocks if
4911 no random bytes are available, and when reading from ``/dev/urandom``, it blocks
4912 if the entropy pool has not yet been initialized.
4913
4914 If the :py:data:`GRND_NONBLOCK` flag is set, then :func:`getrandom` does not
4915 block in these cases, but instead immediately raises :exc:`BlockingIOError`.
4916
4917 .. versionadded:: 3.6
4918
4919.. data:: GRND_RANDOM
4920
4921 If this bit is set, then random bytes are drawn from the
4922 ``/dev/random`` pool instead of the ``/dev/urandom`` pool.
4923
4924 .. versionadded:: 3.6