blob: b4c2ca9d4f66065657cdd1e699d8ef04c8725072 [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.
Etienne Gautierb6daab22021-04-26 06:21:50 +02002250 If the file does not exist, a :exc:`FileNotFoundError` is raised.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002251
Georg Brandl50c40002012-06-24 11:45:20 +02002252 This function can support :ref:`paths relative to directory descriptors
2253 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002254
2255 On Windows, attempting to remove a file that is in use causes an exception to
2256 be raised; on Unix, the directory entry is removed but the storage allocated
2257 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002258
Brett Cannon05039172015-12-28 17:28:19 -08002259 This function is semantically identical to :func:`unlink`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002260
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002261 .. audit-event:: os.remove path,dir_fd os.remove
2262
Larry Hastings9cf065c2012-06-22 16:30:09 -07002263 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002264 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002265
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002266 .. versionchanged:: 3.6
2267 Accepts a :term:`path-like object`.
2268
Georg Brandl116aa622007-08-15 14:28:22 +00002269
Zachary Warea22ae212014-03-20 09:42:01 -05002270.. function:: removedirs(name)
Georg Brandl116aa622007-08-15 14:28:22 +00002271
2272 .. index:: single: directory; deleting
2273
Christian Heimesfaf2f632008-01-06 16:59:19 +00002274 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00002275 leaf directory is successfully removed, :func:`removedirs` tries to
2276 successively remove every parent directory mentioned in *path* until an error
2277 is raised (which is ignored, because it generally means that a parent directory
2278 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
2279 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
2280 they are empty. Raises :exc:`OSError` if the leaf directory could not be
2281 successfully removed.
2282
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002283 .. audit-event:: os.remove path,dir_fd os.removedirs
2284
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002285 .. versionchanged:: 3.6
2286 Accepts a :term:`path-like object`.
2287
Georg Brandl116aa622007-08-15 14:28:22 +00002288
Larry Hastings9cf065c2012-06-22 16:30:09 -07002289.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002290
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002291 Rename the file or directory *src* to *dst*. If *dst* exists, the operation
2292 will fail with an :exc:`OSError` subclass in a number of cases:
2293
2294 On Windows, if *dst* exists a :exc:`FileExistsError` is always raised.
2295
Mariatta7cbef722019-07-11 10:31:19 -07002296 On Unix, if *src* is a file and *dst* is a directory or vice-versa, an
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002297 :exc:`IsADirectoryError` or a :exc:`NotADirectoryError` will be raised
2298 respectively. If both are directories and *dst* is empty, *dst* will be
2299 silently replaced. If *dst* is a non-empty directory, an :exc:`OSError`
2300 is raised. If both are files, *dst* it will be replaced silently if the user
2301 has permission. The operation may fail on some Unix flavors if *src* and
2302 *dst* are on different filesystems. If successful, the renaming will be an
2303 atomic operation (this is a POSIX requirement).
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002304
Georg Brandlaceaf902012-06-25 08:33:56 +02002305 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
2306 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002307
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002308 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002309
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002310 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.rename
2311
Larry Hastings9cf065c2012-06-22 16:30:09 -07002312 .. versionadded:: 3.3
2313 The *src_dir_fd* and *dst_dir_fd* arguments.
2314
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002315 .. versionchanged:: 3.6
2316 Accepts a :term:`path-like object` for *src* and *dst*.
2317
Georg Brandl116aa622007-08-15 14:28:22 +00002318
2319.. function:: renames(old, new)
2320
2321 Recursive directory or file renaming function. Works like :func:`rename`, except
2322 creation of any intermediate directories needed to make the new pathname good is
2323 attempted first. After the rename, directories corresponding to rightmost path
2324 segments of the old name will be pruned away using :func:`removedirs`.
2325
Georg Brandl116aa622007-08-15 14:28:22 +00002326 .. note::
2327
2328 This function can fail with the new directory structure made if you lack
2329 permissions needed to remove the leaf directory or file.
2330
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002331 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.renames
2332
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002333 .. versionchanged:: 3.6
2334 Accepts a :term:`path-like object` for *old* and *new*.
2335
Georg Brandl116aa622007-08-15 14:28:22 +00002336
Larry Hastings9cf065c2012-06-22 16:30:09 -07002337.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002338
2339 Rename the file or directory *src* to *dst*. If *dst* is a directory,
2340 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
2341 be replaced silently if the user has permission. The operation may fail
2342 if *src* and *dst* are on different filesystems. If successful,
2343 the renaming will be an atomic operation (this is a POSIX requirement).
2344
Georg Brandlaceaf902012-06-25 08:33:56 +02002345 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
2346 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002347
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002348 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.replace
2349
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002350 .. versionadded:: 3.3
2351
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002352 .. versionchanged:: 3.6
2353 Accepts a :term:`path-like object` for *src* and *dst*.
2354
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002355
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002356.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002357
Tim Hoffmanna55f75a2019-07-05 10:41:35 +02002358 Remove (delete) the directory *path*. If the directory does not exist or is
2359 not empty, an :exc:`FileNotFoundError` or an :exc:`OSError` is raised
2360 respectively. In order to remove whole directory trees,
2361 :func:`shutil.rmtree` can be used.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002362
Georg Brandl50c40002012-06-24 11:45:20 +02002363 This function can support :ref:`paths relative to directory descriptors
2364 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002365
Saiyang Gou7514f4f2020-02-12 23:47:42 -08002366 .. audit-event:: os.rmdir path,dir_fd os.rmdir
2367
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002368 .. versionadded:: 3.3
2369 The *dir_fd* parameter.
2370
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002371 .. versionchanged:: 3.6
2372 Accepts a :term:`path-like object`.
2373
Georg Brandl116aa622007-08-15 14:28:22 +00002374
Victor Stinner6036e442015-03-08 01:58:04 +01002375.. function:: scandir(path='.')
2376
Brett Cannona32c4d02016-06-24 14:14:44 -07002377 Return an iterator of :class:`os.DirEntry` objects corresponding to the
2378 entries in the directory given by *path*. The entries are yielded in
2379 arbitrary order, and the special entries ``'.'`` and ``'..'`` are not
Serhiy Storchaka306cfb32020-09-04 21:19:30 +03002380 included. If a file is removed from or added to the directory after
2381 creating the iterator, whether an entry for that file be included is
2382 unspecified.
Victor Stinner6036e442015-03-08 01:58:04 +01002383
Victor Stinner51b58322015-05-15 09:12:58 +02002384 Using :func:`scandir` instead of :func:`listdir` can significantly
2385 increase the performance of code that also needs file type or file
Brett Cannona32c4d02016-06-24 14:14:44 -07002386 attribute information, because :class:`os.DirEntry` objects expose this
Victor Stinner51b58322015-05-15 09:12:58 +02002387 information if the operating system provides it when scanning a directory.
Brett Cannona32c4d02016-06-24 14:14:44 -07002388 All :class:`os.DirEntry` methods may perform a system call, but
2389 :func:`~os.DirEntry.is_dir` and :func:`~os.DirEntry.is_file` usually only
2390 require a system call for symbolic links; :func:`os.DirEntry.stat`
Victor Stinner51b58322015-05-15 09:12:58 +02002391 always requires a system call on Unix but only requires one for
2392 symbolic links on Windows.
Victor Stinner6036e442015-03-08 01:58:04 +01002393
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002394 *path* may be a :term:`path-like object`. If *path* is of type ``bytes``
2395 (directly or indirectly through the :class:`PathLike` interface),
2396 the type of the :attr:`~os.DirEntry.name` and :attr:`~os.DirEntry.path`
2397 attributes of each :class:`os.DirEntry` will be ``bytes``; in all other
2398 circumstances, they will be of type ``str``.
Victor Stinner6036e442015-03-08 01:58:04 +01002399
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002400 This function can also support :ref:`specifying a file descriptor
2401 <path_fd>`; the file descriptor must refer to a directory.
2402
Steve Dower44f91c32019-06-27 10:47:59 -07002403 .. audit-event:: os.scandir path os.scandir
Steve Dower60419a72019-06-24 08:42:54 -07002404
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002405 The :func:`scandir` iterator supports the :term:`context manager` protocol
2406 and has the following method:
2407
2408 .. method:: scandir.close()
2409
2410 Close the iterator and free acquired resources.
2411
2412 This is called automatically when the iterator is exhausted or garbage
2413 collected, or when an error happens during iterating. However it
2414 is advisable to call it explicitly or use the :keyword:`with`
2415 statement.
2416
2417 .. versionadded:: 3.6
2418
Victor Stinner6036e442015-03-08 01:58:04 +01002419 The following example shows a simple use of :func:`scandir` to display all
Victor Stinner51b58322015-05-15 09:12:58 +02002420 the files (excluding directories) in the given *path* that don't start with
2421 ``'.'``. The ``entry.is_file()`` call will generally not make an additional
2422 system call::
Victor Stinner6036e442015-03-08 01:58:04 +01002423
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002424 with os.scandir(path) as it:
2425 for entry in it:
2426 if not entry.name.startswith('.') and entry.is_file():
2427 print(entry.name)
Victor Stinner6036e442015-03-08 01:58:04 +01002428
2429 .. note::
2430
2431 On Unix-based systems, :func:`scandir` uses the system's
2432 `opendir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/opendir.html>`_
2433 and
2434 `readdir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/readdir_r.html>`_
2435 functions. On Windows, it uses the Win32
Georg Brandl5d941342016-02-26 19:37:12 +01002436 `FindFirstFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01002437 and
Georg Brandl5d941342016-02-26 19:37:12 +01002438 `FindNextFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01002439 functions.
2440
Victor Stinner6036e442015-03-08 01:58:04 +01002441 .. versionadded:: 3.5
2442
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002443 .. versionadded:: 3.6
2444 Added support for the :term:`context manager` protocol and the
2445 :func:`~scandir.close()` method. If a :func:`scandir` iterator is neither
2446 exhausted nor explicitly closed a :exc:`ResourceWarning` will be emitted
2447 in its destructor.
2448
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002449 The function accepts a :term:`path-like object`.
2450
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002451 .. versionchanged:: 3.7
2452 Added support for :ref:`file descriptors <path_fd>` on Unix.
2453
Victor Stinner6036e442015-03-08 01:58:04 +01002454
2455.. class:: DirEntry
2456
2457 Object yielded by :func:`scandir` to expose the file path and other file
2458 attributes of a directory entry.
2459
2460 :func:`scandir` will provide as much of this information as possible without
2461 making additional system calls. When a ``stat()`` or ``lstat()`` system call
Brett Cannona32c4d02016-06-24 14:14:44 -07002462 is made, the ``os.DirEntry`` object will cache the result.
Victor Stinner6036e442015-03-08 01:58:04 +01002463
Brett Cannona32c4d02016-06-24 14:14:44 -07002464 ``os.DirEntry`` instances are not intended to be stored in long-lived data
Victor Stinner6036e442015-03-08 01:58:04 +01002465 structures; if you know the file metadata has changed or if a long time has
2466 elapsed since calling :func:`scandir`, call ``os.stat(entry.path)`` to fetch
2467 up-to-date information.
2468
Brett Cannona32c4d02016-06-24 14:14:44 -07002469 Because the ``os.DirEntry`` methods can make operating system calls, they may
Victor Stinner51b58322015-05-15 09:12:58 +02002470 also raise :exc:`OSError`. If you need very fine-grained
Victor Stinner6036e442015-03-08 01:58:04 +01002471 control over errors, you can catch :exc:`OSError` when calling one of the
Brett Cannona32c4d02016-06-24 14:14:44 -07002472 ``os.DirEntry`` methods and handle as appropriate.
Victor Stinner6036e442015-03-08 01:58:04 +01002473
Brett Cannona32c4d02016-06-24 14:14:44 -07002474 To be directly usable as a :term:`path-like object`, ``os.DirEntry``
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002475 implements the :class:`PathLike` interface.
Brett Cannon96881cd2016-06-10 14:37:21 -07002476
Brett Cannona32c4d02016-06-24 14:14:44 -07002477 Attributes and methods on a ``os.DirEntry`` instance are as follows:
Victor Stinner6036e442015-03-08 01:58:04 +01002478
2479 .. attribute:: name
2480
2481 The entry's base filename, relative to the :func:`scandir` *path*
2482 argument.
2483
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002484 The :attr:`name` attribute will be ``bytes`` if the :func:`scandir`
2485 *path* argument is of type ``bytes`` and ``str`` otherwise. Use
Victor Stinner51b58322015-05-15 09:12:58 +02002486 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01002487
2488 .. attribute:: path
2489
2490 The entry's full path name: equivalent to ``os.path.join(scandir_path,
2491 entry.name)`` where *scandir_path* is the :func:`scandir` *path*
2492 argument. The path is only absolute if the :func:`scandir` *path*
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002493 argument was absolute. If the :func:`scandir` *path*
2494 argument was a :ref:`file descriptor <path_fd>`, the :attr:`path`
2495 attribute is the same as the :attr:`name` attribute.
Victor Stinner6036e442015-03-08 01:58:04 +01002496
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002497 The :attr:`path` attribute will be ``bytes`` if the :func:`scandir`
2498 *path* argument is of type ``bytes`` and ``str`` otherwise. Use
Victor Stinner51b58322015-05-15 09:12:58 +02002499 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01002500
2501 .. method:: inode()
2502
2503 Return the inode number of the entry.
2504
Brett Cannona32c4d02016-06-24 14:14:44 -07002505 The result is cached on the ``os.DirEntry`` object. Use
2506 ``os.stat(entry.path, follow_symlinks=False).st_ino`` to fetch up-to-date
2507 information.
Victor Stinner6036e442015-03-08 01:58:04 +01002508
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002509 On the first, uncached call, a system call is required on Windows but
2510 not on Unix.
Victor Stinner6036e442015-03-08 01:58:04 +01002511
Andre Delfinodcc997c2020-12-16 22:37:28 -03002512 .. method:: is_dir(*, follow_symlinks=True)
Victor Stinner6036e442015-03-08 01:58:04 +01002513
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002514 Return ``True`` if this entry is a directory or a symbolic link pointing
2515 to a directory; return ``False`` if the entry is or points to any other
2516 kind of file, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002517
2518 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002519 is a directory (without following symlinks); return ``False`` if the
2520 entry is any other kind of file or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002521
Brett Cannona32c4d02016-06-24 14:14:44 -07002522 The result is cached on the ``os.DirEntry`` object, with a separate cache
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002523 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` along
2524 with :func:`stat.S_ISDIR` to fetch up-to-date information.
2525
2526 On the first, uncached call, no system call is required in most cases.
2527 Specifically, for non-symlinks, neither Windows or Unix require a system
2528 call, except on certain Unix file systems, such as network file systems,
2529 that return ``dirent.d_type == DT_UNKNOWN``. If the entry is a symlink,
2530 a system call will be required to follow the symlink unless
2531 *follow_symlinks* is ``False``.
Victor Stinner6036e442015-03-08 01:58:04 +01002532
Victor Stinner51b58322015-05-15 09:12:58 +02002533 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2534 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002535
Andre Delfinodcc997c2020-12-16 22:37:28 -03002536 .. method:: is_file(*, follow_symlinks=True)
Victor Stinner6036e442015-03-08 01:58:04 +01002537
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002538 Return ``True`` if this entry is a file or a symbolic link pointing to a
2539 file; return ``False`` if the entry is or points to a directory or other
2540 non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002541
2542 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002543 is a file (without following symlinks); return ``False`` if the entry is
2544 a directory or other non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002545
Brett Cannona32c4d02016-06-24 14:14:44 -07002546 The result is cached on the ``os.DirEntry`` object. Caching, system calls
2547 made, and exceptions raised are as per :func:`~os.DirEntry.is_dir`.
Victor Stinner6036e442015-03-08 01:58:04 +01002548
2549 .. method:: is_symlink()
2550
Victor Stinner51b58322015-05-15 09:12:58 +02002551 Return ``True`` if this entry is a symbolic link (even if broken);
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002552 return ``False`` if the entry points to a directory or any kind of file,
Victor Stinner51b58322015-05-15 09:12:58 +02002553 or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002554
Brett Cannona32c4d02016-06-24 14:14:44 -07002555 The result is cached on the ``os.DirEntry`` object. Call
Victor Stinner51b58322015-05-15 09:12:58 +02002556 :func:`os.path.islink` to fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002557
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002558 On the first, uncached call, no system call is required in most cases.
2559 Specifically, neither Windows or Unix require a system call, except on
2560 certain Unix file systems, such as network file systems, that return
2561 ``dirent.d_type == DT_UNKNOWN``.
Victor Stinner6036e442015-03-08 01:58:04 +01002562
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002563 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2564 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002565
Andre Delfinodcc997c2020-12-16 22:37:28 -03002566 .. method:: stat(*, follow_symlinks=True)
Victor Stinner6036e442015-03-08 01:58:04 +01002567
Victor Stinner51b58322015-05-15 09:12:58 +02002568 Return a :class:`stat_result` object for this entry. This method
2569 follows symbolic links by default; to stat a symbolic link add the
2570 ``follow_symlinks=False`` argument.
2571
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002572 On Unix, this method always requires a system call. On Windows, it
2573 only requires a system call if *follow_symlinks* is ``True`` and the
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002574 entry is a reparse point (for example, a symbolic link or directory
2575 junction).
Victor Stinner6036e442015-03-08 01:58:04 +01002576
2577 On Windows, the ``st_ino``, ``st_dev`` and ``st_nlink`` attributes of the
2578 :class:`stat_result` are always set to zero. Call :func:`os.stat` to
2579 get these attributes.
2580
Brett Cannona32c4d02016-06-24 14:14:44 -07002581 The result is cached on the ``os.DirEntry`` object, with a separate cache
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002582 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` to
2583 fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002584
Guido van Rossum1469d742016-01-06 11:36:03 -08002585 Note that there is a nice correspondence between several attributes
Brett Cannona32c4d02016-06-24 14:14:44 -07002586 and methods of ``os.DirEntry`` and of :class:`pathlib.Path`. In
Brett Cannonc28592b2016-06-24 12:21:47 -07002587 particular, the ``name`` attribute has the same
Guido van Rossum1469d742016-01-06 11:36:03 -08002588 meaning, as do the ``is_dir()``, ``is_file()``, ``is_symlink()``
2589 and ``stat()`` methods.
2590
Victor Stinner6036e442015-03-08 01:58:04 +01002591 .. versionadded:: 3.5
2592
Brett Cannon96881cd2016-06-10 14:37:21 -07002593 .. versionchanged:: 3.6
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002594 Added support for the :class:`~os.PathLike` interface. Added support
2595 for :class:`bytes` paths on Windows.
Brett Cannon96881cd2016-06-10 14:37:21 -07002596
Victor Stinner6036e442015-03-08 01:58:04 +01002597
Andre Delfinodcc997c2020-12-16 22:37:28 -03002598.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002599
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002600 Get the status of a file or a file descriptor. Perform the equivalent of a
2601 :c:func:`stat` system call on the given path. *path* may be specified as
Xiang Zhang4459e002017-01-22 13:04:17 +08002602 either a string or bytes -- directly or indirectly through the :class:`PathLike`
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002603 interface -- or as an open file descriptor. Return a :class:`stat_result`
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002604 object.
Georg Brandl116aa622007-08-15 14:28:22 +00002605
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002606 This function normally follows symlinks; to stat a symlink add the argument
2607 ``follow_symlinks=False``, or use :func:`lstat`.
R. David Murray7b1aae92011-01-24 19:34:58 +00002608
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002609 This function can support :ref:`specifying a file descriptor <path_fd>` and
2610 :ref:`not following symlinks <follow_symlinks>`.
Georg Brandl116aa622007-08-15 14:28:22 +00002611
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002612 On Windows, passing ``follow_symlinks=False`` will disable following all
2613 name-surrogate reparse points, which includes symlinks and directory
2614 junctions. Other types of reparse points that do not resemble links or that
2615 the operating system is unable to follow will be opened directly. When
2616 following a chain of multiple links, this may result in the original link
2617 being returned instead of the non-link that prevented full traversal. To
2618 obtain stat results for the final path in this case, use the
2619 :func:`os.path.realpath` function to resolve the path name as far as
2620 possible and call :func:`lstat` on the result. This does not apply to
2621 dangling symlinks or junction points, which will raise the usual exceptions.
2622
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002623 .. index:: module: stat
R. David Murray7b1aae92011-01-24 19:34:58 +00002624
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002625 Example::
Georg Brandl116aa622007-08-15 14:28:22 +00002626
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002627 >>> import os
2628 >>> statinfo = os.stat('somefile.txt')
2629 >>> statinfo
2630 os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2631 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2632 st_mtime=1297230027, st_ctime=1297230027)
2633 >>> statinfo.st_size
2634 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002635
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002636 .. seealso::
Zachary Ware63f277b2014-06-19 09:46:37 -05002637
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002638 :func:`fstat` and :func:`lstat` functions.
2639
2640 .. versionadded:: 3.3
2641 Added the *dir_fd* and *follow_symlinks* arguments, specifying a file
2642 descriptor instead of a path.
2643
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002644 .. versionchanged:: 3.6
2645 Accepts a :term:`path-like object`.
2646
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002647 .. versionchanged:: 3.8
2648 On Windows, all reparse points that can be resolved by the operating
2649 system are now followed, and passing ``follow_symlinks=False``
2650 disables following all name surrogate reparse points. If the operating
2651 system reaches a reparse point that it is not able to follow, *stat* now
2652 returns the information for the original path as if
2653 ``follow_symlinks=False`` had been specified instead of raising an error.
2654
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002655
2656.. class:: stat_result
2657
2658 Object whose attributes correspond roughly to the members of the
2659 :c:type:`stat` structure. It is used for the result of :func:`os.stat`,
2660 :func:`os.fstat` and :func:`os.lstat`.
2661
2662 Attributes:
2663
2664 .. attribute:: st_mode
2665
2666 File mode: file type and file mode bits (permissions).
2667
2668 .. attribute:: st_ino
2669
Steve Dower3e51a3d2018-05-28 17:24:36 -07002670 Platform dependent, but if non-zero, uniquely identifies the
2671 file for a given value of ``st_dev``. Typically:
2672
2673 * the inode number on Unix,
2674 * the `file index
2675 <https://msdn.microsoft.com/en-us/library/aa363788>`_ on
2676 Windows
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002677
2678 .. attribute:: st_dev
2679
2680 Identifier of the device on which this file resides.
2681
2682 .. attribute:: st_nlink
2683
2684 Number of hard links.
2685
2686 .. attribute:: st_uid
2687
2688 User identifier of the file owner.
2689
2690 .. attribute:: st_gid
2691
2692 Group identifier of the file owner.
2693
2694 .. attribute:: st_size
2695
2696 Size of the file in bytes, if it is a regular file or a symbolic link.
2697 The size of a symbolic link is the length of the pathname it contains,
2698 without a terminating null byte.
2699
2700 Timestamps:
2701
2702 .. attribute:: st_atime
2703
2704 Time of most recent access expressed in seconds.
2705
2706 .. attribute:: st_mtime
2707
2708 Time of most recent content modification expressed in seconds.
2709
2710 .. attribute:: st_ctime
2711
2712 Platform dependent:
2713
2714 * the time of most recent metadata change on Unix,
2715 * the time of creation on Windows, expressed in seconds.
2716
2717 .. attribute:: st_atime_ns
2718
2719 Time of most recent access expressed in nanoseconds as an integer.
2720
2721 .. attribute:: st_mtime_ns
2722
2723 Time of most recent content modification expressed in nanoseconds as an
2724 integer.
2725
2726 .. attribute:: st_ctime_ns
2727
2728 Platform dependent:
2729
2730 * the time of most recent metadata change on Unix,
2731 * the time of creation on Windows, expressed in nanoseconds as an
2732 integer.
2733
Georg Brandl116aa622007-08-15 14:28:22 +00002734 .. note::
2735
Senthil Kumaran3aac1792011-07-04 11:43:51 -07002736 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07002737 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
2738 system and the file system. For example, on Windows systems using the FAT
2739 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
2740 :attr:`st_atime` has only 1-day resolution. See your operating system
2741 documentation for details.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002742
Larry Hastings6fe20b32012-04-19 15:07:49 -07002743 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
2744 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
2745 systems do not provide nanosecond precision. On systems that do
2746 provide nanosecond precision, the floating-point object used to
2747 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
2748 cannot preserve all of it, and as such will be slightly inexact.
2749 If you need the exact timestamps you should always use
2750 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00002751
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002752 On some Unix systems (such as Linux), the following attributes may also be
2753 available:
2754
2755 .. attribute:: st_blocks
2756
2757 Number of 512-byte blocks allocated for file.
2758 This may be smaller than :attr:`st_size`/512 when the file has holes.
2759
2760 .. attribute:: st_blksize
2761
2762 "Preferred" blocksize for efficient file system I/O. Writing to a file in
2763 smaller chunks may cause an inefficient read-modify-rewrite.
2764
2765 .. attribute:: st_rdev
2766
2767 Type of device if an inode device.
2768
2769 .. attribute:: st_flags
2770
2771 User defined flags for file.
2772
2773 On other Unix systems (such as FreeBSD), the following attributes may be
2774 available (but may be only filled out if root tries to use them):
2775
2776 .. attribute:: st_gen
2777
2778 File generation number.
2779
2780 .. attribute:: st_birthtime
2781
2782 Time of file creation.
2783
jcea6c51d512018-01-28 14:00:08 +01002784 On Solaris and derivatives, the following attributes may also be
2785 available:
2786
2787 .. attribute:: st_fstype
2788
2789 String that uniquely identifies the type of the filesystem that
2790 contains the file.
2791
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002792 On Mac OS systems, the following attributes may also be available:
2793
2794 .. attribute:: st_rsize
2795
2796 Real size of the file.
2797
2798 .. attribute:: st_creator
2799
2800 Creator of the file.
2801
2802 .. attribute:: st_type
2803
2804 File type.
2805
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002806 On Windows systems, the following attributes are also available:
Victor Stinnere1d24f72014-07-24 12:44:07 +02002807
2808 .. attribute:: st_file_attributes
2809
2810 Windows file attributes: ``dwFileAttributes`` member of the
2811 ``BY_HANDLE_FILE_INFORMATION`` structure returned by
2812 :c:func:`GetFileInformationByHandle`. See the ``FILE_ATTRIBUTE_*``
2813 constants in the :mod:`stat` module.
2814
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002815 .. attribute:: st_reparse_tag
2816
2817 When :attr:`st_file_attributes` has the ``FILE_ATTRIBUTE_REPARSE_POINT``
2818 set, this field contains the tag identifying the type of reparse point.
2819 See the ``IO_REPARSE_TAG_*`` constants in the :mod:`stat` module.
2820
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002821 The standard module :mod:`stat` defines functions and constants that are
2822 useful for extracting information from a :c:type:`stat` structure. (On
2823 Windows, some items are filled with dummy values.)
2824
2825 For backward compatibility, a :class:`stat_result` instance is also
Georg Brandl50c40002012-06-24 11:45:20 +02002826 accessible as a tuple of at least 10 integers giving the most important (and
2827 portable) members of the :c:type:`stat` structure, in the order
2828 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
2829 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
2830 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002831 some implementations. For compatibility with older Python versions,
2832 accessing :class:`stat_result` as a tuple always returns integers.
Georg Brandl116aa622007-08-15 14:28:22 +00002833
Larry Hastings6fe20b32012-04-19 15:07:49 -07002834 .. versionadded:: 3.3
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002835 Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and
2836 :attr:`st_ctime_ns` members.
Larry Hastings6fe20b32012-04-19 15:07:49 -07002837
Zachary Ware63f277b2014-06-19 09:46:37 -05002838 .. versionadded:: 3.5
2839 Added the :attr:`st_file_attributes` member on Windows.
2840
Steve Dower3e51a3d2018-05-28 17:24:36 -07002841 .. versionchanged:: 3.5
2842 Windows now returns the file index as :attr:`st_ino` when
2843 available.
2844
jcea6c51d512018-01-28 14:00:08 +01002845 .. versionadded:: 3.7
2846 Added the :attr:`st_fstype` member to Solaris/derivatives.
Georg Brandl116aa622007-08-15 14:28:22 +00002847
Steve Dowerdf2d4a62019-08-21 15:27:33 -07002848 .. versionadded:: 3.8
2849 Added the :attr:`st_reparse_tag` member on Windows.
2850
2851 .. versionchanged:: 3.8
2852 On Windows, the :attr:`st_mode` member now identifies special
2853 files as :const:`S_IFCHR`, :const:`S_IFIFO` or :const:`S_IFBLK`
2854 as appropriate.
2855
Georg Brandl116aa622007-08-15 14:28:22 +00002856.. function:: statvfs(path)
2857
Georg Brandl60203b42010-10-06 10:11:56 +00002858 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002859 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002860 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002861 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2862 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Giuseppe Scrivano96a5e502017-12-14 23:46:46 +01002863 :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002864
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002865 Two module-level constants are defined for the :attr:`f_flag` attribute's
2866 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2867 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2868 setuid/setgid bits are disabled or not supported.
2869
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002870 Additional module-level constants are defined for GNU/glibc based systems.
2871 These are :const:`ST_NODEV` (disallow access to device special files),
2872 :const:`ST_NOEXEC` (disallow program execution), :const:`ST_SYNCHRONOUS`
2873 (writes are synced at once), :const:`ST_MANDLOCK` (allow mandatory locks on an FS),
2874 :const:`ST_WRITE` (write on file/directory/symlink), :const:`ST_APPEND`
2875 (append-only file), :const:`ST_IMMUTABLE` (immutable file), :const:`ST_NOATIME`
2876 (do not update access times), :const:`ST_NODIRATIME` (do not update directory access
2877 times), :const:`ST_RELATIME` (update atime relative to mtime/ctime).
2878
Georg Brandl50c40002012-06-24 11:45:20 +02002879 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002880
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002881 .. availability:: Unix.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002882
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002883 .. versionchanged:: 3.2
2884 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2885
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002886 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04002887 Added support for specifying *path* as an open file descriptor.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002888
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002889 .. versionchanged:: 3.4
2890 The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`,
2891 :const:`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`,
2892 :const:`ST_IMMUTABLE`, :const:`ST_NOATIME`, :const:`ST_NODIRATIME`,
2893 and :const:`ST_RELATIME` constants were added.
2894
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002895 .. versionchanged:: 3.6
2896 Accepts a :term:`path-like object`.
Georg Brandl116aa622007-08-15 14:28:22 +00002897
Giuseppe Scrivano96a5e502017-12-14 23:46:46 +01002898 .. versionadded:: 3.7
2899 Added :attr:`f_fsid`.
2900
Larry Hastings9cf065c2012-06-22 16:30:09 -07002901
2902.. data:: supports_dir_fd
2903
Cheryl Sabellae1521692019-05-06 08:39:13 -04002904 A :class:`set` object indicating which functions in the :mod:`os`
2905 module accept an open file descriptor for their *dir_fd* parameter.
2906 Different platforms provide different features, and the underlying
2907 functionality Python uses to implement the *dir_fd* parameter is not
2908 available on all platforms Python supports. For consistency's sake,
2909 functions that may support *dir_fd* always allow specifying the
2910 parameter, but will throw an exception if the functionality is used
2911 when it's not locally available. (Specifying ``None`` for *dir_fd*
2912 is always supported on all platforms.)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002913
Cheryl Sabellae1521692019-05-06 08:39:13 -04002914 To check whether a particular function accepts an open file descriptor
2915 for its *dir_fd* parameter, use the ``in`` operator on ``supports_dir_fd``.
2916 As an example, this expression evaluates to ``True`` if :func:`os.stat`
2917 accepts open file descriptors for *dir_fd* on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002918
2919 os.stat in os.supports_dir_fd
2920
Cheryl Sabellae1521692019-05-06 08:39:13 -04002921 Currently *dir_fd* parameters only work on Unix platforms;
2922 none of them work on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002923
2924 .. versionadded:: 3.3
2925
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002926
Larry Hastings9cf065c2012-06-22 16:30:09 -07002927.. data:: supports_effective_ids
2928
Cheryl Sabellae1521692019-05-06 08:39:13 -04002929 A :class:`set` object indicating whether :func:`os.access` permits
2930 specifying ``True`` for its *effective_ids* parameter on the local platform.
2931 (Specifying ``False`` for *effective_ids* is always supported on all
2932 platforms.) If the local platform supports it, the collection will contain
2933 :func:`os.access`; otherwise it will be empty.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002934
Cheryl Sabellae1521692019-05-06 08:39:13 -04002935 This expression evaluates to ``True`` if :func:`os.access` supports
2936 ``effective_ids=True`` on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002937
2938 os.access in os.supports_effective_ids
2939
Cheryl Sabellae1521692019-05-06 08:39:13 -04002940 Currently *effective_ids* is only supported on Unix platforms;
2941 it does not work on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002942
2943 .. versionadded:: 3.3
2944
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002945
Larry Hastings9cf065c2012-06-22 16:30:09 -07002946.. data:: supports_fd
2947
Cheryl Sabellae1521692019-05-06 08:39:13 -04002948 A :class:`set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002949 :mod:`os` module permit specifying their *path* parameter as an open file
Cheryl Sabellae1521692019-05-06 08:39:13 -04002950 descriptor on the local platform. Different platforms provide different
2951 features, and the underlying functionality Python uses to accept open file
2952 descriptors as *path* arguments is not available on all platforms Python
2953 supports.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002954
Cheryl Sabellae1521692019-05-06 08:39:13 -04002955 To determine whether a particular function permits specifying an open file
Larry Hastings9cf065c2012-06-22 16:30:09 -07002956 descriptor for its *path* parameter, use the ``in`` operator on
Cheryl Sabellae1521692019-05-06 08:39:13 -04002957 ``supports_fd``. As an example, this expression evaluates to ``True`` if
2958 :func:`os.chdir` accepts open file descriptors for *path* on your local
Larry Hastings9cf065c2012-06-22 16:30:09 -07002959 platform::
2960
2961 os.chdir in os.supports_fd
2962
2963 .. versionadded:: 3.3
2964
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002965
Larry Hastings9cf065c2012-06-22 16:30:09 -07002966.. data:: supports_follow_symlinks
2967
Cheryl Sabellae1521692019-05-06 08:39:13 -04002968 A :class:`set` object indicating which functions in the :mod:`os` module
2969 accept ``False`` for their *follow_symlinks* parameter on the local platform.
2970 Different platforms provide different features, and the underlying
2971 functionality Python uses to implement *follow_symlinks* is not available
2972 on all platforms Python supports. For consistency's sake, functions that
2973 may support *follow_symlinks* always allow specifying the parameter, but
2974 will throw an exception if the functionality is used when it's not locally
2975 available. (Specifying ``True`` for *follow_symlinks* is always supported
2976 on all platforms.)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002977
Cheryl Sabellae1521692019-05-06 08:39:13 -04002978 To check whether a particular function accepts ``False`` for its
2979 *follow_symlinks* parameter, use the ``in`` operator on
2980 ``supports_follow_symlinks``. As an example, this expression evaluates
2981 to ``True`` if you may specify ``follow_symlinks=False`` when calling
2982 :func:`os.stat` on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002983
2984 os.stat in os.supports_follow_symlinks
2985
2986 .. versionadded:: 3.3
2987
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002988
Martin Panterbf19d162015-09-09 01:01:13 +00002989.. function:: symlink(src, dst, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002990
Martin Panterbf19d162015-09-09 01:01:13 +00002991 Create a symbolic link pointing to *src* named *dst*.
Brian Curtinc7395692010-07-09 15:15:09 +00002992
Larry Hastings9cf065c2012-06-22 16:30:09 -07002993 On Windows, a symlink represents either a file or a directory, and does not
Jason R. Coombs3a092862013-05-27 23:21:28 -04002994 morph to the target dynamically. If the target is present, the type of the
2995 symlink will be created to match. Otherwise, the symlink will be created
2996 as a directory if *target_is_directory* is ``True`` or a file symlink (the
l-n-sdaeb3c42018-11-14 00:13:12 +00002997 default) otherwise. On non-Windows platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002998
Georg Brandl50c40002012-06-24 11:45:20 +02002999 This function can support :ref:`paths relative to directory descriptors
3000 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07003001
Brian Curtin52173d42010-12-02 18:29:18 +00003002 .. note::
3003
Vidar Tonaas Fauske0e107662019-04-09 20:19:46 +02003004 On newer versions of Windows 10, unprivileged accounts can create symlinks
3005 if Developer Mode is enabled. When Developer Mode is not available/enabled,
3006 the *SeCreateSymbolicLinkPrivilege* privilege is required, or the process
3007 must be run as an administrator.
Brian Curtin96245592010-12-28 17:08:22 +00003008
Jason R. Coombs3a092862013-05-27 23:21:28 -04003009
Brian Curtin96245592010-12-28 17:08:22 +00003010 :exc:`OSError` is raised when the function is called by an unprivileged
3011 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00003012
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003013 .. audit-event:: os.symlink src,dst,dir_fd os.symlink
3014
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003015 .. availability:: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00003016
Georg Brandlb3823372010-07-10 08:58:37 +00003017 .. versionchanged:: 3.2
3018 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00003019
Larry Hastings9cf065c2012-06-22 16:30:09 -07003020 .. versionadded:: 3.3
3021 Added the *dir_fd* argument, and now allow *target_is_directory*
3022 on non-Windows platforms.
3023
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003024 .. versionchanged:: 3.6
3025 Accepts a :term:`path-like object` for *src* and *dst*.
3026
Vidar Tonaas Fauske0e107662019-04-09 20:19:46 +02003027 .. versionchanged:: 3.8
3028 Added support for unelevated symlinks on Windows with Developer Mode.
3029
Georg Brandl116aa622007-08-15 14:28:22 +00003030
Ross Lagerwall7807c352011-03-17 20:20:30 +02003031.. function:: sync()
3032
3033 Force write of everything to disk.
3034
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003035 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02003036
3037 .. versionadded:: 3.3
3038
3039
3040.. function:: truncate(path, length)
3041
3042 Truncate the file corresponding to *path*, so that it is at most
3043 *length* bytes in size.
3044
Georg Brandl306336b2012-06-24 12:55:33 +02003045 This function can support :ref:`specifying a file descriptor <path_fd>`.
3046
Steve Dower44f91c32019-06-27 10:47:59 -07003047 .. audit-event:: os.truncate path,length os.truncate
Steve Dowerb82e17e2019-05-23 08:45:22 -07003048
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003049 .. availability:: Unix, Windows.
Ross Lagerwall7807c352011-03-17 20:20:30 +02003050
3051 .. versionadded:: 3.3
3052
Steve Dowerfe0a41a2015-03-20 19:50:46 -07003053 .. versionchanged:: 3.5
3054 Added support for Windows
Ross Lagerwall7807c352011-03-17 20:20:30 +02003055
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003056 .. versionchanged:: 3.6
3057 Accepts a :term:`path-like object`.
3058
3059
Larry Hastingsb698d8e2012-06-23 16:55:07 -07003060.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00003061
Brett Cannon05039172015-12-28 17:28:19 -08003062 Remove (delete) the file *path*. This function is semantically
3063 identical to :func:`remove`; the ``unlink`` name is its
3064 traditional Unix name. Please see the documentation for
3065 :func:`remove` for further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003066
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003067 .. audit-event:: os.remove path,dir_fd os.unlink
3068
Larry Hastings9cf065c2012-06-22 16:30:09 -07003069 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07003070 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00003071
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003072 .. versionchanged:: 3.6
3073 Accepts a :term:`path-like object`.
3074
Larry Hastings9cf065c2012-06-22 16:30:09 -07003075
Martin Panterbf19d162015-09-09 01:01:13 +00003076.. function:: utime(path, times=None, *[, ns], dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00003077
Larry Hastings76ad59b2012-05-03 00:30:07 -07003078 Set the access and modified times of the file specified by *path*.
3079
3080 :func:`utime` takes two optional parameters, *times* and *ns*.
3081 These specify the times set on *path* and are used as follows:
3082
Martin Panterbf19d162015-09-09 01:01:13 +00003083 - If *ns* is specified,
Larry Hastings76ad59b2012-05-03 00:30:07 -07003084 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
3085 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07003086 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07003087 it must be a 2-tuple of the form ``(atime, mtime)``
3088 where each member is an int or float expressing seconds.
Martin Panterbf19d162015-09-09 01:01:13 +00003089 - If *times* is ``None`` and *ns* is unspecified,
Larry Hastings9cf065c2012-06-22 16:30:09 -07003090 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07003091 where both times are the current time.
Larry Hastings76ad59b2012-05-03 00:30:07 -07003092
Larry Hastings9cf065c2012-06-22 16:30:09 -07003093 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07003094
Stéphane Wirtel7508a542018-05-01 12:02:26 +02003095 Note that the exact times you set here may not be returned by a subsequent
3096 :func:`~os.stat` call, depending on the resolution with which your operating
3097 system records access and modification times; see :func:`~os.stat`. The best
3098 way to preserve exact times is to use the *st_atime_ns* and *st_mtime_ns*
3099 fields from the :func:`os.stat` result object with the *ns* parameter to
3100 `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00003101
Georg Brandl50c40002012-06-24 11:45:20 +02003102 This function can support :ref:`specifying a file descriptor <path_fd>`,
3103 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
3104 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07003105
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003106 .. audit-event:: os.utime path,times,ns,dir_fd os.utime
3107
Larry Hastings76ad59b2012-05-03 00:30:07 -07003108 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04003109 Added support for specifying *path* as an open file descriptor,
Larry Hastings9cf065c2012-06-22 16:30:09 -07003110 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07003111
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003112 .. versionchanged:: 3.6
3113 Accepts a :term:`path-like object`.
3114
Georg Brandl116aa622007-08-15 14:28:22 +00003115
Georg Brandl18244152009-09-02 20:34:52 +00003116.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00003117
3118 .. index::
3119 single: directory; walking
3120 single: directory; traversal
3121
Christian Heimesfaf2f632008-01-06 16:59:19 +00003122 Generate the file names in a directory tree by walking the tree
3123 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00003124 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
3125 filenames)``.
3126
3127 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
3128 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
3129 *filenames* is a list of the names of the non-directory files in *dirpath*.
3130 Note that the names in the lists contain no path components. To get a full path
3131 (which begins with *top*) to a file or directory in *dirpath*, do
Serhiy Storchaka306cfb32020-09-04 21:19:30 +03003132 ``os.path.join(dirpath, name)``. Whether or not the lists are sorted
3133 depends on the file system. If a file is removed from or added to the
3134 *dirpath* directory during generating the lists, whether a name for that
3135 file be included is unspecified.
Georg Brandl116aa622007-08-15 14:28:22 +00003136
Christian Heimesfaf2f632008-01-06 16:59:19 +00003137 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00003138 directory is generated before the triples for any of its subdirectories
Benjamin Petersone58e0c72014-06-15 20:51:12 -07003139 (directories are generated top-down). If *topdown* is ``False``, the triple
3140 for a directory is generated after the triples for all of its subdirectories
3141 (directories are generated bottom-up). No matter the value of *topdown*, the
3142 list of subdirectories is retrieved before the tuples for the directory and
3143 its subdirectories are generated.
Georg Brandl116aa622007-08-15 14:28:22 +00003144
Christian Heimesfaf2f632008-01-06 16:59:19 +00003145 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00003146 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
3147 recurse into the subdirectories whose names remain in *dirnames*; this can be
3148 used to prune the search, impose a specific order of visiting, or even to inform
3149 :func:`walk` about directories the caller creates or renames before it resumes
Victor Stinner0e316f62015-10-23 12:38:11 +02003150 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` has
3151 no effect on the behavior of the walk, because in bottom-up mode the directories
3152 in *dirnames* are generated before *dirpath* itself is generated.
Georg Brandl116aa622007-08-15 14:28:22 +00003153
Andrés Delfinobadb8942018-04-02 23:48:54 -03003154 By default, errors from the :func:`scandir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00003155 argument *onerror* is specified, it should be a function; it will be called with
3156 one argument, an :exc:`OSError` instance. It can report the error to continue
3157 with the walk, or raise the exception to abort the walk. Note that the filename
3158 is available as the ``filename`` attribute of the exception object.
3159
3160 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00003161 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00003162 symlinks, on systems that support them.
3163
Georg Brandl116aa622007-08-15 14:28:22 +00003164 .. note::
3165
Georg Brandl50c40002012-06-24 11:45:20 +02003166 Be aware that setting *followlinks* to ``True`` can lead to infinite
3167 recursion if a link points to a parent directory of itself. :func:`walk`
3168 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00003169
3170 .. note::
3171
3172 If you pass a relative pathname, don't change the current working directory
3173 between resumptions of :func:`walk`. :func:`walk` never changes the current
3174 directory, and assumes that its caller doesn't either.
3175
3176 This example displays the number of bytes taken by non-directory files in each
3177 directory under the starting directory, except that it doesn't look under any
3178 CVS subdirectory::
3179
3180 import os
3181 from os.path import join, getsize
3182 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00003183 print(root, "consumes", end=" ")
3184 print(sum(getsize(join(root, name)) for name in files), end=" ")
3185 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00003186 if 'CVS' in dirs:
3187 dirs.remove('CVS') # don't visit CVS directories
3188
Victor Stinner47c41b42015-03-10 13:31:47 +01003189 In the next example (simple implementation of :func:`shutil.rmtree`),
3190 walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
3191 deleting a directory before the directory is empty::
Georg Brandl116aa622007-08-15 14:28:22 +00003192
Christian Heimesfaf2f632008-01-06 16:59:19 +00003193 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00003194 # assuming there are no symbolic links.
3195 # CAUTION: This is dangerous! For example, if top == '/', it
3196 # could delete all your disk files.
3197 import os
3198 for root, dirs, files in os.walk(top, topdown=False):
3199 for name in files:
3200 os.remove(os.path.join(root, name))
3201 for name in dirs:
3202 os.rmdir(os.path.join(root, name))
3203
Serhiy Storchakadb283b32020-03-08 14:31:47 +02003204 .. audit-event:: os.walk top,topdown,onerror,followlinks os.walk
3205
Victor Stinner524a5ba2015-03-10 13:20:34 +01003206 .. versionchanged:: 3.5
Victor Stinner51b58322015-05-15 09:12:58 +02003207 This function now calls :func:`os.scandir` instead of :func:`os.listdir`,
3208 making it faster by reducing the number of calls to :func:`os.stat`.
Victor Stinner524a5ba2015-03-10 13:20:34 +01003209
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003210 .. versionchanged:: 3.6
3211 Accepts a :term:`path-like object`.
3212
Georg Brandl116aa622007-08-15 14:28:22 +00003213
Larry Hastingsb4038062012-07-15 10:57:38 -07003214.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)
Charles-François Natali7372b062012-02-05 15:15:38 +01003215
3216 .. index::
3217 single: directory; walking
3218 single: directory; traversal
3219
Eli Benderskyd049d5c2012-02-11 09:52:29 +02003220 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
Larry Hastingsc48fe982012-06-25 04:49:05 -07003221 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``.
Charles-François Natali7372b062012-02-05 15:15:38 +01003222
3223 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
3224 and *dirfd* is a file descriptor referring to the directory *dirpath*.
3225
Larry Hastingsc48fe982012-06-25 04:49:05 -07003226 This function always supports :ref:`paths relative to directory descriptors
Larry Hastingsb4038062012-07-15 10:57:38 -07003227 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however
Larry Hastings950b76a2012-07-15 17:32:36 -07003228 that, unlike other functions, the :func:`fwalk` default value for
Larry Hastingsb4038062012-07-15 10:57:38 -07003229 *follow_symlinks* is ``False``.
Larry Hastingsc48fe982012-06-25 04:49:05 -07003230
Charles-François Natali7372b062012-02-05 15:15:38 +01003231 .. note::
3232
3233 Since :func:`fwalk` yields file descriptors, those are only valid until
3234 the next iteration step, so you should duplicate them (e.g. with
3235 :func:`dup`) if you want to keep them longer.
3236
3237 This example displays the number of bytes taken by non-directory files in each
3238 directory under the starting directory, except that it doesn't look under any
3239 CVS subdirectory::
3240
3241 import os
3242 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
3243 print(root, "consumes", end="")
Hynek Schlawack1729b8f2012-06-24 16:11:08 +02003244 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
Charles-François Natali7372b062012-02-05 15:15:38 +01003245 end="")
3246 print("bytes in", len(files), "non-directory files")
3247 if 'CVS' in dirs:
3248 dirs.remove('CVS') # don't visit CVS directories
3249
3250 In the next example, walking the tree bottom-up is essential:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003251 :func:`rmdir` doesn't allow deleting a directory before the directory is
Charles-François Natali7372b062012-02-05 15:15:38 +01003252 empty::
3253
3254 # Delete everything reachable from the directory named in "top",
3255 # assuming there are no symbolic links.
3256 # CAUTION: This is dangerous! For example, if top == '/', it
3257 # could delete all your disk files.
3258 import os
3259 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
3260 for name in files:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003261 os.unlink(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01003262 for name in dirs:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003263 os.rmdir(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01003264
Serhiy Storchakadb283b32020-03-08 14:31:47 +02003265 .. audit-event:: os.fwalk top,topdown,onerror,follow_symlinks,dir_fd os.fwalk
3266
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003267 .. availability:: Unix.
Charles-François Natali7372b062012-02-05 15:15:38 +01003268
3269 .. versionadded:: 3.3
3270
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003271 .. versionchanged:: 3.6
3272 Accepts a :term:`path-like object`.
3273
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +02003274 .. versionchanged:: 3.7
3275 Added support for :class:`bytes` paths.
3276
Charles-François Natali7372b062012-02-05 15:15:38 +01003277
Zackery Spytz43fdbd22019-05-29 13:57:07 -06003278.. function:: memfd_create(name[, flags=os.MFD_CLOEXEC])
3279
3280 Create an anonymous file and return a file descriptor that refers to it.
3281 *flags* must be one of the ``os.MFD_*`` constants available on the system
3282 (or a bitwise ORed combination of them). By default, the new file
3283 descriptor is :ref:`non-inheritable <fd_inheritance>`.
3284
Victor Stinnerccf0efb2019-06-05 12:24:52 +02003285 The name supplied in *name* is used as a filename and will be displayed as
3286 the target of the corresponding symbolic link in the directory
3287 ``/proc/self/fd/``. The displayed name is always prefixed with ``memfd:``
3288 and serves only for debugging purposes. Names do not affect the behavior of
3289 the file descriptor, and as such multiple files can have the same name
3290 without any side effects.
3291
Zackery Spytz43fdbd22019-05-29 13:57:07 -06003292 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer.
3293
3294 .. versionadded:: 3.8
3295
3296
3297.. data:: MFD_CLOEXEC
3298 MFD_ALLOW_SEALING
3299 MFD_HUGETLB
3300 MFD_HUGE_SHIFT
3301 MFD_HUGE_MASK
3302 MFD_HUGE_64KB
3303 MFD_HUGE_512KB
3304 MFD_HUGE_1MB
3305 MFD_HUGE_2MB
3306 MFD_HUGE_8MB
3307 MFD_HUGE_16MB
3308 MFD_HUGE_32MB
3309 MFD_HUGE_256MB
3310 MFD_HUGE_512MB
3311 MFD_HUGE_1GB
3312 MFD_HUGE_2GB
3313 MFD_HUGE_16GB
3314
3315 These flags can be passed to :func:`memfd_create`.
3316
3317 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer. The
3318 ``MFD_HUGE*`` flags are only available since Linux 4.14.
3319
3320 .. versionadded:: 3.8
3321
3322
Christian Heimescd9fed62020-11-13 19:48:52 +01003323.. function:: eventfd(initval[, flags=os.EFD_CLOEXEC])
3324
3325 Create and return an event file descriptor. The file descriptors supports
3326 raw :func:`read` and :func:`write` with a buffer size of 8,
3327 :func:`~select.select`, :func:`~select.poll` and similar. See man page
3328 :manpage:`eventfd(2)` for more information. By default, the
3329 new file descriptor is :ref:`non-inheritable <fd_inheritance>`.
3330
3331 *initval* is the initial value of the event counter. The initial value
3332 must be an 32 bit unsigned integer. Please note that the initial value is
3333 limited to a 32 bit unsigned int although the event counter is an unsigned
3334 64 bit integer with a maximum value of 2\ :sup:`64`\ -\ 2.
3335
3336 *flags* can be constructed from :const:`EFD_CLOEXEC`,
3337 :const:`EFD_NONBLOCK`, and :const:`EFD_SEMAPHORE`.
3338
3339 If :const:`EFD_SEMAPHORE` is specified and the event counter is non-zero,
3340 :func:`eventfd_read` returns 1 and decrements the counter by one.
3341
3342 If :const:`EFD_SEMAPHORE` is not specified and the event counter is
3343 non-zero, :func:`eventfd_read` returns the current event counter value and
3344 resets the counter to zero.
3345
3346 If the event counter is zero and :const:`EFD_NONBLOCK` is not
3347 specified, :func:`eventfd_read` blocks.
3348
3349 :func:`eventfd_write` increments the event counter. Write blocks if the
3350 write operation would increment the counter to a value larger than
3351 2\ :sup:`64`\ -\ 2.
3352
3353 Example::
3354
3355 import os
3356
3357 # semaphore with start value '1'
3358 fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)
3359 try:
3360 # acquire semaphore
3361 v = os.eventfd_read(fd)
3362 try:
3363 do_work()
3364 finally:
3365 # release semaphore
3366 os.eventfd_write(fd, v)
3367 finally:
3368 os.close(fd)
3369
3370 .. availability:: Linux 2.6.27 or newer with glibc 2.8 or newer.
3371
3372 .. versionadded:: 3.10
3373
3374.. function:: eventfd_read(fd)
3375
3376 Read value from an :func:`eventfd` file descriptor and return a 64 bit
3377 unsigned int. The function does not verify that *fd* is an :func:`eventfd`.
3378
3379 .. availability:: See :func:`eventfd`
3380
3381 .. versionadded:: 3.10
3382
3383.. function:: eventfd_write(fd, value)
3384
3385 Add value to an :func:`eventfd` file descriptor. *value* must be a 64 bit
3386 unsigned int. The function does not verify that *fd* is an :func:`eventfd`.
3387
3388 .. availability:: See :func:`eventfd`
3389
3390 .. versionadded:: 3.10
3391
3392.. data:: EFD_CLOEXEC
3393
3394 Set close-on-exec flag for new :func:`eventfd` file descriptor.
3395
3396 .. availability:: See :func:`eventfd`
3397
3398 .. versionadded:: 3.10
3399
3400.. data:: EFD_NONBLOCK
3401
3402 Set :const:`O_NONBLOCK` status flag for new :func:`eventfd` file
3403 descriptor.
3404
3405 .. availability:: See :func:`eventfd`
3406
3407 .. versionadded:: 3.10
3408
3409.. data:: EFD_SEMAPHORE
3410
3411 Provide semaphore-like semantics for reads from a :func:`eventfd` file
3412 descriptor. On read the internal counter is decremented by one.
3413
3414 .. availability:: Linux 2.6.30 or newer with glibc 2.8 or newer.
3415
3416 .. versionadded:: 3.10
3417
3418
Georg Brandlb9831ab2012-06-24 11:57:07 +02003419Linux extended attributes
3420~~~~~~~~~~~~~~~~~~~~~~~~~
3421
3422.. versionadded:: 3.3
3423
3424These functions are all available on Linux only.
3425
3426.. function:: getxattr(path, attribute, *, follow_symlinks=True)
3427
3428 Return the value of the extended filesystem attribute *attribute* for
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003429 *path*. *attribute* can be bytes or str (directly or indirectly through the
3430 :class:`PathLike` interface). If it is str, it is encoded with the filesystem
3431 encoding.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003432
3433 This function can support :ref:`specifying a file descriptor <path_fd>` and
3434 :ref:`not following symlinks <follow_symlinks>`.
3435
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003436 .. audit-event:: os.getxattr path,attribute os.getxattr
3437
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003438 .. versionchanged:: 3.6
Berker Peksagd4d48742017-02-19 03:17:35 +03003439 Accepts a :term:`path-like object` for *path* and *attribute*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003440
Georg Brandlb9831ab2012-06-24 11:57:07 +02003441
3442.. function:: listxattr(path=None, *, follow_symlinks=True)
3443
3444 Return a list of the extended filesystem attributes on *path*. The
3445 attributes in the list are represented as strings decoded with the filesystem
3446 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
3447 directory.
3448
3449 This function can support :ref:`specifying a file descriptor <path_fd>` and
3450 :ref:`not following symlinks <follow_symlinks>`.
3451
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003452 .. audit-event:: os.listxattr path os.listxattr
3453
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003454 .. versionchanged:: 3.6
3455 Accepts a :term:`path-like object`.
3456
Georg Brandlb9831ab2012-06-24 11:57:07 +02003457
3458.. function:: removexattr(path, attribute, *, follow_symlinks=True)
3459
3460 Removes the extended filesystem attribute *attribute* from *path*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003461 *attribute* should be bytes or str (directly or indirectly through the
3462 :class:`PathLike` interface). If it is a string, it is encoded
Victor Stinner4b9aad42020-11-02 16:49:54 +01003463 with the :term:`filesystem encoding and error handler`.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003464
3465 This function can support :ref:`specifying a file descriptor <path_fd>` and
3466 :ref:`not following symlinks <follow_symlinks>`.
3467
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003468 .. audit-event:: os.removexattr path,attribute os.removexattr
3469
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003470 .. versionchanged:: 3.6
3471 Accepts a :term:`path-like object` for *path* and *attribute*.
3472
Georg Brandlb9831ab2012-06-24 11:57:07 +02003473
3474.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
3475
3476 Set the extended filesystem attribute *attribute* on *path* to *value*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003477 *attribute* must be a bytes or str with no embedded NULs (directly or
3478 indirectly through the :class:`PathLike` interface). If it is a str,
Victor Stinner4b9aad42020-11-02 16:49:54 +01003479 it is encoded with the :term:`filesystem encoding and error handler`. *flags* may be
Georg Brandlb9831ab2012-06-24 11:57:07 +02003480 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
3481 given and the attribute does not exist, ``EEXISTS`` will be raised.
3482 If :data:`XATTR_CREATE` is given and the attribute already exists, the
3483 attribute will not be created and ``ENODATA`` will be raised.
3484
3485 This function can support :ref:`specifying a file descriptor <path_fd>` and
3486 :ref:`not following symlinks <follow_symlinks>`.
3487
3488 .. note::
3489
3490 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
3491 to be ignored on some filesystems.
3492
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003493 .. audit-event:: os.setxattr path,attribute,value,flags os.setxattr
3494
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003495 .. versionchanged:: 3.6
3496 Accepts a :term:`path-like object` for *path* and *attribute*.
3497
Georg Brandlb9831ab2012-06-24 11:57:07 +02003498
3499.. data:: XATTR_SIZE_MAX
3500
3501 The maximum size the value of an extended attribute can be. Currently, this
Serhiy Storchakaf8def282013-02-16 17:29:56 +02003502 is 64 KiB on Linux.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003503
3504
3505.. data:: XATTR_CREATE
3506
3507 This is a possible value for the flags argument in :func:`setxattr`. It
3508 indicates the operation must create an attribute.
3509
3510
3511.. data:: XATTR_REPLACE
3512
3513 This is a possible value for the flags argument in :func:`setxattr`. It
3514 indicates the operation must replace an existing attribute.
3515
3516
Georg Brandl116aa622007-08-15 14:28:22 +00003517.. _os-process:
3518
3519Process Management
3520------------------
3521
3522These functions may be used to create and manage processes.
3523
Serhiy Storchakadab83542013-10-13 20:12:43 +03003524The various :func:`exec\* <execl>` functions take a list of arguments for the new
Georg Brandl116aa622007-08-15 14:28:22 +00003525program loaded into the process. In each case, the first of these arguments is
3526passed to the new program as its own name rather than as an argument a user may
3527have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00003528passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00003529['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
3530to be ignored.
3531
3532
3533.. function:: abort()
3534
3535 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
3536 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02003537 an exit code of ``3``. Be aware that calling this function will not call the
3538 Python signal handler registered for :const:`SIGABRT` with
3539 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003540
Georg Brandl116aa622007-08-15 14:28:22 +00003541
Steve Dower2438cdf2019-03-29 16:37:16 -07003542.. function:: add_dll_directory(path)
3543
3544 Add a path to the DLL search path.
3545
3546 This search path is used when resolving dependencies for imported
3547 extension modules (the module itself is resolved through sys.path),
3548 and also by :mod:`ctypes`.
3549
3550 Remove the directory by calling **close()** on the returned object
3551 or using it in a :keyword:`with` statement.
3552
3553 See the `Microsoft documentation
3554 <https://msdn.microsoft.com/44228cf2-6306-466c-8f16-f513cd3ba8b5>`_
3555 for more information about how DLLs are loaded.
3556
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003557 .. audit-event:: os.add_dll_directory path os.add_dll_directory
3558
Steve Dower2438cdf2019-03-29 16:37:16 -07003559 .. availability:: Windows.
3560
3561 .. versionadded:: 3.8
3562 Previous versions of CPython would resolve DLLs using the default
3563 behavior for the current process. This led to inconsistencies,
3564 such as only sometimes searching :envvar:`PATH` or the current
3565 working directory, and OS functions such as ``AddDllDirectory``
3566 having no effect.
3567
3568 In 3.8, the two primary ways DLLs are loaded now explicitly
3569 override the process-wide behavior to ensure consistency. See the
3570 :ref:`porting notes <bpo-36085-whatsnew>` for information on
3571 updating libraries.
3572
3573
Georg Brandl116aa622007-08-15 14:28:22 +00003574.. function:: execl(path, arg0, arg1, ...)
3575 execle(path, arg0, arg1, ..., env)
3576 execlp(file, arg0, arg1, ...)
3577 execlpe(file, arg0, arg1, ..., env)
3578 execv(path, args)
3579 execve(path, args, env)
3580 execvp(file, args)
3581 execvpe(file, args, env)
3582
3583 These functions all execute a new program, replacing the current process; they
3584 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00003585 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00003586 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00003587
3588 The current process is replaced immediately. Open file objects and
3589 descriptors are not flushed, so if there may be data buffered
3590 on these open files, you should flush them using
3591 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
Serhiy Storchakadab83542013-10-13 20:12:43 +03003592 :func:`exec\* <execl>` function.
Georg Brandl116aa622007-08-15 14:28:22 +00003593
Serhiy Storchakadab83542013-10-13 20:12:43 +03003594 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00003595 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00003596 to work with if the number of parameters is fixed when the code is written; the
3597 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00003598 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00003599 variable, with the arguments being passed in a list or tuple as the *args*
3600 parameter. In either case, the arguments to the child process should start with
3601 the name of the command being run, but this is not enforced.
3602
Christian Heimesfaf2f632008-01-06 16:59:19 +00003603 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00003604 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
3605 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03003606 environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00003607 discussed in the next paragraph), the new environment is used as the source of
3608 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
3609 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
3610 locate the executable; *path* must contain an appropriate absolute or relative
3611 path.
3612
3613 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00003614 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00003615 used to define the environment variables for the new process (these are used
3616 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00003617 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00003618 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00003619
Larry Hastings9cf065c2012-06-22 16:30:09 -07003620 For :func:`execve` on some platforms, *path* may also be specified as an open
3621 file descriptor. This functionality may not be supported on your platform;
3622 you can check whether or not it is available using :data:`os.supports_fd`.
3623 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
3624
Saiyang Gou95f60012020-02-04 16:15:00 -08003625 .. audit-event:: os.exec path,args,env os.execl
3626
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003627 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003628
Larry Hastings9cf065c2012-06-22 16:30:09 -07003629 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04003630 Added support for specifying *path* as an open file descriptor
Larry Hastings9cf065c2012-06-22 16:30:09 -07003631 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00003632
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003633 .. versionchanged:: 3.6
3634 Accepts a :term:`path-like object`.
3635
Georg Brandl116aa622007-08-15 14:28:22 +00003636.. function:: _exit(n)
3637
Georg Brandl6f4e68d2010-10-17 10:51:45 +00003638 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00003639 stdio buffers, etc.
3640
Georg Brandl116aa622007-08-15 14:28:22 +00003641 .. note::
3642
Georg Brandl6f4e68d2010-10-17 10:51:45 +00003643 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
3644 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00003645
Christian Heimesfaf2f632008-01-06 16:59:19 +00003646The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00003647although they are not required. These are typically used for system programs
3648written in Python, such as a mail server's external command delivery program.
3649
3650.. note::
3651
3652 Some of these may not be available on all Unix platforms, since there is some
3653 variation. These constants are defined where they are defined by the underlying
3654 platform.
3655
3656
3657.. data:: EX_OK
3658
Benjamin Petersonf650e462010-05-06 23:03:05 +00003659 Exit code that means no error occurred.
3660
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003661 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003662
Georg Brandl116aa622007-08-15 14:28:22 +00003663
3664.. data:: EX_USAGE
3665
3666 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00003667 number of arguments are given.
3668
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003669 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003670
Georg Brandl116aa622007-08-15 14:28:22 +00003671
3672.. data:: EX_DATAERR
3673
Benjamin Petersonf650e462010-05-06 23:03:05 +00003674 Exit code that means the input data was incorrect.
3675
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003676 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003677
Georg Brandl116aa622007-08-15 14:28:22 +00003678
3679.. data:: EX_NOINPUT
3680
3681 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003682
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003683 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003684
Georg Brandl116aa622007-08-15 14:28:22 +00003685
3686.. data:: EX_NOUSER
3687
Benjamin Petersonf650e462010-05-06 23:03:05 +00003688 Exit code that means a specified user did not exist.
3689
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003690 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003691
Georg Brandl116aa622007-08-15 14:28:22 +00003692
3693.. data:: EX_NOHOST
3694
Benjamin Petersonf650e462010-05-06 23:03:05 +00003695 Exit code that means a specified host did not exist.
3696
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003697 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003698
Georg Brandl116aa622007-08-15 14:28:22 +00003699
3700.. data:: EX_UNAVAILABLE
3701
Benjamin Petersonf650e462010-05-06 23:03:05 +00003702 Exit code that means that a required service is unavailable.
3703
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003704 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003705
Georg Brandl116aa622007-08-15 14:28:22 +00003706
3707.. data:: EX_SOFTWARE
3708
Benjamin Petersonf650e462010-05-06 23:03:05 +00003709 Exit code that means an internal software error was detected.
3710
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003711 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003712
Georg Brandl116aa622007-08-15 14:28:22 +00003713
3714.. data:: EX_OSERR
3715
3716 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003717 inability to fork or create a pipe.
3718
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003719 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003720
Georg Brandl116aa622007-08-15 14:28:22 +00003721
3722.. data:: EX_OSFILE
3723
3724 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00003725 some other kind of error.
3726
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003727 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003728
Georg Brandl116aa622007-08-15 14:28:22 +00003729
3730.. data:: EX_CANTCREAT
3731
3732 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003733
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003734 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003735
Georg Brandl116aa622007-08-15 14:28:22 +00003736
3737.. data:: EX_IOERR
3738
3739 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003740
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003741 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003742
Georg Brandl116aa622007-08-15 14:28:22 +00003743
3744.. data:: EX_TEMPFAIL
3745
3746 Exit code that means a temporary failure occurred. This indicates something
3747 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00003748 made during a retryable operation.
3749
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003750 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003751
Georg Brandl116aa622007-08-15 14:28:22 +00003752
3753.. data:: EX_PROTOCOL
3754
3755 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00003756 understood.
3757
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003758 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003759
Georg Brandl116aa622007-08-15 14:28:22 +00003760
3761.. data:: EX_NOPERM
3762
3763 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003764 operation (but not intended for file system problems).
3765
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003766 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003767
Georg Brandl116aa622007-08-15 14:28:22 +00003768
3769.. data:: EX_CONFIG
3770
3771 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003772
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003773 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003774
Georg Brandl116aa622007-08-15 14:28:22 +00003775
3776.. data:: EX_NOTFOUND
3777
Benjamin Petersonf650e462010-05-06 23:03:05 +00003778 Exit code that means something like "an entry was not found".
3779
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003780 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003781
Georg Brandl116aa622007-08-15 14:28:22 +00003782
3783.. function:: fork()
3784
Christian Heimesfaf2f632008-01-06 16:59:19 +00003785 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003786 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00003787
Larry Hastings3732ed22014-03-15 21:13:56 -07003788 Note that some platforms including FreeBSD <= 6.3 and Cygwin have
Phil Connellb2203002019-11-15 16:56:03 +00003789 known issues when using ``fork()`` from a thread.
3790
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003791 .. audit-event:: os.fork "" os.fork
3792
Phil Connellb2203002019-11-15 16:56:03 +00003793 .. versionchanged:: 3.8
3794 Calling ``fork()`` in a subinterpreter is no longer supported
3795 (:exc:`RuntimeError` is raised).
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00003796
Christian Heimes3046fe42013-10-29 21:08:56 +01003797 .. warning::
3798
3799 See :mod:`ssl` for applications that use the SSL module with fork().
3800
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003801 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003802
3803
3804.. function:: forkpty()
3805
3806 Fork a child process, using a new pseudo-terminal as the child's controlling
3807 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
3808 new child's process id in the parent, and *fd* is the file descriptor of the
3809 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003810 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003811
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003812 .. audit-event:: os.forkpty "" os.forkpty
3813
Phil Connellb2203002019-11-15 16:56:03 +00003814 .. versionchanged:: 3.8
3815 Calling ``forkpty()`` in a subinterpreter is no longer supported
3816 (:exc:`RuntimeError` is raised).
3817
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003818 .. availability:: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003819
3820
3821.. function:: kill(pid, sig)
3822
3823 .. index::
3824 single: process; killing
3825 single: process; signalling
3826
3827 Send signal *sig* to the process *pid*. Constants for the specific signals
3828 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00003829
3830 Windows: The :data:`signal.CTRL_C_EVENT` and
3831 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
3832 only be sent to console processes which share a common console window,
3833 e.g., some subprocesses. Any other value for *sig* will cause the process
3834 to be unconditionally killed by the TerminateProcess API, and the exit code
3835 will be set to *sig*. The Windows version of :func:`kill` additionally takes
3836 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00003837
Victor Stinnerb3e72192011-05-08 01:46:11 +02003838 See also :func:`signal.pthread_kill`.
3839
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003840 .. audit-event:: os.kill pid,sig os.kill
3841
Georg Brandl67b21b72010-08-17 15:07:14 +00003842 .. versionadded:: 3.2
3843 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00003844
Georg Brandl116aa622007-08-15 14:28:22 +00003845
3846.. function:: killpg(pgid, sig)
3847
3848 .. index::
3849 single: process; killing
3850 single: process; signalling
3851
Benjamin Petersonf650e462010-05-06 23:03:05 +00003852 Send the signal *sig* to the process group *pgid*.
3853
Saiyang Gou7514f4f2020-02-12 23:47:42 -08003854 .. audit-event:: os.killpg pgid,sig os.killpg
3855
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003856 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003857
Georg Brandl116aa622007-08-15 14:28:22 +00003858
3859.. function:: nice(increment)
3860
3861 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003862
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003863 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003864
3865
Benjamin Peterson6c4c45e2019-11-05 19:21:29 -08003866.. function:: pidfd_open(pid, flags=0)
3867
3868 Return a file descriptor referring to the process *pid*. This descriptor can
3869 be used to perform process management without races and signals. The *flags*
3870 argument is provided for future extensions; no flag values are currently
3871 defined.
3872
3873 See the :manpage:`pidfd_open(2)` man page for more details.
3874
3875 .. availability:: Linux 5.3+
3876 .. versionadded:: 3.9
3877
3878
Georg Brandl116aa622007-08-15 14:28:22 +00003879.. function:: plock(op)
3880
3881 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00003882 ``<sys/lock.h>``) determines which segments are locked.
3883
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003884 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003885
3886
Martin Panterbf19d162015-09-09 01:01:13 +00003887.. function:: popen(cmd, mode='r', buffering=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00003888
Martin Panterbf19d162015-09-09 01:01:13 +00003889 Open a pipe to or from command *cmd*.
3890 The return value is an open file object
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003891 connected to the pipe, which can be read or written depending on whether *mode*
3892 is ``'r'`` (default) or ``'w'``. The *buffering* argument has the same meaning as
3893 the corresponding argument to the built-in :func:`open` function. The
3894 returned file object reads or writes text strings rather than bytes.
3895
3896 The ``close`` method returns :const:`None` if the subprocess exited
3897 successfully, or the subprocess's return code if there was an
3898 error. On POSIX systems, if the return code is positive it
3899 represents the return value of the process left-shifted by one
3900 byte. If the return code is negative, the process was terminated
3901 by the signal given by the negated value of the return code. (For
3902 example, the return value might be ``- signal.SIGKILL`` if the
3903 subprocess was killed.) On Windows systems, the return value
3904 contains the signed integer return code from the child process.
3905
Victor Stinner65a796e2020-04-01 18:49:29 +02003906 On Unix, :func:`waitstatus_to_exitcode` can be used to convert the ``close``
3907 method result (exit status) into an exit code if it is not ``None``. On
3908 Windows, the ``close`` method result is directly the exit code
3909 (or ``None``).
3910
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003911 This is implemented using :class:`subprocess.Popen`; see that class's
3912 documentation for more powerful ways to manage and communicate with
3913 subprocesses.
Georg Brandl116aa622007-08-15 14:28:22 +00003914
3915
Serhiy Storchakad700f972018-09-08 14:48:18 +03003916.. function:: posix_spawn(path, argv, env, *, file_actions=None, \
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003917 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \
Pablo Galindo254a4662018-09-07 16:44:24 +01003918 setsigdef=(), scheduler=None)
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003919
Serhiy Storchakaef347532018-05-01 16:45:04 +03003920 Wraps the :c:func:`posix_spawn` C library API for use from Python.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003921
Serhiy Storchakaef347532018-05-01 16:45:04 +03003922 Most users should use :func:`subprocess.run` instead of :func:`posix_spawn`.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003923
Serhiy Storchakad700f972018-09-08 14:48:18 +03003924 The positional-only arguments *path*, *args*, and *env* are similar to
3925 :func:`execve`.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003926
Tomer Cohen5b57fa62020-10-20 12:08:58 +03003927 The *path* parameter is the path to the executable file. The *path* should
3928 contain a directory. Use :func:`posix_spawnp` to pass an executable file
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003929 without directory.
3930
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003931 The *file_actions* argument may be a sequence of tuples describing actions
3932 to take on specific file descriptors in the child process between the C
Serhiy Storchakaef347532018-05-01 16:45:04 +03003933 library implementation's :c:func:`fork` and :c:func:`exec` steps.
3934 The first item in each tuple must be one of the three type indicator
3935 listed below describing the remaining tuple elements:
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003936
Serhiy Storchakaef347532018-05-01 16:45:04 +03003937 .. data:: POSIX_SPAWN_OPEN
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003938
Serhiy Storchakaef347532018-05-01 16:45:04 +03003939 (``os.POSIX_SPAWN_OPEN``, *fd*, *path*, *flags*, *mode*)
3940
3941 Performs ``os.dup2(os.open(path, flags, mode), fd)``.
3942
3943 .. data:: POSIX_SPAWN_CLOSE
3944
3945 (``os.POSIX_SPAWN_CLOSE``, *fd*)
3946
3947 Performs ``os.close(fd)``.
3948
3949 .. data:: POSIX_SPAWN_DUP2
3950
3951 (``os.POSIX_SPAWN_DUP2``, *fd*, *new_fd*)
3952
3953 Performs ``os.dup2(fd, new_fd)``.
3954
3955 These tuples correspond to the C library
3956 :c:func:`posix_spawn_file_actions_addopen`,
3957 :c:func:`posix_spawn_file_actions_addclose`, and
3958 :c:func:`posix_spawn_file_actions_adddup2` API calls used to prepare
3959 for the :c:func:`posix_spawn` call itself.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003960
Pablo Galindo254a4662018-09-07 16:44:24 +01003961 The *setpgroup* argument will set the process group of the child to the value
3962 specified. If the value specified is 0, the child's process group ID will be
3963 made the same as its process ID. If the value of *setpgroup* is not set, the
3964 child will inherit the parent's process group ID. This argument corresponds
3965 to the C library :c:data:`POSIX_SPAWN_SETPGROUP` flag.
3966
3967 If the *resetids* argument is ``True`` it will reset the effective UID and
3968 GID of the child to the real UID and GID of the parent process. If the
3969 argument is ``False``, then the child retains the effective UID and GID of
3970 the parent. In either case, if the set-user-ID and set-group-ID permission
3971 bits are enabled on the executable file, their effect will override the
3972 setting of the effective UID and GID. This argument corresponds to the C
3973 library :c:data:`POSIX_SPAWN_RESETIDS` flag.
3974
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003975 If the *setsid* argument is ``True``, it will create a new session ID
3976 for `posix_spawn`. *setsid* requires :c:data:`POSIX_SPAWN_SETSID`
3977 or :c:data:`POSIX_SPAWN_SETSID_NP` flag. Otherwise, :exc:`NotImplementedError`
3978 is raised.
3979
Pablo Galindo254a4662018-09-07 16:44:24 +01003980 The *setsigmask* argument will set the signal mask to the signal set
3981 specified. If the parameter is not used, then the child inherits the
3982 parent's signal mask. This argument corresponds to the C library
3983 :c:data:`POSIX_SPAWN_SETSIGMASK` flag.
3984
3985 The *sigdef* argument will reset the disposition of all signals in the set
3986 specified. This argument corresponds to the C library
3987 :c:data:`POSIX_SPAWN_SETSIGDEF` flag.
3988
3989 The *scheduler* argument must be a tuple containing the (optional) scheduler
3990 policy and an instance of :class:`sched_param` with the scheduler parameters.
3991 A value of ``None`` in the place of the scheduler policy indicates that is
3992 not being provided. This argument is a combination of the C library
3993 :c:data:`POSIX_SPAWN_SETSCHEDPARAM` and :c:data:`POSIX_SPAWN_SETSCHEDULER`
3994 flags.
3995
Saiyang Gou95f60012020-02-04 16:15:00 -08003996 .. audit-event:: os.posix_spawn path,argv,env os.posix_spawn
3997
Mark Williams8b504002019-03-03 09:42:25 -08003998 .. versionadded:: 3.8
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003999
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03004000 .. availability:: Unix.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07004001
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004002.. function:: posix_spawnp(path, argv, env, *, file_actions=None, \
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03004003 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004004 setsigdef=(), scheduler=None)
4005
4006 Wraps the :c:func:`posix_spawnp` C library API for use from Python.
4007
4008 Similar to :func:`posix_spawn` except that the system searches
4009 for the *executable* file in the list of directories specified by the
4010 :envvar:`PATH` environment variable (in the same way as for ``execvp(3)``).
4011
Saiyang Gou95f60012020-02-04 16:15:00 -08004012 .. audit-event:: os.posix_spawn path,argv,env os.posix_spawnp
4013
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004014 .. versionadded:: 3.8
4015
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03004016 .. availability:: See :func:`posix_spawn` documentation.
4017
Joannah Nanjekye92b83222019-01-16 16:29:26 +03004018
Gregory P. Smith163468a2017-05-29 10:03:41 -07004019.. function:: register_at_fork(*, before=None, after_in_parent=None, \
4020 after_in_child=None)
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004021
Gregory P. Smith163468a2017-05-29 10:03:41 -07004022 Register callables to be executed when a new child process is forked
4023 using :func:`os.fork` or similar process cloning APIs.
4024 The parameters are optional and keyword-only.
4025 Each specifies a different call point.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004026
Gregory P. Smith163468a2017-05-29 10:03:41 -07004027 * *before* is a function called before forking a child process.
4028 * *after_in_parent* is a function called from the parent process
4029 after forking a child process.
4030 * *after_in_child* is a function called from the child process.
4031
4032 These calls are only made if control is expected to return to the
4033 Python interpreter. A typical :mod:`subprocess` launch will not
4034 trigger them as the child is not going to re-enter the interpreter.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004035
4036 Functions registered for execution before forking are called in
4037 reverse registration order. Functions registered for execution
4038 after forking (either in the parent or in the child) are called
4039 in registration order.
4040
4041 Note that :c:func:`fork` calls made by third-party C code may not
4042 call those functions, unless it explicitly calls :c:func:`PyOS_BeforeFork`,
4043 :c:func:`PyOS_AfterFork_Parent` and :c:func:`PyOS_AfterFork_Child`.
4044
Gregory P. Smith163468a2017-05-29 10:03:41 -07004045 There is no way to unregister a function.
4046
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004047 .. availability:: Unix.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02004048
4049 .. versionadded:: 3.7
4050
4051
Georg Brandl116aa622007-08-15 14:28:22 +00004052.. function:: spawnl(mode, path, ...)
4053 spawnle(mode, path, ..., env)
4054 spawnlp(mode, file, ...)
4055 spawnlpe(mode, file, ..., env)
4056 spawnv(mode, path, args)
4057 spawnve(mode, path, args, env)
4058 spawnvp(mode, file, args)
4059 spawnvpe(mode, file, args, env)
4060
4061 Execute the program *path* in a new process.
4062
4063 (Note that the :mod:`subprocess` module provides more powerful facilities for
4064 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00004065 preferable to using these functions. Check especially the
4066 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00004067
Christian Heimesfaf2f632008-01-06 16:59:19 +00004068 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00004069 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
4070 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00004071 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00004072 be used with the :func:`waitpid` function.
4073
pxinwrf2d7ac72019-05-21 18:46:37 +08004074 Note on VxWorks, this function doesn't return ``-signal`` when the new process is
4075 killed. Instead it raises OSError exception.
4076
Serhiy Storchakadab83542013-10-13 20:12:43 +03004077 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00004078 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00004079 to work with if the number of parameters is fixed when the code is written; the
4080 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00004081 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00004082 parameters is variable, with the arguments being passed in a list or tuple as
4083 the *args* parameter. In either case, the arguments to the child process must
4084 start with the name of the command being run.
4085
Christian Heimesfaf2f632008-01-06 16:59:19 +00004086 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00004087 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
4088 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03004089 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00004090 discussed in the next paragraph), the new environment is used as the source of
4091 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
4092 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
4093 :envvar:`PATH` variable to locate the executable; *path* must contain an
4094 appropriate absolute or relative path.
4095
4096 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00004097 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00004098 which is used to define the environment variables for the new process (they are
4099 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00004100 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00004101 the new process to inherit the environment of the current process. Note that
4102 keys and values in the *env* dictionary must be strings; invalid keys or
4103 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00004104
4105 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
4106 equivalent::
4107
4108 import os
4109 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
4110
4111 L = ['cp', 'index.html', '/dev/null']
4112 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
4113
Saiyang Gou95f60012020-02-04 16:15:00 -08004114 .. audit-event:: os.spawn mode,path,args,env os.spawnl
4115
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004116 .. availability:: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
4117 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
4118 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
4119 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00004120
Brett Cannon6fa7aad2016-09-06 15:55:02 -07004121 .. versionchanged:: 3.6
4122 Accepts a :term:`path-like object`.
4123
Georg Brandl116aa622007-08-15 14:28:22 +00004124
4125.. data:: P_NOWAIT
4126 P_NOWAITO
4127
Serhiy Storchakadab83542013-10-13 20:12:43 +03004128 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00004129 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00004130 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00004131 the return value.
4132
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004133 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004134
Georg Brandl116aa622007-08-15 14:28:22 +00004135
4136.. data:: P_WAIT
4137
Serhiy Storchakadab83542013-10-13 20:12:43 +03004138 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00004139 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
4140 return until the new process has run to completion and will return the exit code
4141 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00004142 process.
4143
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004144 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004145
Georg Brandl116aa622007-08-15 14:28:22 +00004146
4147.. data:: P_DETACH
4148 P_OVERLAY
4149
Serhiy Storchakadab83542013-10-13 20:12:43 +03004150 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00004151 functions. These are less portable than those listed above. :const:`P_DETACH`
4152 is similar to :const:`P_NOWAIT`, but the new process is detached from the
4153 console of the calling process. If :const:`P_OVERLAY` is used, the current
Serhiy Storchakadab83542013-10-13 20:12:43 +03004154 process will be replaced; the :func:`spawn\* <spawnl>` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004155
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004156 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004157
Georg Brandl116aa622007-08-15 14:28:22 +00004158
Steve Dower019e9e82021-04-23 18:03:17 +01004159.. function:: startfile(path, [operation], [arguments], [cwd], [show_cmd])
Georg Brandl116aa622007-08-15 14:28:22 +00004160
4161 Start a file with its associated application.
4162
4163 When *operation* is not specified or ``'open'``, this acts like double-clicking
4164 the file in Windows Explorer, or giving the file name as an argument to the
4165 :program:`start` command from the interactive command shell: the file is opened
4166 with whatever application (if any) its extension is associated.
4167
4168 When another *operation* is given, it must be a "command verb" that specifies
4169 what should be done with the file. Common verbs documented by Microsoft are
4170 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
4171 ``'find'`` (to be used on directories).
4172
Steve Dower019e9e82021-04-23 18:03:17 +01004173 When launching an application, specify *arguments* to be passed as a single
4174 string. This argument may have no effect when using this function to launch a
4175 document.
4176
4177 The default working directory is inherited, but may be overridden by the *cwd*
4178 argument. This should be an absolute path. A relative *path* will be resolved
4179 against this argument.
4180
4181 Use *show_cmd* to override the default window style. Whether this has any
4182 effect will depend on the application being launched. Values are integers as
4183 supported by the Win32 :c:func:`ShellExecute` function.
4184
Georg Brandl116aa622007-08-15 14:28:22 +00004185 :func:`startfile` returns as soon as the associated application is launched.
4186 There is no option to wait for the application to close, and no way to retrieve
4187 the application's exit status. The *path* parameter is relative to the current
Steve Dower019e9e82021-04-23 18:03:17 +01004188 directory or *cwd*. If you want to use an absolute path, make sure the first
4189 character is not a slash (``'/'``) Use :mod:`pathlib` or the
4190 :func:`os.path.normpath` function to ensure that paths are properly encoded for
4191 Win32.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004192
Steve Dower7d0e0c92015-01-24 08:18:24 -08004193 To reduce interpreter startup overhead, the Win32 :c:func:`ShellExecute`
4194 function is not resolved until this function is first called. If the function
4195 cannot be resolved, :exc:`NotImplementedError` will be raised.
4196
Saiyang Gou95f60012020-02-04 16:15:00 -08004197 .. audit-event:: os.startfile path,operation os.startfile
4198
Steve Dower019e9e82021-04-23 18:03:17 +01004199 .. audit-event:: os.startfile/2 path,operation,arguments,cwd,show_cmd os.startfile
4200
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004201 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004202
Steve Dower019e9e82021-04-23 18:03:17 +01004203 .. versionchanged:: 3.10
4204 Added the *arguments*, *cwd* and *show_cmd* arguments, and the
4205 ``os.startfile/2`` audit event.
4206
Georg Brandl116aa622007-08-15 14:28:22 +00004207
4208.. function:: system(command)
4209
4210 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00004211 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00004212 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
4213 the executed command. If *command* generates any output, it will be sent to
4214 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00004215
4216 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00004217 format specified for :func:`wait`. Note that POSIX does not specify the
4218 meaning of the return value of the C :c:func:`system` function, so the return
4219 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00004220
Georg Brandl8f7b4272010-10-14 06:35:53 +00004221 On Windows, the return value is that returned by the system shell after
4222 running *command*. The shell is given by the Windows environment variable
4223 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
4224 status of the command run; on systems using a non-native shell, consult your
4225 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00004226
Georg Brandl8f7b4272010-10-14 06:35:53 +00004227 The :mod:`subprocess` module provides more powerful facilities for spawning
4228 new processes and retrieving their results; using that module is preferable
4229 to using this function. See the :ref:`subprocess-replacements` section in
4230 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00004231
Victor Stinner65a796e2020-04-01 18:49:29 +02004232 On Unix, :func:`waitstatus_to_exitcode` can be used to convert the result
4233 (exit status) into an exit code. On Windows, the result is directly the exit
4234 code.
4235
Steve Dower44f91c32019-06-27 10:47:59 -07004236 .. audit-event:: os.system command os.system
Steve Dowerb82e17e2019-05-23 08:45:22 -07004237
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004238 .. availability:: Unix, Windows.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004239
Georg Brandl116aa622007-08-15 14:28:22 +00004240
4241.. function:: times()
4242
Larry Hastings605a62d2012-06-24 04:33:36 -07004243 Returns the current global process times.
4244 The return value is an object with five attributes:
4245
4246 * :attr:`user` - user time
4247 * :attr:`system` - system time
4248 * :attr:`children_user` - user time of all child processes
4249 * :attr:`children_system` - system time of all child processes
4250 * :attr:`elapsed` - elapsed real time since a fixed point in the past
4251
4252 For backwards compatibility, this object also behaves like a five-tuple
4253 containing :attr:`user`, :attr:`system`, :attr:`children_user`,
4254 :attr:`children_system`, and :attr:`elapsed` in that order.
4255
4256 See the Unix manual page
Joannah Nanjekye3ccdbc32019-09-07 04:05:29 -03004257 :manpage:`times(2)` and :manpage:`times(3)` manual page on Unix or `the GetProcessTimes MSDN
Roger Hurwitz37c55b22020-02-10 14:50:19 -08004258 <https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes>`_
4259 on Windows. On Windows, only :attr:`user` and :attr:`system` are known; the other attributes are zero.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004260
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004261 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00004262
Larry Hastings605a62d2012-06-24 04:33:36 -07004263 .. versionchanged:: 3.3
4264 Return type changed from a tuple to a tuple-like object
4265 with named attributes.
4266
Georg Brandl116aa622007-08-15 14:28:22 +00004267
4268.. function:: wait()
4269
4270 Wait for completion of a child process, and return a tuple containing its pid
4271 and exit status indication: a 16-bit number, whose low byte is the signal number
4272 that killed the process, and whose high byte is the exit status (if the signal
4273 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00004274 produced.
4275
Victor Stinner65a796e2020-04-01 18:49:29 +02004276 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4277 exit code.
4278
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004279 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004280
Victor Stinner65a796e2020-04-01 18:49:29 +02004281 .. seealso::
4282
4283 :func:`waitpid` can be used to wait for the completion of a specific
4284 child process and has more options.
4285
Ross Lagerwall7807c352011-03-17 20:20:30 +02004286.. function:: waitid(idtype, id, options)
4287
4288 Wait for the completion of one or more child processes.
Benjamin Peterson5c0c3252019-11-05 21:58:31 -08004289 *idtype* can be :data:`P_PID`, :data:`P_PGID`, :data:`P_ALL`, or
4290 :data:`P_PIDFD` on Linux.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004291 *id* specifies the pid to wait on.
4292 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
4293 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
4294 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
4295 representing the data contained in the :c:type:`siginfo_t` structure, namely:
4296 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
4297 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
4298 children in a waitable state.
4299
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004300 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004301
4302 .. versionadded:: 3.3
4303
4304.. data:: P_PID
4305 P_PGID
4306 P_ALL
4307
4308 These are the possible values for *idtype* in :func:`waitid`. They affect
4309 how *id* is interpreted.
4310
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004311 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004312
4313 .. versionadded:: 3.3
4314
Benjamin Peterson5c0c3252019-11-05 21:58:31 -08004315.. data:: P_PIDFD
4316
4317 This is a Linux-specific *idtype* that indicates that *id* is a file
4318 descriptor that refers to a process.
4319
4320 .. availability:: Linux 5.4+
4321
4322 .. versionadded:: 3.9
4323
Ross Lagerwall7807c352011-03-17 20:20:30 +02004324.. data:: WEXITED
4325 WSTOPPED
4326 WNOWAIT
4327
4328 Flags that can be used in *options* in :func:`waitid` that specify what
4329 child signal to wait for.
4330
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004331 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004332
4333 .. versionadded:: 3.3
4334
4335
4336.. data:: CLD_EXITED
Dong-hee Na2eba6ad2019-10-21 16:01:05 +09004337 CLD_KILLED
Ross Lagerwall7807c352011-03-17 20:20:30 +02004338 CLD_DUMPED
4339 CLD_TRAPPED
Dong-hee Na2eba6ad2019-10-21 16:01:05 +09004340 CLD_STOPPED
Ross Lagerwall7807c352011-03-17 20:20:30 +02004341 CLD_CONTINUED
4342
4343 These are the possible values for :attr:`si_code` in the result returned by
4344 :func:`waitid`.
4345
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004346 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004347
4348 .. versionadded:: 3.3
4349
Dong-hee Na2eba6ad2019-10-21 16:01:05 +09004350 .. versionchanged:: 3.9
4351 Added :data:`CLD_KILLED` and :data:`CLD_STOPPED` values.
4352
Georg Brandl116aa622007-08-15 14:28:22 +00004353
4354.. function:: waitpid(pid, options)
4355
4356 The details of this function differ on Unix and Windows.
4357
4358 On Unix: Wait for completion of a child process given by process id *pid*, and
4359 return a tuple containing its process id and exit status indication (encoded as
4360 for :func:`wait`). The semantics of the call are affected by the value of the
4361 integer *options*, which should be ``0`` for normal operation.
4362
4363 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
4364 that specific process. If *pid* is ``0``, the request is for the status of any
4365 child in the process group of the current process. If *pid* is ``-1``, the
4366 request pertains to any child of the current process. If *pid* is less than
4367 ``-1``, status is requested for any process in the process group ``-pid`` (the
4368 absolute value of *pid*).
4369
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00004370 An :exc:`OSError` is raised with the value of errno when the syscall
4371 returns -1.
4372
Georg Brandl116aa622007-08-15 14:28:22 +00004373 On Windows: Wait for completion of a process given by process handle *pid*, and
4374 return a tuple containing *pid*, and its exit status shifted left by 8 bits
4375 (shifting makes cross-platform use of the function easier). A *pid* less than or
4376 equal to ``0`` has no special meaning on Windows, and raises an exception. The
4377 value of integer *options* has no effect. *pid* can refer to any process whose
Serhiy Storchakadab83542013-10-13 20:12:43 +03004378 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
4379 functions called with :const:`P_NOWAIT` return suitable process handles.
Georg Brandl116aa622007-08-15 14:28:22 +00004380
Victor Stinner65a796e2020-04-01 18:49:29 +02004381 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4382 exit code.
4383
Victor Stinnera766ddf2015-03-26 23:50:57 +01004384 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02004385 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01004386 exception, the function now retries the system call instead of raising an
4387 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
4388
Georg Brandl116aa622007-08-15 14:28:22 +00004389
Ezio Melottiba4d8ed2012-11-23 19:45:52 +02004390.. function:: wait3(options)
Georg Brandl116aa622007-08-15 14:28:22 +00004391
4392 Similar to :func:`waitpid`, except no process id argument is given and a
Serhiy Storchaka3f819ca2018-10-31 02:26:06 +02004393 3-element tuple containing the child's process id, exit status indication,
4394 and resource usage information is returned. Refer to
4395 :mod:`resource`.\ :func:`~resource.getrusage` for details on resource usage
4396 information. The option argument is the same as that provided to
4397 :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004398
Victor Stinner65a796e2020-04-01 18:49:29 +02004399 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4400 exitcode.
4401
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004402 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004403
Georg Brandl116aa622007-08-15 14:28:22 +00004404
Victor Stinner4195b5c2012-02-08 23:03:19 +01004405.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00004406
4407 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
4408 process id, exit status indication, and resource usage information is returned.
Serhiy Storchakadab83542013-10-13 20:12:43 +03004409 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
4410 resource usage information. The arguments to :func:`wait4` are the same
4411 as those provided to :func:`waitpid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004412
Victor Stinner65a796e2020-04-01 18:49:29 +02004413 :func:`waitstatus_to_exitcode` can be used to convert the exit status into an
4414 exitcode.
4415
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004416 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004417
Georg Brandl116aa622007-08-15 14:28:22 +00004418
Victor Stinner65a796e2020-04-01 18:49:29 +02004419.. function:: waitstatus_to_exitcode(status)
4420
4421 Convert a wait status to an exit code.
4422
4423 On Unix:
4424
4425 * If the process exited normally (if ``WIFEXITED(status)`` is true),
4426 return the process exit status (return ``WEXITSTATUS(status)``):
4427 result greater than or equal to 0.
4428 * If the process was terminated by a signal (if ``WIFSIGNALED(status)`` is
4429 true), return ``-signum`` where *signum* is the number of the signal that
4430 caused the process to terminate (return ``-WTERMSIG(status)``):
4431 result less than 0.
4432 * Otherwise, raise a :exc:`ValueError`.
4433
4434 On Windows, return *status* shifted right by 8 bits.
4435
4436 On Unix, if the process is being traced or if :func:`waitpid` was called
4437 with :data:`WUNTRACED` option, the caller must first check if
4438 ``WIFSTOPPED(status)`` is true. This function must not be called if
4439 ``WIFSTOPPED(status)`` is true.
4440
4441 .. seealso::
4442
4443 :func:`WIFEXITED`, :func:`WEXITSTATUS`, :func:`WIFSIGNALED`,
4444 :func:`WTERMSIG`, :func:`WIFSTOPPED`, :func:`WSTOPSIG` functions.
4445
4446 .. versionadded:: 3.9
4447
4448
Georg Brandl116aa622007-08-15 14:28:22 +00004449.. data:: WNOHANG
4450
4451 The option for :func:`waitpid` to return immediately if no child process status
4452 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004453
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004454 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004455
4456
4457.. data:: WCONTINUED
4458
4459 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00004460 from a job control stop since their status was last reported.
4461
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004462 .. availability:: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00004463
Georg Brandl116aa622007-08-15 14:28:22 +00004464
4465.. data:: WUNTRACED
4466
4467 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00004468 their current state has not been reported since they were stopped.
4469
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004470 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004471
Georg Brandl116aa622007-08-15 14:28:22 +00004472
4473The following functions take a process status code as returned by
4474:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
4475used to determine the disposition of a process.
4476
Georg Brandl116aa622007-08-15 14:28:22 +00004477.. function:: WCOREDUMP(status)
4478
Christian Heimesfaf2f632008-01-06 16:59:19 +00004479 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00004480 return ``False``.
4481
Victor Stinner7c723832020-04-01 15:48:05 +02004482 This function should be employed only if :func:`WIFSIGNALED` is true.
4483
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004484 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004485
Georg Brandl116aa622007-08-15 14:28:22 +00004486
4487.. function:: WIFCONTINUED(status)
4488
Victor Stinner7c723832020-04-01 15:48:05 +02004489 Return ``True`` if a stopped child has been resumed by delivery of
4490 :data:`~signal.SIGCONT` (if the process has been continued from a job
4491 control stop), otherwise return ``False``.
4492
4493 See :data:`WCONTINUED` option.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004494
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004495 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004496
Georg Brandl116aa622007-08-15 14:28:22 +00004497
4498.. function:: WIFSTOPPED(status)
4499
Victor Stinner7c723832020-04-01 15:48:05 +02004500 Return ``True`` if the process was stopped by delivery of a signal,
4501 otherwise return ``False``.
4502
4503 :func:`WIFSTOPPED` only returns ``True`` if the :func:`waitpid` call was
4504 done using :data:`WUNTRACED` option or when the process is being traced (see
4505 :manpage:`ptrace(2)`).
Benjamin Petersonf650e462010-05-06 23:03:05 +00004506
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004507 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004508
Georg Brandl116aa622007-08-15 14:28:22 +00004509.. function:: WIFSIGNALED(status)
4510
Victor Stinner7c723832020-04-01 15:48:05 +02004511 Return ``True`` if the process was terminated by a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00004512 ``False``.
4513
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004514 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004515
4516
4517.. function:: WIFEXITED(status)
4518
Victor Stinner7c723832020-04-01 15:48:05 +02004519 Return ``True`` if the process exited terminated normally, that is,
4520 by calling ``exit()`` or ``_exit()``, or by returning from ``main()``;
Benjamin Petersonf650e462010-05-06 23:03:05 +00004521 otherwise return ``False``.
4522
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004523 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004524
4525
4526.. function:: WEXITSTATUS(status)
4527
Victor Stinner7c723832020-04-01 15:48:05 +02004528 Return the process exit status.
4529
4530 This function should be employed only if :func:`WIFEXITED` is true.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004531
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004532 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004533
4534
4535.. function:: WSTOPSIG(status)
4536
Benjamin Petersonf650e462010-05-06 23:03:05 +00004537 Return the signal which caused the process to stop.
4538
Victor Stinner7c723832020-04-01 15:48:05 +02004539 This function should be employed only if :func:`WIFSTOPPED` is true.
4540
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004541 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004542
4543
4544.. function:: WTERMSIG(status)
4545
Victor Stinner7c723832020-04-01 15:48:05 +02004546 Return the number of the signal that caused the process to terminate.
4547
4548 This function should be employed only if :func:`WIFSIGNALED` is true.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004549
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004550 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004551
4552
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004553Interface to the scheduler
4554--------------------------
4555
4556These functions control how a process is allocated CPU time by the operating
4557system. They are only available on some Unix platforms. For more detailed
4558information, consult your Unix manpages.
4559
4560.. versionadded:: 3.3
4561
Andrew Kuchling4921a082013-06-21 11:49:57 -04004562The following scheduling policies are exposed if they are supported by the
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004563operating system.
4564
4565.. data:: SCHED_OTHER
4566
4567 The default scheduling policy.
4568
4569.. data:: SCHED_BATCH
4570
4571 Scheduling policy for CPU-intensive processes that tries to preserve
4572 interactivity on the rest of the computer.
4573
4574.. data:: SCHED_IDLE
4575
4576 Scheduling policy for extremely low priority background tasks.
4577
4578.. data:: SCHED_SPORADIC
4579
4580 Scheduling policy for sporadic server programs.
4581
4582.. data:: SCHED_FIFO
4583
4584 A First In First Out scheduling policy.
4585
4586.. data:: SCHED_RR
4587
4588 A round-robin scheduling policy.
4589
4590.. data:: SCHED_RESET_ON_FORK
4591
Martin Panter8d56c022016-05-29 04:13:35 +00004592 This flag can be OR'ed with any other scheduling policy. When a process with
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004593 this flag set forks, its child's scheduling policy and priority are reset to
4594 the default.
4595
4596
4597.. class:: sched_param(sched_priority)
4598
4599 This class represents tunable scheduling parameters used in
4600 :func:`sched_setparam`, :func:`sched_setscheduler`, and
4601 :func:`sched_getparam`. It is immutable.
4602
4603 At the moment, there is only one possible parameter:
4604
4605 .. attribute:: sched_priority
4606
4607 The scheduling priority for a scheduling policy.
4608
4609
4610.. function:: sched_get_priority_min(policy)
4611
4612 Get the minimum priority value for *policy*. *policy* is one of the
4613 scheduling policy constants above.
4614
4615
4616.. function:: sched_get_priority_max(policy)
4617
4618 Get the maximum priority value for *policy*. *policy* is one of the
4619 scheduling policy constants above.
4620
4621
4622.. function:: sched_setscheduler(pid, policy, param)
4623
4624 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
4625 the calling process. *policy* is one of the scheduling policy constants
4626 above. *param* is a :class:`sched_param` instance.
4627
4628
4629.. function:: sched_getscheduler(pid)
4630
4631 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
4632 means the calling process. The result is one of the scheduling policy
4633 constants above.
4634
4635
4636.. function:: sched_setparam(pid, param)
4637
4638 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
4639 the calling process. *param* is a :class:`sched_param` instance.
4640
4641
4642.. function:: sched_getparam(pid)
4643
4644 Return the scheduling parameters as a :class:`sched_param` instance for the
4645 process with PID *pid*. A *pid* of 0 means the calling process.
4646
4647
4648.. function:: sched_rr_get_interval(pid)
4649
4650 Return the round-robin quantum in seconds for the process with PID *pid*. A
4651 *pid* of 0 means the calling process.
4652
4653
4654.. function:: sched_yield()
4655
4656 Voluntarily relinquish the CPU.
4657
4658
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004659.. function:: sched_setaffinity(pid, mask)
4660
Antoine Pitrou84869872012-08-04 16:16:35 +02004661 Restrict the process with PID *pid* (or the current process if zero) to a
4662 set of CPUs. *mask* is an iterable of integers representing the set of
4663 CPUs to which the process should be restricted.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004664
4665
Antoine Pitrou84869872012-08-04 16:16:35 +02004666.. function:: sched_getaffinity(pid)
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004667
Antoine Pitrou84869872012-08-04 16:16:35 +02004668 Return the set of CPUs the process with PID *pid* (or the current process
4669 if zero) is restricted to.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004670
4671
Georg Brandl116aa622007-08-15 14:28:22 +00004672.. _os-path:
4673
4674Miscellaneous System Information
4675--------------------------------
4676
4677
4678.. function:: confstr(name)
4679
4680 Return string-valued system configuration values. *name* specifies the
4681 configuration value to retrieve; it may be a string which is the name of a
4682 defined system value; these names are specified in a number of standards (POSIX,
4683 Unix 95, Unix 98, and others). Some platforms define additional names as well.
4684 The names known to the host operating system are given as the keys of the
4685 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00004686 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00004687
4688 If the configuration value specified by *name* isn't defined, ``None`` is
4689 returned.
4690
4691 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
4692 specific value for *name* is not supported by the host system, even if it is
4693 included in ``confstr_names``, an :exc:`OSError` is raised with
4694 :const:`errno.EINVAL` for the error number.
4695
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004696 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004697
Georg Brandl116aa622007-08-15 14:28:22 +00004698
4699.. data:: confstr_names
4700
4701 Dictionary mapping names accepted by :func:`confstr` to the integer values
4702 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00004703 determine the set of names known to the system.
4704
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004705 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004706
4707
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004708.. function:: cpu_count()
4709
Serhiy Storchakaecf41da2016-10-19 16:29:26 +03004710 Return the number of CPUs in the system. Returns ``None`` if undetermined.
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004711
Charles-François Natalidc87e4b2015-07-13 21:01:39 +01004712 This number is not equivalent to the number of CPUs the current process can
4713 use. The number of usable CPUs can be obtained with
4714 ``len(os.sched_getaffinity(0))``
4715
4716
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004717 .. versionadded:: 3.4
4718
4719
Georg Brandl116aa622007-08-15 14:28:22 +00004720.. function:: getloadavg()
4721
Christian Heimesa62da1d2008-01-12 19:39:10 +00004722 Return the number of processes in the system run queue averaged over the last
4723 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00004724 unobtainable.
4725
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004726 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004727
Georg Brandl116aa622007-08-15 14:28:22 +00004728
4729.. function:: sysconf(name)
4730
4731 Return integer-valued system configuration values. If the configuration value
4732 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
4733 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
4734 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004735
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004736 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004737
4738
4739.. data:: sysconf_names
4740
4741 Dictionary mapping names accepted by :func:`sysconf` to the integer values
4742 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00004743 determine the set of names known to the system.
4744
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004745 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004746
Christian Heimesfaf2f632008-01-06 16:59:19 +00004747The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00004748are defined for all platforms.
4749
4750Higher-level operations on pathnames are defined in the :mod:`os.path` module.
4751
4752
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004753.. index:: single: . (dot); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004754.. data:: curdir
4755
4756 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00004757 directory. This is ``'.'`` for Windows and POSIX. Also available via
4758 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004759
4760
Serhiy Storchakaddb961d2018-10-26 09:00:49 +03004761.. index:: single: ..; in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004762.. data:: pardir
4763
4764 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00004765 directory. This is ``'..'`` for Windows and POSIX. Also available via
4766 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004767
4768
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004769.. index:: single: / (slash); in pathnames
4770.. index:: single: \ (backslash); in pathnames (Windows)
Georg Brandl116aa622007-08-15 14:28:22 +00004771.. data:: sep
4772
Georg Brandlc575c902008-09-13 17:46:05 +00004773 The character used by the operating system to separate pathname components.
4774 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
4775 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00004776 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
4777 useful. Also available via :mod:`os.path`.
4778
4779
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004780.. index:: single: / (slash); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004781.. data:: altsep
4782
4783 An alternative character used by the operating system to separate pathname
4784 components, or ``None`` if only one separator character exists. This is set to
4785 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
4786 :mod:`os.path`.
4787
4788
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004789.. index:: single: . (dot); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004790.. data:: extsep
4791
4792 The character which separates the base filename from the extension; for example,
4793 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
4794
Georg Brandl116aa622007-08-15 14:28:22 +00004795
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004796.. index:: single: : (colon); path separator (POSIX)
4797 single: ; (semicolon)
Georg Brandl116aa622007-08-15 14:28:22 +00004798.. data:: pathsep
4799
4800 The character conventionally used by the operating system to separate search
4801 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
4802 Windows. Also available via :mod:`os.path`.
4803
4804
4805.. data:: defpath
4806
Serhiy Storchakadab83542013-10-13 20:12:43 +03004807 The default search path used by :func:`exec\*p\* <execl>` and
4808 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
4809 key. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004810
4811
4812.. data:: linesep
4813
4814 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00004815 platform. This may be a single character, such as ``'\n'`` for POSIX, or
4816 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
4817 *os.linesep* as a line terminator when writing files opened in text mode (the
4818 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00004819
4820
4821.. data:: devnull
4822
Georg Brandl850a9902010-05-21 22:04:32 +00004823 The file path of the null device. For example: ``'/dev/null'`` for
4824 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004825
Andrew Kuchling4921a082013-06-21 11:49:57 -04004826.. data:: RTLD_LAZY
4827 RTLD_NOW
4828 RTLD_GLOBAL
4829 RTLD_LOCAL
4830 RTLD_NODELETE
4831 RTLD_NOLOAD
4832 RTLD_DEEPBIND
4833
4834 Flags for use with the :func:`~sys.setdlopenflags` and
4835 :func:`~sys.getdlopenflags` functions. See the Unix manual page
4836 :manpage:`dlopen(3)` for what the different flags mean.
4837
4838 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +00004839
Georg Brandl116aa622007-08-15 14:28:22 +00004840
Victor Stinner9b1f4742016-09-06 16:18:52 -07004841Random numbers
4842--------------
Georg Brandl116aa622007-08-15 14:28:22 +00004843
4844
Victor Stinner9b1f4742016-09-06 16:18:52 -07004845.. function:: getrandom(size, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +00004846
Victor Stinner9b1f4742016-09-06 16:18:52 -07004847 Get up to *size* random bytes. The function can return less bytes than
4848 requested.
4849
4850 These bytes can be used to seed user-space random number generators or for
4851 cryptographic purposes.
4852
4853 ``getrandom()`` relies on entropy gathered from device drivers and other
4854 sources of environmental noise. Unnecessarily reading large quantities of
4855 data will have a negative impact on other users of the ``/dev/random`` and
4856 ``/dev/urandom`` devices.
4857
4858 The flags argument is a bit mask that can contain zero or more of the
4859 following values ORed together: :py:data:`os.GRND_RANDOM` and
4860 :py:data:`GRND_NONBLOCK`.
4861
4862 See also the `Linux getrandom() manual page
4863 <http://man7.org/linux/man-pages/man2/getrandom.2.html>`_.
4864
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004865 .. availability:: Linux 3.17 and newer.
Victor Stinner9b1f4742016-09-06 16:18:52 -07004866
4867 .. versionadded:: 3.6
4868
4869.. function:: urandom(size)
4870
4871 Return a string of *size* random bytes suitable for cryptographic use.
Georg Brandl116aa622007-08-15 14:28:22 +00004872
4873 This function returns random bytes from an OS-specific randomness source. The
4874 returned data should be unpredictable enough for cryptographic applications,
Victor Stinnerdddf4842016-06-07 11:21:42 +02004875 though its exact quality depends on the OS implementation.
4876
Victor Stinnere66987e2016-09-06 16:33:52 -07004877 On Linux, if the ``getrandom()`` syscall is available, it is used in
4878 blocking mode: block until the system urandom entropy pool is initialized
4879 (128 bits of entropy are collected by the kernel). See the :pep:`524` for
4880 the rationale. On Linux, the :func:`getrandom` function can be used to get
4881 random bytes in non-blocking mode (using the :data:`GRND_NONBLOCK` flag) or
4882 to poll until the system urandom entropy pool is initialized.
Andrew Svetlov03cb99c2012-10-16 13:15:06 +03004883
Victor Stinnere66987e2016-09-06 16:33:52 -07004884 On a Unix-like system, random bytes are read from the ``/dev/urandom``
4885 device. If the ``/dev/urandom`` device is not available or not readable, the
4886 :exc:`NotImplementedError` exception is raised.
4887
4888 On Windows, it will use ``CryptGenRandom()``.
4889
4890 .. seealso::
4891 The :mod:`secrets` module provides higher level functions. For an
4892 easy-to-use interface to the random number generator provided by your
4893 platform, please see :class:`random.SystemRandom`.
4894
4895 .. versionchanged:: 3.6.0
4896 On Linux, ``getrandom()`` is now used in blocking mode to increase the
4897 security.
Victor Stinnerace88482015-07-29 02:28:32 +02004898
Victor Stinnerdddf4842016-06-07 11:21:42 +02004899 .. versionchanged:: 3.5.2
Victor Stinner9b1f4742016-09-06 16:18:52 -07004900 On Linux, if the ``getrandom()`` syscall blocks (the urandom entropy pool
4901 is not initialized yet), fall back on reading ``/dev/urandom``.
Victor Stinnerdddf4842016-06-07 11:21:42 +02004902
Victor Stinnerace88482015-07-29 02:28:32 +02004903 .. versionchanged:: 3.5
4904 On Linux 3.17 and newer, the ``getrandom()`` syscall is now used
4905 when available. On OpenBSD 5.6 and newer, the C ``getentropy()``
4906 function is now used. These functions avoid the usage of an internal file
4907 descriptor.
Victor Stinner9b1f4742016-09-06 16:18:52 -07004908
4909.. data:: GRND_NONBLOCK
4910
4911 By default, when reading from ``/dev/random``, :func:`getrandom` blocks if
4912 no random bytes are available, and when reading from ``/dev/urandom``, it blocks
4913 if the entropy pool has not yet been initialized.
4914
4915 If the :py:data:`GRND_NONBLOCK` flag is set, then :func:`getrandom` does not
4916 block in these cases, but instead immediately raises :exc:`BlockingIOError`.
4917
4918 .. versionadded:: 3.6
4919
4920.. data:: GRND_RANDOM
4921
4922 If this bit is set, then random bytes are drawn from the
4923 ``/dev/random`` pool instead of the ``/dev/urandom`` pool.
4924
4925 .. versionadded:: 3.6