blob: 77bbf998863459bdc1ec73491ecb770035c3e4d1 [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
pxinwrf2d7ac72019-05-21 18:46:37 +080035* On VxWorks, 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
Miss Islington (bot)c3ef1a52019-07-05 01:48:21 -070039 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
71uses the file system encoding to perform this conversion (see
72:func:`sys.getfilesystemencoding`).
Martin v. Löwis011e8422009-05-05 04:43:17 +000073
74.. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +000075 On some systems, conversion using the file system encoding may fail. In this
Victor Stinnerf6a271a2014-08-01 12:28:48 +020076 case, Python uses the :ref:`surrogateescape encoding error handler
77 <surrogateescape>`, which means that undecodable bytes are replaced by a
78 Unicode character U+DCxx on decoding, and these are again translated to the
79 original byte on encoding.
Martin v. Löwis011e8422009-05-05 04:43:17 +000080
81
Georg Brandl67b21b72010-08-17 15:07:14 +000082The file system encoding must guarantee to successfully decode all bytes
83below 128. If the file system encoding fails to provide this guarantee, API
84functions may raise UnicodeErrors.
Martin v. Löwis011e8422009-05-05 04:43:17 +000085
86
Georg Brandl116aa622007-08-15 14:28:22 +000087.. _os-procinfo:
88
89Process Parameters
90------------------
91
92These functions and data items provide information and operate on the current
93process and user.
94
95
Georg Brandl8ccadaa2012-06-24 12:50:06 +020096.. function:: ctermid()
97
98 Return the filename corresponding to the controlling terminal of the process.
99
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400100 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200101
102
Georg Brandl116aa622007-08-15 14:28:22 +0000103.. data:: environ
104
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700105 A :term:`mapping` object representing the string environment. For example,
Georg Brandl116aa622007-08-15 14:28:22 +0000106 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
107 and is equivalent to ``getenv("HOME")`` in C.
108
109 This mapping is captured the first time the :mod:`os` module is imported,
110 typically during Python startup as part of processing :file:`site.py`. Changes
111 to the environment made after this time are not reflected in ``os.environ``,
112 except for changes made by modifying ``os.environ`` directly.
113
114 If the platform supports the :func:`putenv` function, this mapping may be used
115 to modify the environment as well as query the environment. :func:`putenv` will
116 be called automatically when the mapping is modified.
117
Victor Stinner84ae1182010-05-06 22:05:07 +0000118 On Unix, keys and values use :func:`sys.getfilesystemencoding` and
119 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like
120 to use a different encoding.
121
Georg Brandl116aa622007-08-15 14:28:22 +0000122 .. note::
123
124 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
125 to modify ``os.environ``.
126
127 .. note::
128
Georg Brandlc575c902008-09-13 17:46:05 +0000129 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
130 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000131 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000132
133 If :func:`putenv` is not provided, a modified copy of this mapping may be
134 passed to the appropriate process-creation functions to cause child processes
135 to use a modified environment.
136
Georg Brandl9afde1c2007-11-01 20:32:30 +0000137 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000138 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000139 automatically when an item is deleted from ``os.environ``, and when
140 one of the :meth:`pop` or :meth:`clear` methods is called.
141
Georg Brandl116aa622007-08-15 14:28:22 +0000142
Victor Stinner84ae1182010-05-06 22:05:07 +0000143.. data:: environb
144
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700145 Bytes version of :data:`environ`: a :term:`mapping` object representing the
Victor Stinner84ae1182010-05-06 22:05:07 +0000146 environment as byte strings. :data:`environ` and :data:`environb` are
147 synchronized (modify :data:`environb` updates :data:`environ`, and vice
148 versa).
149
Victor Stinnerb745a742010-05-18 17:17:23 +0000150 :data:`environb` is only available if :data:`supports_bytes_environ` is
Serhiy Storchakad3603462019-11-12 18:54:10 +0200151 ``True``.
Victor Stinner84ae1182010-05-06 22:05:07 +0000152
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000153 .. versionadded:: 3.2
154
Victor Stinner84ae1182010-05-06 22:05:07 +0000155
Georg Brandl116aa622007-08-15 14:28:22 +0000156.. function:: chdir(path)
157 fchdir(fd)
158 getcwd()
159 :noindex:
160
161 These functions are described in :ref:`os-file-dir`.
162
163
Victor Stinnere8d51452010-08-19 01:05:19 +0000164.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000165
Brett Cannonc28592b2016-06-24 12:21:47 -0700166 Encode :term:`path-like <path-like object>` *filename* to the filesystem
167 encoding with ``'surrogateescape'`` error handler, or ``'strict'`` on
168 Windows; return :class:`bytes` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000169
Antoine Pitroua305ca72010-09-25 22:12:00 +0000170 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000171
172 .. versionadded:: 3.2
173
Brett Cannonb08388d2016-06-09 15:58:06 -0700174 .. versionchanged:: 3.6
Brett Cannonc78ca1e2016-06-24 12:03:43 -0700175 Support added to accept objects implementing the :class:`os.PathLike`
176 interface.
Brett Cannonb08388d2016-06-09 15:58:06 -0700177
Victor Stinnere8d51452010-08-19 01:05:19 +0000178
179.. function:: fsdecode(filename)
180
Brett Cannonc28592b2016-06-24 12:21:47 -0700181 Decode the :term:`path-like <path-like object>` *filename* from the
182 filesystem encoding with ``'surrogateescape'`` error handler, or ``'strict'``
183 on Windows; return :class:`str` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000184
185 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000186
187 .. versionadded:: 3.2
188
Brett Cannonb08388d2016-06-09 15:58:06 -0700189 .. versionchanged:: 3.6
Brett Cannonc78ca1e2016-06-24 12:03:43 -0700190 Support added to accept objects implementing the :class:`os.PathLike`
191 interface.
Brett Cannonb08388d2016-06-09 15:58:06 -0700192
Victor Stinner449c4662010-05-08 11:10:09 +0000193
Ethan Furmancdc08792016-06-02 15:06:09 -0700194.. function:: fspath(path)
195
Brett Cannon0fa1aa12016-06-09 14:37:06 -0700196 Return the file system representation of the path.
Ethan Furmancdc08792016-06-02 15:06:09 -0700197
Brett Cannonc78ca1e2016-06-24 12:03:43 -0700198 If :class:`str` or :class:`bytes` is passed in, it is returned unchanged.
199 Otherwise :meth:`~os.PathLike.__fspath__` is called and its value is
200 returned as long as it is a :class:`str` or :class:`bytes` object.
201 In all other cases, :exc:`TypeError` is raised.
Ethan Furmancdc08792016-06-02 15:06:09 -0700202
Brett Cannonb08388d2016-06-09 15:58:06 -0700203 .. versionadded:: 3.6
204
205
206.. class:: PathLike
207
208 An :term:`abstract base class` for objects representing a file system path,
209 e.g. :class:`pathlib.PurePath`.
210
Berker Peksagb18ffb42016-06-10 08:43:54 +0300211 .. versionadded:: 3.6
212
Brett Cannonb08388d2016-06-09 15:58:06 -0700213 .. abstractmethod:: __fspath__()
214
215 Return the file system path representation of the object.
216
217 The method should only return a :class:`str` or :class:`bytes` object,
218 with the preference being for :class:`str`.
219
Ethan Furmancdc08792016-06-02 15:06:09 -0700220
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200221.. function:: getenv(key, default=None)
222
223 Return the value of the environment variable *key* if it exists, or
224 *default* if it doesn't. *key*, *default* and the result are str.
225
226 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
227 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
228 would like to use a different encoding.
229
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400230 .. availability:: most flavors of Unix, Windows.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200231
232
233.. function:: getenvb(key, default=None)
234
235 Return the value of the environment variable *key* if it exists, or
236 *default* if it doesn't. *key*, *default* and the result are bytes.
237
Berker Peksag996e5f92016-09-26 22:44:07 +0300238 :func:`getenvb` is only available if :data:`supports_bytes_environ`
Serhiy Storchakad3603462019-11-12 18:54:10 +0200239 is ``True``.
Berker Peksag996e5f92016-09-26 22:44:07 +0300240
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400241 .. availability:: most flavors of Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200242
243 .. versionadded:: 3.2
244
245
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000246.. function:: get_exec_path(env=None)
247
248 Returns the list of directories that will be searched for a named
249 executable, similar to a shell, when launching a process.
250 *env*, when specified, should be an environment variable dictionary
251 to lookup the PATH in.
Serhiy Storchakaecf41da2016-10-19 16:29:26 +0300252 By default, when *env* is ``None``, :data:`environ` is used.
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000253
254 .. versionadded:: 3.2
255
256
Georg Brandl116aa622007-08-15 14:28:22 +0000257.. function:: getegid()
258
259 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000260 "set id" bit on the file being executed in the current process.
261
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400262 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000263
264
265.. function:: geteuid()
266
267 .. index:: single: user; effective id
268
Benjamin Petersonf650e462010-05-06 23:03:05 +0000269 Return the current process's effective user id.
270
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400271 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000272
273
274.. function:: getgid()
275
276 .. index:: single: process; group
277
Benjamin Petersonf650e462010-05-06 23:03:05 +0000278 Return the real group id of the current process.
279
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400280 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000281
282
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200283.. function:: getgrouplist(user, group)
284
285 Return list of group ids that *user* belongs to. If *group* is not in the
286 list, it is included; typically, *group* is specified as the group ID
287 field from the password record for *user*.
288
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400289 .. availability:: Unix.
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200290
291 .. versionadded:: 3.3
292
293
Georg Brandl116aa622007-08-15 14:28:22 +0000294.. function:: getgroups()
295
296 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000297
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400298 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000299
Larry Hastings3732ed22014-03-15 21:13:56 -0700300 .. note::
301
302 On Mac OS X, :func:`getgroups` behavior differs somewhat from
Ned Deily2e209682012-04-30 11:14:02 -0700303 other Unix platforms. If the Python interpreter was built with a
304 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
305 the list of effective group ids associated with the current user process;
306 this list is limited to a system-defined number of entries, typically 16,
307 and may be modified by calls to :func:`setgroups` if suitably privileged.
308 If built with a deployment target greater than :const:`10.5`,
309 :func:`getgroups` returns the current group access list for the user
310 associated with the effective user id of the process; the group access
311 list may change over the lifetime of the process, it is not affected by
312 calls to :func:`setgroups`, and its length is not limited to 16. The
313 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
314 obtained with :func:`sysconfig.get_config_var`.
315
Georg Brandl116aa622007-08-15 14:28:22 +0000316
317.. function:: getlogin()
318
319 Return the name of the user logged in on the controlling terminal of the
Barry Warsawd4990312018-01-24 12:51:29 -0500320 process. For most purposes, it is more useful to use
321 :func:`getpass.getuser` since the latter checks the environment variables
322 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, and
323 falls back to ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the
324 current real user id.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000325
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400326 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000327
328
329.. function:: getpgid(pid)
330
331 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000332 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400334 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000335
336.. function:: getpgrp()
337
338 .. index:: single: process; group
339
Benjamin Petersonf650e462010-05-06 23:03:05 +0000340 Return the id of the current process group.
341
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400342 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000343
344
345.. function:: getpid()
346
347 .. index:: single: process; id
348
Benjamin Petersonf650e462010-05-06 23:03:05 +0000349 Return the current process id.
350
Georg Brandl116aa622007-08-15 14:28:22 +0000351
352.. function:: getppid()
353
354 .. index:: single: process; id of parent
355
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000356 Return the parent's process id. When the parent process has exited, on Unix
357 the id returned is the one of the init process (1), on Windows it is still
358 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000359
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400360 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000361
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000362 .. versionchanged:: 3.2
363 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000364
Georg Brandl8a5555f2012-06-24 13:29:09 +0200365
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000366.. function:: getpriority(which, who)
367
368 .. index:: single: process; scheduling priority
369
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200370 Get program scheduling priority. The value *which* is one of
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000371 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
372 is interpreted relative to *which* (a process identifier for
373 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200374 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000375 (respectively) the calling process, the process group of the calling process,
376 or the real user ID of the calling process.
377
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400378 .. availability:: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000379
380 .. versionadded:: 3.3
381
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200382
383.. data:: PRIO_PROCESS
384 PRIO_PGRP
385 PRIO_USER
386
387 Parameters for the :func:`getpriority` and :func:`setpriority` functions.
388
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400389 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200390
391 .. versionadded:: 3.3
392
393
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000394.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000395
396 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000397 real, effective, and saved user ids.
398
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400399 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000400
Georg Brandl1b83a452009-11-28 11:12:26 +0000401 .. versionadded:: 3.2
402
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000403
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000404.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000405
406 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000407 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000408
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400409 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000410
Georg Brandl1b83a452009-11-28 11:12:26 +0000411 .. versionadded:: 3.2
412
Georg Brandl116aa622007-08-15 14:28:22 +0000413
414.. function:: getuid()
415
416 .. index:: single: user; id
417
Benjamin Peterson4bb09c82014-06-07 13:50:34 -0700418 Return the current process's real user id.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000419
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400420 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000421
422
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200423.. function:: initgroups(username, gid)
Georg Brandl116aa622007-08-15 14:28:22 +0000424
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200425 Call the system initgroups() to initialize the group access list with all of
426 the groups of which the specified username is a member, plus the specified
427 group id.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000428
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400429 .. availability:: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000430
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200431 .. versionadded:: 3.2
432
Georg Brandl116aa622007-08-15 14:28:22 +0000433
Georg Brandl18244152009-09-02 20:34:52 +0000434.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000435
436 .. index:: single: environment variables; setting
437
Georg Brandl18244152009-09-02 20:34:52 +0000438 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000439 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000440 :func:`popen` or :func:`fork` and :func:`execv`.
441
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400442 .. availability:: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000443
444 .. note::
445
Georg Brandlc575c902008-09-13 17:46:05 +0000446 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
447 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000448
449 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
450 automatically translated into corresponding calls to :func:`putenv`; however,
451 calls to :func:`putenv` don't update ``os.environ``, so it is actually
452 preferable to assign to items of ``os.environ``.
453
Steve Dowera00b5be2020-02-13 08:30:27 +0000454 .. audit-event:: os.putenv key,value os.putenv
455
Georg Brandl116aa622007-08-15 14:28:22 +0000456
457.. function:: setegid(egid)
458
Benjamin Petersonf650e462010-05-06 23:03:05 +0000459 Set the current process's effective group id.
460
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400461 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000462
463
464.. function:: seteuid(euid)
465
Benjamin Petersonf650e462010-05-06 23:03:05 +0000466 Set the current process's effective user id.
467
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400468 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000469
470
471.. function:: setgid(gid)
472
Benjamin Petersonf650e462010-05-06 23:03:05 +0000473 Set the current process' group id.
474
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400475 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000476
477
478.. function:: setgroups(groups)
479
480 Set the list of supplemental group ids associated with the current process to
481 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000482 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000483
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400484 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000485
Ned Deily2e209682012-04-30 11:14:02 -0700486 .. note:: On Mac OS X, the length of *groups* may not exceed the
487 system-defined maximum number of effective group ids, typically 16.
488 See the documentation for :func:`getgroups` for cases where it may not
489 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000490
491.. function:: setpgrp()
492
Andrew Svetlova2fe3342012-08-11 21:14:08 +0300493 Call the system call :c:func:`setpgrp` or ``setpgrp(0, 0)`` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000494 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000495
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400496 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000497
498
499.. function:: setpgid(pid, pgrp)
500
Georg Brandl60203b42010-10-06 10:11:56 +0000501 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000502 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000503 for the semantics.
504
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400505 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000506
507
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000508.. function:: setpriority(which, who, priority)
509
510 .. index:: single: process; scheduling priority
511
512 Set program scheduling priority. The value *which* is one of
513 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
514 is interpreted relative to *which* (a process identifier for
515 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
516 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
517 (respectively) the calling process, the process group of the calling process,
518 or the real user ID of the calling process.
519 *priority* is a value in the range -20 to 19. The default priority is 0;
520 lower priorities cause more favorable scheduling.
521
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400522 .. availability:: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000523
524 .. versionadded:: 3.3
525
526
Georg Brandl116aa622007-08-15 14:28:22 +0000527.. function:: setregid(rgid, egid)
528
Benjamin Petersonf650e462010-05-06 23:03:05 +0000529 Set the current process's real and effective group ids.
530
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400531 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000532
Georg Brandl1b83a452009-11-28 11:12:26 +0000533
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000534.. function:: setresgid(rgid, egid, sgid)
535
536 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000537
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400538 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000539
Georg Brandl1b83a452009-11-28 11:12:26 +0000540 .. versionadded:: 3.2
541
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000542
543.. function:: setresuid(ruid, euid, suid)
544
545 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000546
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400547 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000548
Georg Brandl1b83a452009-11-28 11:12:26 +0000549 .. versionadded:: 3.2
550
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000551
552.. function:: setreuid(ruid, euid)
553
Benjamin Petersonf650e462010-05-06 23:03:05 +0000554 Set the current process's real and effective user ids.
555
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400556 .. availability:: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000557
Georg Brandl116aa622007-08-15 14:28:22 +0000558
559.. function:: getsid(pid)
560
Georg Brandl60203b42010-10-06 10:11:56 +0000561 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000562
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400563 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000564
Georg Brandl116aa622007-08-15 14:28:22 +0000565
566.. function:: setsid()
567
Georg Brandl60203b42010-10-06 10:11:56 +0000568 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000569
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400570 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000571
572
573.. function:: setuid(uid)
574
575 .. index:: single: user; id, setting
576
Benjamin Petersonf650e462010-05-06 23:03:05 +0000577 Set the current process's user id.
578
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400579 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000580
Georg Brandl116aa622007-08-15 14:28:22 +0000581
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000582.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000583.. function:: strerror(code)
584
585 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000586 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000587 error number, :exc:`ValueError` is raised.
588
Georg Brandl116aa622007-08-15 14:28:22 +0000589
Victor Stinnerb745a742010-05-18 17:17:23 +0000590.. data:: supports_bytes_environ
591
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200592 ``True`` if the native OS type of the environment is bytes (eg. ``False`` on
Victor Stinnerb745a742010-05-18 17:17:23 +0000593 Windows).
594
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000595 .. versionadded:: 3.2
596
Victor Stinnerb745a742010-05-18 17:17:23 +0000597
Georg Brandl116aa622007-08-15 14:28:22 +0000598.. function:: umask(mask)
599
Benjamin Petersonf650e462010-05-06 23:03:05 +0000600 Set the current numeric umask and return the previous umask.
601
Georg Brandl116aa622007-08-15 14:28:22 +0000602
603.. function:: uname()
604
605 .. index::
606 single: gethostname() (in module socket)
607 single: gethostbyaddr() (in module socket)
608
Larry Hastings605a62d2012-06-24 04:33:36 -0700609 Returns information identifying the current operating system.
610 The return value is an object with five attributes:
611
612 * :attr:`sysname` - operating system name
613 * :attr:`nodename` - name of machine on network (implementation-defined)
614 * :attr:`release` - operating system release
615 * :attr:`version` - operating system version
616 * :attr:`machine` - hardware identifier
617
618 For backwards compatibility, this object is also iterable, behaving
619 like a five-tuple containing :attr:`sysname`, :attr:`nodename`,
620 :attr:`release`, :attr:`version`, and :attr:`machine`
621 in that order.
622
623 Some systems truncate :attr:`nodename` to 8 characters or to the
Georg Brandl116aa622007-08-15 14:28:22 +0000624 leading component; a better way to get the hostname is
625 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000626 ``socket.gethostbyaddr(socket.gethostname())``.
627
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400628 .. availability:: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000629
Larry Hastings605a62d2012-06-24 04:33:36 -0700630 .. versionchanged:: 3.3
631 Return type changed from a tuple to a tuple-like object
632 with named attributes.
633
Georg Brandl116aa622007-08-15 14:28:22 +0000634
Georg Brandl18244152009-09-02 20:34:52 +0000635.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000636
637 .. index:: single: environment variables; deleting
638
Georg Brandl18244152009-09-02 20:34:52 +0000639 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000640 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000641 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000642
643 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
644 automatically translated into a corresponding call to :func:`unsetenv`; however,
645 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
646 preferable to delete items of ``os.environ``.
647
Steve Dowera00b5be2020-02-13 08:30:27 +0000648 .. audit-event:: os.unsetenv key os.unsetenv
649
Victor Stinnerf84f65b2020-01-22 13:50:40 +0100650 .. availability:: most flavors of Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000651
Georg Brandl116aa622007-08-15 14:28:22 +0000652
653.. _os-newstreams:
654
655File Object Creation
656--------------------
657
Steve Dowerb82e17e2019-05-23 08:45:22 -0700658These functions create new :term:`file objects <file object>`. (See also
Georg Brandlb2462e22012-06-24 13:24:56 +0200659:func:`~os.open` for opening file descriptors.)
Georg Brandl116aa622007-08-15 14:28:22 +0000660
661
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300662.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000663
Georg Brandlb2462e22012-06-24 13:24:56 +0200664 Return an open file object connected to the file descriptor *fd*. This is an
665 alias of the :func:`open` built-in function and accepts the same arguments.
666 The only difference is that the first argument of :func:`fdopen` must always
667 be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000668
Georg Brandl116aa622007-08-15 14:28:22 +0000669
Georg Brandl116aa622007-08-15 14:28:22 +0000670.. _os-fd-ops:
671
672File Descriptor Operations
673--------------------------
674
675These functions operate on I/O streams referenced using file descriptors.
676
677File descriptors are small integers corresponding to a file that has been opened
678by the current process. For example, standard input is usually file descriptor
6790, standard output is 1, and standard error is 2. Further files opened by a
680process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
681is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
682by file descriptors.
683
Serhiy Storchakadab83542013-10-13 20:12:43 +0300684The :meth:`~io.IOBase.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000685associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000686descriptor directly will bypass the file object methods, ignoring aspects such
687as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000688
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000689
Georg Brandl116aa622007-08-15 14:28:22 +0000690.. function:: close(fd)
691
Benjamin Petersonf650e462010-05-06 23:03:05 +0000692 Close file descriptor *fd*.
693
Georg Brandl116aa622007-08-15 14:28:22 +0000694 .. note::
695
696 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000697 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000698 object" returned by the built-in function :func:`open` or by :func:`popen` or
Serhiy Storchakadab83542013-10-13 20:12:43 +0300699 :func:`fdopen`, use its :meth:`~io.IOBase.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000700
701
Christian Heimesfdab48e2008-01-20 09:06:41 +0000702.. function:: closerange(fd_low, fd_high)
703
704 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200705 ignoring errors. Equivalent to (but much faster than)::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000706
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000707 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000708 try:
709 os.close(fd)
710 except OSError:
711 pass
712
Christian Heimesfdab48e2008-01-20 09:06:41 +0000713
Pablo Galindoaac4d032019-05-31 19:39:47 +0100714.. function:: copy_file_range(src, dst, count, offset_src=None, offset_dst=None)
715
716 Copy *count* bytes from file descriptor *src*, starting from offset
717 *offset_src*, to file descriptor *dst*, starting from offset *offset_dst*.
718 If *offset_src* is None, then *src* is read from the current position;
719 respectively for *offset_dst*. The files pointed by *src* and *dst*
720 must reside in the same filesystem, otherwise an :exc:`OSError` is
721 raised with :attr:`~OSError.errno` set to :data:`errno.EXDEV`.
722
723 This copy is done without the additional cost of transferring data
724 from the kernel to user space and then back into the kernel. Additionally,
725 some filesystems could implement extra optimizations. The copy is done as if
726 both files are opened as binary.
727
728 The return value is the amount of bytes copied. This could be less than the
729 amount requested.
730
731 .. availability:: Linux kernel >= 4.5 or glibc >= 2.27.
732
733 .. versionadded:: 3.8
734
735
Georg Brandl81f11302007-12-21 08:45:42 +0000736.. function:: device_encoding(fd)
737
738 Return a string describing the encoding of the device associated with *fd*
739 if it is connected to a terminal; else return :const:`None`.
740
741
Georg Brandl116aa622007-08-15 14:28:22 +0000742.. function:: dup(fd)
743
Victor Stinnerdaf45552013-08-28 00:53:59 +0200744 Return a duplicate of file descriptor *fd*. The new file descriptor is
745 :ref:`non-inheritable <fd_inheritance>`.
746
747 On Windows, when duplicating a standard stream (0: stdin, 1: stdout,
748 2: stderr), the new file descriptor is :ref:`inheritable
749 <fd_inheritance>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000750
Victor Stinnerdaf45552013-08-28 00:53:59 +0200751 .. versionchanged:: 3.4
752 The new file descriptor is now non-inheritable.
Georg Brandl116aa622007-08-15 14:28:22 +0000753
Victor Stinnerdaf45552013-08-28 00:53:59 +0200754
755.. function:: dup2(fd, fd2, inheritable=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000756
Benjamin Petersonbbdb17d2017-12-29 13:13:06 -0800757 Duplicate file descriptor *fd* to *fd2*, closing the latter first if
758 necessary. Return *fd2*. The new file descriptor is :ref:`inheritable
759 <fd_inheritance>` by default or non-inheritable if *inheritable*
760 is ``False``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000761
Victor Stinnerdaf45552013-08-28 00:53:59 +0200762 .. versionchanged:: 3.4
763 Add the optional *inheritable* parameter.
764
Benjamin Petersonbbdb17d2017-12-29 13:13:06 -0800765 .. versionchanged:: 3.7
766 Return *fd2* on success. Previously, ``None`` was always returned.
767
Georg Brandl116aa622007-08-15 14:28:22 +0000768
Christian Heimes4e30a842007-11-30 22:12:06 +0000769.. function:: fchmod(fd, mode)
770
Georg Brandlb9df00c2012-06-24 12:38:14 +0200771 Change the mode of the file given by *fd* to the numeric *mode*. See the
Georg Brandl4d399a42012-06-25 07:40:32 +0200772 docs for :func:`chmod` for possible values of *mode*. As of Python 3.3, this
Georg Brandlb9df00c2012-06-24 12:38:14 +0200773 is equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000774
Steve Dowera00b5be2020-02-13 08:30:27 +0000775 .. audit-event:: os.chmod path,mode,dir_fd os.fchmod
776
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400777 .. availability:: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000778
779
780.. function:: fchown(fd, uid, gid)
781
782 Change the owner and group id of the file given by *fd* to the numeric *uid*
Georg Brandlb9df00c2012-06-24 12:38:14 +0200783 and *gid*. To leave one of the ids unchanged, set it to -1. See
Georg Brandl4d399a42012-06-25 07:40:32 +0200784 :func:`chown`. As of Python 3.3, this is equivalent to ``os.chown(fd, uid,
Georg Brandlb9df00c2012-06-24 12:38:14 +0200785 gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000786
Steve Dowera00b5be2020-02-13 08:30:27 +0000787 .. audit-event:: os.chown path,uid,gid,dir_fd os.fchown
788
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400789 .. availability:: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000790
791
Georg Brandl116aa622007-08-15 14:28:22 +0000792.. function:: fdatasync(fd)
793
794 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000795 metadata.
796
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400797 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000798
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000799 .. note::
800 This function is not available on MacOS.
801
Georg Brandl116aa622007-08-15 14:28:22 +0000802
803.. function:: fpathconf(fd, name)
804
805 Return system configuration information relevant to an open file. *name*
806 specifies the configuration value to retrieve; it may be a string which is the
807 name of a defined system value; these names are specified in a number of
808 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
809 additional names as well. The names known to the host operating system are
810 given in the ``pathconf_names`` dictionary. For configuration variables not
811 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000812
813 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
814 specific value for *name* is not supported by the host system, even if it is
815 included in ``pathconf_names``, an :exc:`OSError` is raised with
816 :const:`errno.EINVAL` for the error number.
817
Georg Brandl4d399a42012-06-25 07:40:32 +0200818 As of Python 3.3, this is equivalent to ``os.pathconf(fd, name)``.
Georg Brandl306336b2012-06-24 12:55:33 +0200819
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400820 .. availability:: Unix.
Senthil Kumaran2a97cee2013-09-19 00:08:56 -0700821
Georg Brandl116aa622007-08-15 14:28:22 +0000822
Victor Stinner4195b5c2012-02-08 23:03:19 +0100823.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000824
Victor Stinner6d4f4fe2014-07-24 12:42:16 +0200825 Get the status of the file descriptor *fd*. Return a :class:`stat_result`
826 object.
827
828 As of Python 3.3, this is equivalent to ``os.stat(fd)``.
829
830 .. seealso::
831
Berker Peksag2034caa2015-04-27 13:53:28 +0300832 The :func:`.stat` function.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000833
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200834
Georg Brandl116aa622007-08-15 14:28:22 +0000835.. function:: fstatvfs(fd)
836
Georg Brandlb9df00c2012-06-24 12:38:14 +0200837 Return information about the filesystem containing the file associated with
Georg Brandl4d399a42012-06-25 07:40:32 +0200838 file descriptor *fd*, like :func:`statvfs`. As of Python 3.3, this is
Georg Brandlb9df00c2012-06-24 12:38:14 +0200839 equivalent to ``os.statvfs(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000840
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400841 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000842
843
844.. function:: fsync(fd)
845
846 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000847 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000848
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000849 If you're starting with a buffered Python :term:`file object` *f*, first do
850 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
851 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000852
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400853 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000854
855
856.. function:: ftruncate(fd, length)
857
Georg Brandl306336b2012-06-24 12:55:33 +0200858 Truncate the file corresponding to file descriptor *fd*, so that it is at
Georg Brandl4d399a42012-06-25 07:40:32 +0200859 most *length* bytes in size. As of Python 3.3, this is equivalent to
Georg Brandl306336b2012-06-24 12:55:33 +0200860 ``os.truncate(fd, length)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000861
Miss Islington (bot)4fee28a2019-06-27 11:07:16 -0700862 .. audit-event:: os.truncate fd,length os.ftruncate
Steve Dowerb82e17e2019-05-23 08:45:22 -0700863
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400864 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000865
Steve Dowerfe0a41a2015-03-20 19:50:46 -0700866 .. versionchanged:: 3.5
867 Added support for Windows
Georg Brandl116aa622007-08-15 14:28:22 +0000868
Steve Dowerb82e17e2019-05-23 08:45:22 -0700869
Victor Stinner1db9e7b2014-07-29 22:32:47 +0200870.. function:: get_blocking(fd)
871
872 Get the blocking mode of the file descriptor: ``False`` if the
873 :data:`O_NONBLOCK` flag is set, ``True`` if the flag is cleared.
874
875 See also :func:`set_blocking` and :meth:`socket.socket.setblocking`.
876
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400877 .. availability:: Unix.
Victor Stinner1db9e7b2014-07-29 22:32:47 +0200878
879 .. versionadded:: 3.5
880
Steve Dowerb82e17e2019-05-23 08:45:22 -0700881
Georg Brandl116aa622007-08-15 14:28:22 +0000882.. function:: isatty(fd)
883
884 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000885 tty(-like) device, else ``False``.
886
Georg Brandl116aa622007-08-15 14:28:22 +0000887
Ross Lagerwall7807c352011-03-17 20:20:30 +0200888.. function:: lockf(fd, cmd, len)
889
890 Apply, test or remove a POSIX lock on an open file descriptor.
891 *fd* is an open file descriptor.
892 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
893 :data:`F_ULOCK` or :data:`F_TEST`.
894 *len* specifies the section of the file to lock.
895
Steve Dowera00b5be2020-02-13 08:30:27 +0000896 .. audit-event:: os.lockf fd,cmd,len os.lockf
897
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400898 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +0200899
900 .. versionadded:: 3.3
901
902
903.. data:: F_LOCK
904 F_TLOCK
905 F_ULOCK
906 F_TEST
907
908 Flags that specify what action :func:`lockf` will take.
909
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400910 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +0200911
912 .. versionadded:: 3.3
913
Georg Brandlf62445a2012-06-24 13:31:20 +0200914
Georg Brandl116aa622007-08-15 14:28:22 +0000915.. function:: lseek(fd, pos, how)
916
Christian Heimesfaf2f632008-01-06 16:59:19 +0000917 Set the current position of file descriptor *fd* to position *pos*, modified
918 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
919 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
Serhiy Storchakadab83542013-10-13 20:12:43 +0300920 current position; :const:`SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100921 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000922
Georg Brandl116aa622007-08-15 14:28:22 +0000923
Georg Brandl8569e582010-05-19 20:57:08 +0000924.. data:: SEEK_SET
925 SEEK_CUR
926 SEEK_END
927
928 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandl8a5555f2012-06-24 13:29:09 +0200929 respectively.
930
Jesus Cea94363612012-06-22 18:32:07 +0200931 .. versionadded:: 3.3
932 Some operating systems could support additional values, like
933 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
934
Georg Brandl8569e582010-05-19 20:57:08 +0000935
Martin Panterbf19d162015-09-09 01:01:13 +0000936.. function:: open(path, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000937
Martin Panterbf19d162015-09-09 01:01:13 +0000938 Open the file *path* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700939 its mode according to *mode*. When computing *mode*, the current umask value
940 is first masked out. Return the file descriptor for the newly opened file.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200941 The new file descriptor is :ref:`non-inheritable <fd_inheritance>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000942
943 For a description of the flag and mode values, see the C run-time documentation;
944 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Andrew Kuchling4921a082013-06-21 11:49:57 -0400945 the :mod:`os` module. In particular, on Windows adding
Georg Brandl8569e582010-05-19 20:57:08 +0000946 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000947
Georg Brandl50c40002012-06-24 11:45:20 +0200948 This function can support :ref:`paths relative to directory descriptors
Andrew Kuchling4921a082013-06-21 11:49:57 -0400949 <dir_fd>` with the *dir_fd* parameter.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700950
Miss Islington (bot)4fee28a2019-06-27 11:07:16 -0700951 .. audit-event:: open path,mode,flags os.open
Steve Dowerb82e17e2019-05-23 08:45:22 -0700952
Victor Stinnerdaf45552013-08-28 00:53:59 +0200953 .. versionchanged:: 3.4
954 The new file descriptor is now non-inheritable.
955
Georg Brandl116aa622007-08-15 14:28:22 +0000956 .. note::
957
Georg Brandl502d9a52009-07-26 15:02:41 +0000958 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000959 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bcf2010-07-13 14:47:01 +0000960 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000961 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000962
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000963 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700964 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000965
Victor Stinnera766ddf2015-03-26 23:50:57 +0100966 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +0200967 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +0100968 exception, the function now retries the system call instead of raising an
969 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
970
Brett Cannon6fa7aad2016-09-06 15:55:02 -0700971 .. versionchanged:: 3.6
972 Accepts a :term:`path-like object`.
973
Andrew Kuchling4921a082013-06-21 11:49:57 -0400974The following constants are options for the *flags* parameter to the
975:func:`~os.open` function. They can be combined using the bitwise OR operator
976``|``. Some of them are not available on all platforms. For descriptions of
977their availability and use, consult the :manpage:`open(2)` manual page on Unix
Georg Brandl5d941342016-02-26 19:37:12 +0100978or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -0400979
980
981.. data:: O_RDONLY
982 O_WRONLY
983 O_RDWR
984 O_APPEND
985 O_CREAT
986 O_EXCL
987 O_TRUNC
988
Vinay Sajipe4946e72016-09-11 15:15:59 +0100989 The above constants are available on Unix and Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -0400990
991
992.. data:: O_DSYNC
993 O_RSYNC
994 O_SYNC
995 O_NDELAY
996 O_NONBLOCK
997 O_NOCTTY
Andrew Kuchling4921a082013-06-21 11:49:57 -0400998 O_CLOEXEC
999
Vinay Sajipe4946e72016-09-11 15:15:59 +01001000 The above constants are only available on Unix.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001001
1002 .. versionchanged:: 3.3
1003 Add :data:`O_CLOEXEC` constant.
1004
1005.. data:: O_BINARY
1006 O_NOINHERIT
1007 O_SHORT_LIVED
1008 O_TEMPORARY
1009 O_RANDOM
1010 O_SEQUENTIAL
1011 O_TEXT
1012
Vinay Sajipe4946e72016-09-11 15:15:59 +01001013 The above constants are only available on Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -04001014
1015
1016.. data:: O_ASYNC
1017 O_DIRECT
1018 O_DIRECTORY
1019 O_NOFOLLOW
1020 O_NOATIME
1021 O_PATH
Christian Heimes177b3f92013-08-16 14:35:09 +02001022 O_TMPFILE
Vinay Sajipe4946e72016-09-11 15:15:59 +01001023 O_SHLOCK
1024 O_EXLOCK
Andrew Kuchling4921a082013-06-21 11:49:57 -04001025
Vinay Sajipe4946e72016-09-11 15:15:59 +01001026 The above constants are extensions and not present if they are not defined by
Andrew Kuchling4921a082013-06-21 11:49:57 -04001027 the C library.
1028
Christian Heimesd88f7352013-08-16 14:37:50 +02001029 .. versionchanged:: 3.4
Larry Hastings3732ed22014-03-15 21:13:56 -07001030 Add :data:`O_PATH` on systems that support it.
1031 Add :data:`O_TMPFILE`, only available on Linux Kernel 3.11
1032 or newer.
Christian Heimesd88f7352013-08-16 14:37:50 +02001033
Antoine Pitrouf65132d2011-02-25 23:25:17 +00001034
Georg Brandl116aa622007-08-15 14:28:22 +00001035.. function:: openpty()
1036
1037 .. index:: module: pty
1038
Victor Stinnerdaf45552013-08-28 00:53:59 +02001039 Open a new pseudo-terminal pair. Return a pair of file descriptors
1040 ``(master, slave)`` for the pty and the tty, respectively. The new file
1041 descriptors are :ref:`non-inheritable <fd_inheritance>`. For a (slightly) more
1042 portable approach, use the :mod:`pty` module.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001043
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001044 .. availability:: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001045
Victor Stinnerdaf45552013-08-28 00:53:59 +02001046 .. versionchanged:: 3.4
1047 The new file descriptors are now non-inheritable.
1048
Georg Brandl116aa622007-08-15 14:28:22 +00001049
1050.. function:: pipe()
1051
Victor Stinnerdaf45552013-08-28 00:53:59 +02001052 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for
Victor Stinner05f31bf2013-11-06 01:48:45 +01001053 reading and writing, respectively. The new file descriptor is
Victor Stinnerdaf45552013-08-28 00:53:59 +02001054 :ref:`non-inheritable <fd_inheritance>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001055
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001056 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001057
Victor Stinnerdaf45552013-08-28 00:53:59 +02001058 .. versionchanged:: 3.4
1059 The new file descriptors are now non-inheritable.
1060
Georg Brandl116aa622007-08-15 14:28:22 +00001061
Charles-François Natali368f34b2011-06-06 19:49:47 +02001062.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +02001063
1064 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +02001065 *flags* can be constructed by ORing together one or more of these values:
1066 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +02001067 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
1068 respectively.
1069
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001070 .. availability:: some flavors of Unix.
Charles-François Natalidaafdd52011-05-29 20:07:40 +02001071
1072 .. versionadded:: 3.3
1073
1074
Ross Lagerwall7807c352011-03-17 20:20:30 +02001075.. function:: posix_fallocate(fd, offset, len)
1076
1077 Ensures that enough disk space is allocated for the file specified by *fd*
1078 starting from *offset* and continuing for *len* bytes.
1079
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001080 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001081
1082 .. versionadded:: 3.3
1083
1084
1085.. function:: posix_fadvise(fd, offset, len, advice)
1086
1087 Announces an intention to access data in a specific pattern thus allowing
1088 the kernel to make optimizations.
1089 The advice applies to the region of the file specified by *fd* starting at
1090 *offset* and continuing for *len* bytes.
1091 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
1092 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
1093 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
1094
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001095 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001096
1097 .. versionadded:: 3.3
1098
1099
1100.. data:: POSIX_FADV_NORMAL
1101 POSIX_FADV_SEQUENTIAL
1102 POSIX_FADV_RANDOM
1103 POSIX_FADV_NOREUSE
1104 POSIX_FADV_WILLNEED
1105 POSIX_FADV_DONTNEED
1106
1107 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
1108 the access pattern that is likely to be used.
1109
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001110 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001111
1112 .. versionadded:: 3.3
1113
1114
Pablo Galindo02e2a082018-05-31 00:00:04 +01001115.. function:: pread(fd, n, offset)
Ross Lagerwall7807c352011-03-17 20:20:30 +02001116
Pablo Galindo02e2a082018-05-31 00:00:04 +01001117 Read at most *n* bytes from file descriptor *fd* at a position of *offset*,
1118 leaving the file offset unchanged.
1119
1120 Return a bytestring containing the bytes read. If the end of the file
1121 referred to by *fd* has been reached, an empty bytes object is returned.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001122
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001123 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001124
1125 .. versionadded:: 3.3
1126
1127
Pablo Galindo02e2a082018-05-31 00:00:04 +01001128.. function:: preadv(fd, buffers, offset, flags=0)
1129
1130 Read from a file descriptor *fd* at a position of *offset* into mutable
1131 :term:`bytes-like objects <bytes-like object>` *buffers*, leaving the file
1132 offset unchanged. Transfer data into each buffer until it is full and then
1133 move on to the next buffer in the sequence to hold the rest of the data.
1134
1135 The flags argument contains a bitwise OR of zero or more of the following
1136 flags:
1137
1138 - :data:`RWF_HIPRI`
1139 - :data:`RWF_NOWAIT`
1140
1141 Return the total number of bytes actually read which can be less than the
1142 total capacity of all the objects.
1143
1144 The operating system may set a limit (:func:`sysconf` value
1145 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
1146
1147 Combine the functionality of :func:`os.readv` and :func:`os.pread`.
1148
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001149 .. availability:: Linux 2.6.30 and newer, FreeBSD 6.0 and newer,
1150 OpenBSD 2.7 and newer. Using flags requires Linux 4.6 or newer.
Pablo Galindo02e2a082018-05-31 00:00:04 +01001151
1152 .. versionadded:: 3.7
1153
1154
1155.. data:: RWF_NOWAIT
1156
1157 Do not wait for data which is not immediately available. If this flag is
1158 specified, the system call will return instantly if it would have to read
1159 data from the backing storage or wait for a lock.
1160
1161 If some data was successfully read, it will return the number of bytes read.
1162 If no bytes were read, it will return ``-1`` and set errno to
1163 :data:`errno.EAGAIN`.
1164
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001165 .. availability:: Linux 4.14 and newer.
Pablo Galindo02e2a082018-05-31 00:00:04 +01001166
1167 .. versionadded:: 3.7
1168
1169
1170.. data:: RWF_HIPRI
1171
1172 High priority read/write. Allows block-based filesystems to use polling
1173 of the device, which provides lower latency, but may use additional
1174 resources.
1175
1176 Currently, on Linux, this feature is usable only on a file descriptor opened
1177 using the :data:`O_DIRECT` flag.
1178
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001179 .. availability:: Linux 4.6 and newer.
Pablo Galindo02e2a082018-05-31 00:00:04 +01001180
1181 .. versionadded:: 3.7
1182
1183
Jesus Cea67503c52014-10-20 16:18:24 +02001184.. function:: pwrite(fd, str, offset)
Ross Lagerwall7807c352011-03-17 20:20:30 +02001185
Pablo Galindo02e2a082018-05-31 00:00:04 +01001186 Write the bytestring in *str* to file descriptor *fd* at position of
1187 *offset*, leaving the file offset unchanged.
1188
1189 Return the number of bytes actually written.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001190
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001191 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001192
1193 .. versionadded:: 3.3
1194
1195
Pablo Galindo4defba32018-01-27 16:16:37 +00001196.. function:: pwritev(fd, buffers, offset, flags=0)
1197
Pablo Galindo02e2a082018-05-31 00:00:04 +01001198 Write the *buffers* contents to file descriptor *fd* at a offset *offset*,
1199 leaving the file offset unchanged. *buffers* must be a sequence of
1200 :term:`bytes-like objects <bytes-like object>`. Buffers are processed in
1201 array order. Entire contents of the first buffer is written before
1202 proceeding to the second, and so on.
Pablo Galindo4defba32018-01-27 16:16:37 +00001203
Pablo Galindo02e2a082018-05-31 00:00:04 +01001204 The flags argument contains a bitwise OR of zero or more of the following
Pablo Galindo4defba32018-01-27 16:16:37 +00001205 flags:
1206
Pablo Galindo02e2a082018-05-31 00:00:04 +01001207 - :data:`RWF_DSYNC`
1208 - :data:`RWF_SYNC`
Pablo Galindo4defba32018-01-27 16:16:37 +00001209
Pablo Galindo02e2a082018-05-31 00:00:04 +01001210 Return the total number of bytes actually written.
Pablo Galindo4defba32018-01-27 16:16:37 +00001211
Pablo Galindo02e2a082018-05-31 00:00:04 +01001212 The operating system may set a limit (:func:`sysconf` value
1213 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
1214
1215 Combine the functionality of :func:`os.writev` and :func:`os.pwrite`.
1216
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001217 .. availability:: Linux 2.6.30 and newer, FreeBSD 6.0 and newer,
1218 OpenBSD 2.7 and newer. Using flags requires Linux 4.7 or newer.
Pablo Galindo4defba32018-01-27 16:16:37 +00001219
1220 .. versionadded:: 3.7
1221
Pablo Galindo02e2a082018-05-31 00:00:04 +01001222
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001223.. data:: RWF_DSYNC
1224
Pablo Galindo02e2a082018-05-31 00:00:04 +01001225 Provide a per-write equivalent of the :data:`O_DSYNC` ``open(2)`` flag. This
1226 flag effect applies only to the data range written by the system call.
Pablo Galindo4defba32018-01-27 16:16:37 +00001227
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001228 .. availability:: Linux 4.7 and newer.
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001229
Pablo Galindo4defba32018-01-27 16:16:37 +00001230 .. versionadded:: 3.7
1231
Pablo Galindo02e2a082018-05-31 00:00:04 +01001232
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001233.. data:: RWF_SYNC
1234
Pablo Galindo02e2a082018-05-31 00:00:04 +01001235 Provide a per-write equivalent of the :data:`O_SYNC` ``open(2)`` flag. This
1236 flag effect applies only to the data range written by the system call.
Pablo Galindo4defba32018-01-27 16:16:37 +00001237
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001238 .. availability:: Linux 4.7 and newer.
Pablo Galindod6ef6db2018-04-25 18:48:27 +01001239
Pablo Galindo4defba32018-01-27 16:16:37 +00001240 .. versionadded:: 3.7
1241
1242
Georg Brandl116aa622007-08-15 14:28:22 +00001243.. function:: read(fd, n)
1244
Pablo Galindo02e2a082018-05-31 00:00:04 +01001245 Read at most *n* bytes from file descriptor *fd*.
1246
1247 Return a bytestring containing the bytes read. If the end of the file
1248 referred to by *fd* has been reached, an empty bytes object is returned.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001249
Georg Brandl116aa622007-08-15 14:28:22 +00001250 .. note::
1251
1252 This function is intended for low-level I/O and must be applied to a file
Georg Brandlb2462e22012-06-24 13:24:56 +02001253 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a
1254 "file object" returned by the built-in function :func:`open` or by
1255 :func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its
1256 :meth:`~file.read` or :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +00001257
Victor Stinnera766ddf2015-03-26 23:50:57 +01001258 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001259 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001260 exception, the function now retries the system call instead of raising an
1261 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1262
Georg Brandl116aa622007-08-15 14:28:22 +00001263
Martin Panterbf19d162015-09-09 01:01:13 +00001264.. function:: sendfile(out, in, offset, count)
Martin Panter94994132015-09-09 05:29:24 +00001265 sendfile(out, in, offset, count, [headers], [trailers], flags=0)
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001266
Martin Panterbf19d162015-09-09 01:01:13 +00001267 Copy *count* bytes from file descriptor *in* to file descriptor *out*
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001268 starting at *offset*.
1269 Return the number of bytes sent. When EOF is reached return 0.
1270
1271 The first function notation is supported by all platforms that define
1272 :func:`sendfile`.
1273
1274 On Linux, if *offset* is given as ``None``, the bytes are read from the
1275 current position of *in* and the position of *in* is updated.
1276
1277 The second case may be used on Mac OS X and FreeBSD where *headers* and
1278 *trailers* are arbitrary sequences of buffers that are written before and
1279 after the data from *in* is written. It returns the same as the first case.
1280
Martin Panterbf19d162015-09-09 01:01:13 +00001281 On Mac OS X and FreeBSD, a value of 0 for *count* specifies to send until
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001282 the end of *in* is reached.
1283
Charles-Francois Natalia771a1b2013-05-01 15:12:20 +02001284 All platforms support sockets as *out* file descriptor, and some platforms
1285 allow other types (e.g. regular file, pipe) as well.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001286
Giampaolo Rodola'409569b2014-04-24 18:09:21 +02001287 Cross-platform applications should not use *headers*, *trailers* and *flags*
1288 arguments.
1289
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001290 .. availability:: Unix.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001291
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001292 .. note::
1293
Benjamin Peterson0ce95372014-06-15 18:30:27 -07001294 For a higher-level wrapper of :func:`sendfile`, see
Martin Panter3133a9f2015-09-11 23:44:18 +00001295 :meth:`socket.socket.sendfile`.
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001296
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001297 .. versionadded:: 3.3
1298
1299
Victor Stinner1db9e7b2014-07-29 22:32:47 +02001300.. function:: set_blocking(fd, blocking)
1301
1302 Set the blocking mode of the specified file descriptor. Set the
1303 :data:`O_NONBLOCK` flag if blocking is ``False``, clear the flag otherwise.
1304
1305 See also :func:`get_blocking` and :meth:`socket.socket.setblocking`.
1306
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001307 .. availability:: Unix.
Victor Stinner1db9e7b2014-07-29 22:32:47 +02001308
1309 .. versionadded:: 3.5
1310
1311
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001312.. data:: SF_NODISKIO
1313 SF_MNOWAIT
1314 SF_SYNC
1315
1316 Parameters to the :func:`sendfile` function, if the implementation supports
1317 them.
1318
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001319 .. availability:: Unix.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001320
1321 .. versionadded:: 3.3
1322
1323
Ross Lagerwall7807c352011-03-17 20:20:30 +02001324.. function:: readv(fd, buffers)
1325
Benjamin Petersone83ed432014-01-18 22:54:59 -05001326 Read from a file descriptor *fd* into a number of mutable :term:`bytes-like
Pablo Galindo02e2a082018-05-31 00:00:04 +01001327 objects <bytes-like object>` *buffers*. Transfer data into each buffer until
1328 it is full and then move on to the next buffer in the sequence to hold the
1329 rest of the data.
1330
1331 Return the total number of bytes actually read which can be less than the
1332 total capacity of all the objects.
1333
1334 The operating system may set a limit (:func:`sysconf` value
1335 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001336
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001337 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001338
1339 .. versionadded:: 3.3
1340
1341
Georg Brandl116aa622007-08-15 14:28:22 +00001342.. function:: tcgetpgrp(fd)
1343
1344 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001345 file descriptor as returned by :func:`os.open`).
1346
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001347 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001348
1349
1350.. function:: tcsetpgrp(fd, pg)
1351
1352 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001353 descriptor as returned by :func:`os.open`) to *pg*.
1354
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001355 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001356
1357
1358.. function:: ttyname(fd)
1359
1360 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001361 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001362 exception is raised.
1363
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001364 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001365
1366
1367.. function:: write(fd, str)
1368
Pablo Galindo02e2a082018-05-31 00:00:04 +01001369 Write the bytestring in *str* to file descriptor *fd*.
1370
1371 Return the number of bytes actually written.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001372
Georg Brandl116aa622007-08-15 14:28:22 +00001373 .. note::
1374
1375 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001376 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001377 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001378 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1379 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001380
Victor Stinnera766ddf2015-03-26 23:50:57 +01001381 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001382 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001383 exception, the function now retries the system call instead of raising an
1384 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1385
Georg Brandl8569e582010-05-19 20:57:08 +00001386
Ross Lagerwall7807c352011-03-17 20:20:30 +02001387.. function:: writev(fd, buffers)
1388
Pablo Galindo02e2a082018-05-31 00:00:04 +01001389 Write the contents of *buffers* to file descriptor *fd*. *buffers* must be
1390 a sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are
1391 processed in array order. Entire contents of the first buffer is written
1392 before proceeding to the second, and so on.
Senthil Kumarand37de3c2016-06-18 11:21:50 -07001393
Pablo Galindo02e2a082018-05-31 00:00:04 +01001394 Returns the total number of bytes actually written.
1395
1396 The operating system may set a limit (:func:`sysconf` value
1397 ``'SC_IOV_MAX'``) on the number of buffers that can be used.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001398
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001399 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001400
1401 .. versionadded:: 3.3
1402
1403
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001404.. _terminal-size:
1405
1406Querying the size of a terminal
1407~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1408
1409.. versionadded:: 3.3
1410
1411.. function:: get_terminal_size(fd=STDOUT_FILENO)
1412
1413 Return the size of the terminal window as ``(columns, lines)``,
1414 tuple of type :class:`terminal_size`.
1415
1416 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1417 output) specifies which file descriptor should be queried.
1418
1419 If the file descriptor is not connected to a terminal, an :exc:`OSError`
Andrew Svetlov5b898402012-12-18 21:26:36 +02001420 is raised.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001421
1422 :func:`shutil.get_terminal_size` is the high-level function which
1423 should normally be used, ``os.get_terminal_size`` is the low-level
1424 implementation.
1425
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001426 .. availability:: Unix, Windows.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001427
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001428.. class:: terminal_size
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001429
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001430 A subclass of tuple, holding ``(columns, lines)`` of the terminal window size.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001431
1432 .. attribute:: columns
1433
1434 Width of the terminal window in characters.
1435
1436 .. attribute:: lines
1437
1438 Height of the terminal window in characters.
1439
1440
Victor Stinnerdaf45552013-08-28 00:53:59 +02001441.. _fd_inheritance:
1442
1443Inheritance of File Descriptors
1444~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1445
Georg Brandl5642ff92013-09-15 10:37:57 +02001446.. versionadded:: 3.4
1447
1448A file descriptor has an "inheritable" flag which indicates if the file descriptor
1449can be inherited by child processes. Since Python 3.4, file descriptors
Victor Stinnerdaf45552013-08-28 00:53:59 +02001450created by Python are non-inheritable by default.
1451
1452On UNIX, non-inheritable file descriptors are closed in child processes at the
1453execution of a new program, other file descriptors are inherited.
1454
1455On Windows, non-inheritable handles and file descriptors are closed in child
Georg Brandl5642ff92013-09-15 10:37:57 +02001456processes, except for standard streams (file descriptors 0, 1 and 2: stdin, stdout
Serhiy Storchaka690a6a92013-10-13 20:13:37 +03001457and stderr), which are always inherited. Using :func:`spawn\* <spawnl>` functions,
Victor Stinnerdaf45552013-08-28 00:53:59 +02001458all inheritable handles and all inheritable file descriptors are inherited.
1459Using the :mod:`subprocess` module, all file descriptors except standard
Georg Brandl5642ff92013-09-15 10:37:57 +02001460streams are closed, and inheritable handles are only inherited if the
1461*close_fds* parameter is ``False``.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001462
1463.. function:: get_inheritable(fd)
1464
Georg Brandl5642ff92013-09-15 10:37:57 +02001465 Get the "inheritable" flag of the specified file descriptor (a boolean).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001466
1467.. function:: set_inheritable(fd, inheritable)
1468
Georg Brandl5642ff92013-09-15 10:37:57 +02001469 Set the "inheritable" flag of the specified file descriptor.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001470
1471.. function:: get_handle_inheritable(handle)
1472
Georg Brandl5642ff92013-09-15 10:37:57 +02001473 Get the "inheritable" flag of the specified handle (a boolean).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001474
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001475 .. availability:: Windows.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001476
1477.. function:: set_handle_inheritable(handle, inheritable)
1478
Georg Brandl5642ff92013-09-15 10:37:57 +02001479 Set the "inheritable" flag of the specified handle.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001480
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001481 .. availability:: Windows.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001482
1483
Georg Brandl116aa622007-08-15 14:28:22 +00001484.. _os-file-dir:
1485
1486Files and Directories
1487---------------------
1488
Georg Brandl50c40002012-06-24 11:45:20 +02001489On some Unix platforms, many of these functions support one or more of these
1490features:
1491
1492.. _path_fd:
1493
Larry Hastings77892dc2012-06-25 03:27:33 -07001494* **specifying a file descriptor:**
Cheryl Sabellae1521692019-05-06 08:39:13 -04001495 Normally the *path* argument provided to functions in the :mod:`os` module
1496 must be a string specifying a file path. However, some functions now
1497 alternatively accept an open file descriptor for their *path* argument.
1498 The function will then operate on the file referred to by the descriptor.
1499 (For POSIX systems, Python will call the variant of the function prefixed
1500 with ``f`` (e.g. call ``fchdir`` instead of ``chdir``).)
Georg Brandl50c40002012-06-24 11:45:20 +02001501
Cheryl Sabellae1521692019-05-06 08:39:13 -04001502 You can check whether or not *path* can be specified as a file descriptor
1503 for a particular function on your platform using :data:`os.supports_fd`.
1504 If this functionality is unavailable, using it will raise a
1505 :exc:`NotImplementedError`.
Georg Brandl50c40002012-06-24 11:45:20 +02001506
Cheryl Sabellae1521692019-05-06 08:39:13 -04001507 If the function also supports *dir_fd* or *follow_symlinks* arguments, it's
Georg Brandl50c40002012-06-24 11:45:20 +02001508 an error to specify one of those when supplying *path* as a file descriptor.
1509
1510.. _dir_fd:
1511
Larry Hastings77892dc2012-06-25 03:27:33 -07001512* **paths relative to directory descriptors:** If *dir_fd* is not ``None``, it
Georg Brandl50c40002012-06-24 11:45:20 +02001513 should be a file descriptor referring to a directory, and the path to operate
1514 on should be relative; path will then be relative to that directory. If the
Georg Brandlaceaf902012-06-25 08:33:56 +02001515 path is absolute, *dir_fd* is ignored. (For POSIX systems, Python will call
Cheryl Sabellae1521692019-05-06 08:39:13 -04001516 the variant of the function with an ``at`` suffix and possibly prefixed with
1517 ``f`` (e.g. call ``faccessat`` instead of ``access``).
Georg Brandl50c40002012-06-24 11:45:20 +02001518
Cheryl Sabellae1521692019-05-06 08:39:13 -04001519 You can check whether or not *dir_fd* is supported for a particular function
1520 on your platform using :data:`os.supports_dir_fd`. If it's unavailable,
1521 using it will raise a :exc:`NotImplementedError`.
Georg Brandl50c40002012-06-24 11:45:20 +02001522
1523.. _follow_symlinks:
1524
Larry Hastings77892dc2012-06-25 03:27:33 -07001525* **not following symlinks:** If *follow_symlinks* is
Georg Brandl50c40002012-06-24 11:45:20 +02001526 ``False``, and the last element of the path to operate on is a symbolic link,
Cheryl Sabellae1521692019-05-06 08:39:13 -04001527 the function will operate on the symbolic link itself rather than the file
1528 pointed to by the link. (For POSIX systems, Python will call the ``l...``
1529 variant of the function.)
Georg Brandl50c40002012-06-24 11:45:20 +02001530
Cheryl Sabellae1521692019-05-06 08:39:13 -04001531 You can check whether or not *follow_symlinks* is supported for a particular
1532 function on your platform using :data:`os.supports_follow_symlinks`.
1533 If it's unavailable, using it will raise a :exc:`NotImplementedError`.
Georg Brandl50c40002012-06-24 11:45:20 +02001534
1535
1536
Larry Hastings9cf065c2012-06-22 16:30:09 -07001537.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001538
1539 Use the real uid/gid to test for access to *path*. Note that most operations
1540 will use the effective uid/gid, therefore this routine can be used in a
1541 suid/sgid environment to test if the invoking user has the specified access to
1542 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1543 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1544 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1545 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001546 information.
1547
Georg Brandl50c40002012-06-24 11:45:20 +02001548 This function can support specifying :ref:`paths relative to directory
1549 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001550
1551 If *effective_ids* is ``True``, :func:`access` will perform its access
1552 checks using the effective uid/gid instead of the real uid/gid.
1553 *effective_ids* may not be supported on your platform; you can check whether
1554 or not it is available using :data:`os.supports_effective_ids`. If it is
1555 unavailable, using it will raise a :exc:`NotImplementedError`.
1556
Georg Brandl116aa622007-08-15 14:28:22 +00001557 .. note::
1558
Georg Brandl502d9a52009-07-26 15:02:41 +00001559 Using :func:`access` to check if a user is authorized to e.g. open a file
1560 before actually doing so using :func:`open` creates a security hole,
1561 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001562 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1563 techniques. For example::
1564
1565 if os.access("myfile", os.R_OK):
1566 with open("myfile") as fp:
1567 return fp.read()
1568 return "some default data"
1569
1570 is better written as::
1571
1572 try:
1573 fp = open("myfile")
Antoine Pitrou62ab10a02011-10-12 20:10:51 +02001574 except PermissionError:
1575 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001576 else:
1577 with fp:
1578 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001579
1580 .. note::
1581
1582 I/O operations may fail even when :func:`access` indicates that they would
1583 succeed, particularly for operations on network filesystems which may have
1584 permissions semantics beyond the usual POSIX permission-bit model.
1585
Larry Hastings9cf065c2012-06-22 16:30:09 -07001586 .. versionchanged:: 3.3
1587 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1588
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001589 .. versionchanged:: 3.6
1590 Accepts a :term:`path-like object`.
1591
Georg Brandl116aa622007-08-15 14:28:22 +00001592
1593.. data:: F_OK
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001594 R_OK
1595 W_OK
1596 X_OK
Georg Brandl116aa622007-08-15 14:28:22 +00001597
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001598 Values to pass as the *mode* parameter of :func:`access` to test the
1599 existence, readability, writability and executability of *path*,
1600 respectively.
Georg Brandl116aa622007-08-15 14:28:22 +00001601
1602
1603.. function:: chdir(path)
1604
1605 .. index:: single: directory; changing
1606
Benjamin Petersonf650e462010-05-06 23:03:05 +00001607 Change the current working directory to *path*.
1608
Larry Hastings77892dc2012-06-25 03:27:33 -07001609 This function can support :ref:`specifying a file descriptor <path_fd>`. The
Georg Brandl50c40002012-06-24 11:45:20 +02001610 descriptor must refer to an opened directory, not an open file.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001611
Miss Islington (bot)e414aa92019-07-06 19:50:48 -07001612 This function can raise :exc:`OSError` and subclasses such as
Miss Islington (bot)4e6bfc42019-07-06 19:18:50 -07001613 :exc:`FileNotFoundError`, :exc:`PermissionError`, and :exc:`NotADirectoryError`.
1614
Steve Dowera00b5be2020-02-13 08:30:27 +00001615 .. audit-event:: os.chdir path os.chdir
1616
Larry Hastings9cf065c2012-06-22 16:30:09 -07001617 .. versionadded:: 3.3
1618 Added support for specifying *path* as a file descriptor
Georg Brandl50c40002012-06-24 11:45:20 +02001619 on some platforms.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001620
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001621 .. versionchanged:: 3.6
1622 Accepts a :term:`path-like object`.
1623
Georg Brandl116aa622007-08-15 14:28:22 +00001624
Larry Hastings9cf065c2012-06-22 16:30:09 -07001625.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001626
1627 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1628 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1629
R David Murray30178062011-03-10 17:18:33 -05001630 * :data:`stat.UF_NODUMP`
1631 * :data:`stat.UF_IMMUTABLE`
1632 * :data:`stat.UF_APPEND`
1633 * :data:`stat.UF_OPAQUE`
1634 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001635 * :data:`stat.UF_COMPRESSED`
1636 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001637 * :data:`stat.SF_ARCHIVED`
1638 * :data:`stat.SF_IMMUTABLE`
1639 * :data:`stat.SF_APPEND`
1640 * :data:`stat.SF_NOUNLINK`
1641 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001642
Georg Brandl50c40002012-06-24 11:45:20 +02001643 This function can support :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001644
Steve Dowera00b5be2020-02-13 08:30:27 +00001645 .. audit-event:: os.chflags path,flags os.chflags
1646
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001647 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001648
Larry Hastings9cf065c2012-06-22 16:30:09 -07001649 .. versionadded:: 3.3
1650 The *follow_symlinks* argument.
1651
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001652 .. versionchanged:: 3.6
1653 Accepts a :term:`path-like object`.
1654
Georg Brandl116aa622007-08-15 14:28:22 +00001655
Larry Hastings9cf065c2012-06-22 16:30:09 -07001656.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001657
1658 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001659 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001660 combinations of them:
1661
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001662 * :data:`stat.S_ISUID`
1663 * :data:`stat.S_ISGID`
1664 * :data:`stat.S_ENFMT`
1665 * :data:`stat.S_ISVTX`
1666 * :data:`stat.S_IREAD`
1667 * :data:`stat.S_IWRITE`
1668 * :data:`stat.S_IEXEC`
1669 * :data:`stat.S_IRWXU`
1670 * :data:`stat.S_IRUSR`
1671 * :data:`stat.S_IWUSR`
1672 * :data:`stat.S_IXUSR`
1673 * :data:`stat.S_IRWXG`
1674 * :data:`stat.S_IRGRP`
1675 * :data:`stat.S_IWGRP`
1676 * :data:`stat.S_IXGRP`
1677 * :data:`stat.S_IRWXO`
1678 * :data:`stat.S_IROTH`
1679 * :data:`stat.S_IWOTH`
1680 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001681
Georg Brandl50c40002012-06-24 11:45:20 +02001682 This function can support :ref:`specifying a file descriptor <path_fd>`,
1683 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1684 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001685
Georg Brandl116aa622007-08-15 14:28:22 +00001686 .. note::
1687
Georg Brandl50c40002012-06-24 11:45:20 +02001688 Although Windows supports :func:`chmod`, you can only set the file's
1689 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1690 constants or a corresponding integer value). All other bits are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001691
Steve Dowera00b5be2020-02-13 08:30:27 +00001692 .. audit-event:: os.chmod path,mode,dir_fd os.chmod
1693
Larry Hastings9cf065c2012-06-22 16:30:09 -07001694 .. versionadded:: 3.3
1695 Added support for specifying *path* as an open file descriptor,
1696 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001697
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001698 .. versionchanged:: 3.6
1699 Accepts a :term:`path-like object`.
1700
Larry Hastings9cf065c2012-06-22 16:30:09 -07001701
1702.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001703
Georg Brandl50c40002012-06-24 11:45:20 +02001704 Change the owner and group id of *path* to the numeric *uid* and *gid*. To
1705 leave one of the ids unchanged, set it to -1.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001706
Georg Brandl50c40002012-06-24 11:45:20 +02001707 This function can support :ref:`specifying a file descriptor <path_fd>`,
1708 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1709 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001710
Sandro Tosid902a142011-08-22 23:28:27 +02001711 See :func:`shutil.chown` for a higher-level function that accepts names in
1712 addition to numeric ids.
1713
Steve Dowera00b5be2020-02-13 08:30:27 +00001714 .. audit-event:: os.chown path,uid,gid,dir_fd os.chown
1715
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001716 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001717
Larry Hastings9cf065c2012-06-22 16:30:09 -07001718 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04001719 Added support for specifying *path* as an open file descriptor,
Larry Hastings9cf065c2012-06-22 16:30:09 -07001720 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001721
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001722 .. versionchanged:: 3.6
1723 Supports a :term:`path-like object`.
1724
Benjamin Peterson799bd802011-08-31 22:15:17 -04001725
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001726.. function:: chroot(path)
1727
Georg Brandl8a5555f2012-06-24 13:29:09 +02001728 Change the root directory of the current process to *path*.
1729
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001730 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001731
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001732 .. versionchanged:: 3.6
1733 Accepts a :term:`path-like object`.
1734
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001735
1736.. function:: fchdir(fd)
1737
1738 Change the current working directory to the directory represented by the file
1739 descriptor *fd*. The descriptor must refer to an opened directory, not an
Georg Brandl4d399a42012-06-25 07:40:32 +02001740 open file. As of Python 3.3, this is equivalent to ``os.chdir(fd)``.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001741
Steve Dowera00b5be2020-02-13 08:30:27 +00001742 .. audit-event:: os.chdir path os.fchdir
1743
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001744 .. availability:: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001745
1746
1747.. function:: getcwd()
1748
1749 Return a string representing the current working directory.
1750
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001751
1752.. function:: getcwdb()
1753
1754 Return a bytestring representing the current working directory.
1755
Miss Islington (bot)63429c82019-06-26 09:14:30 -07001756 .. versionchanged:: 3.8
1757 The function now uses the UTF-8 encoding on Windows, rather than the ANSI
1758 code page: see :pep:`529` for the rationale. The function is no longer
1759 deprecated on Windows.
1760
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001761
Georg Brandl116aa622007-08-15 14:28:22 +00001762.. function:: lchflags(path, flags)
1763
Georg Brandl50c40002012-06-24 11:45:20 +02001764 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do
Georg Brandl4d399a42012-06-25 07:40:32 +02001765 not follow symbolic links. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001766 ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001767
Steve Dowera00b5be2020-02-13 08:30:27 +00001768 .. audit-event:: os.chflags path,flags os.lchflags
1769
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001770 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001771
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001772 .. versionchanged:: 3.6
1773 Accepts a :term:`path-like object`.
1774
Georg Brandl116aa622007-08-15 14:28:22 +00001775
Christian Heimes93852662007-12-01 12:22:32 +00001776.. function:: lchmod(path, mode)
1777
1778 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
Georg Brandl50c40002012-06-24 11:45:20 +02001779 affects the symlink rather than the target. See the docs for :func:`chmod`
Georg Brandl4d399a42012-06-25 07:40:32 +02001780 for possible values of *mode*. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001781 ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001782
Steve Dowera00b5be2020-02-13 08:30:27 +00001783 .. audit-event:: os.chmod path,mode,dir_fd os.lchmod
1784
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001785 .. availability:: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001786
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001787 .. versionchanged:: 3.6
1788 Accepts a :term:`path-like object`.
Christian Heimes93852662007-12-01 12:22:32 +00001789
Georg Brandl116aa622007-08-15 14:28:22 +00001790.. function:: lchown(path, uid, gid)
1791
Georg Brandl50c40002012-06-24 11:45:20 +02001792 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandl4d399a42012-06-25 07:40:32 +02001793 function will not follow symbolic links. As of Python 3.3, this is equivalent
Georg Brandlb9df00c2012-06-24 12:38:14 +02001794 to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001795
Steve Dowera00b5be2020-02-13 08:30:27 +00001796 .. audit-event:: os.chown path,uid,gid,dir_fd os.lchown
1797
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001798 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001799
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001800 .. versionchanged:: 3.6
1801 Accepts a :term:`path-like object`.
1802
Georg Brandl116aa622007-08-15 14:28:22 +00001803
Larry Hastings9cf065c2012-06-22 16:30:09 -07001804.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001805
Larry Hastings9cf065c2012-06-22 16:30:09 -07001806 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001807
Georg Brandlaceaf902012-06-25 08:33:56 +02001808 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1809 supply :ref:`paths relative to directory descriptors <dir_fd>`, and :ref:`not
1810 following symlinks <follow_symlinks>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001811
Steve Dowera00b5be2020-02-13 08:30:27 +00001812 .. audit-event:: os.link src,dst,src_dir_fd,dst_dir_fd os.link
1813
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001814 .. availability:: Unix, Windows.
Brian Curtin1b9df392010-11-24 20:24:31 +00001815
1816 .. versionchanged:: 3.2
1817 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001818
Larry Hastings9cf065c2012-06-22 16:30:09 -07001819 .. versionadded:: 3.3
1820 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1821
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001822 .. versionchanged:: 3.6
1823 Accepts a :term:`path-like object` for *src* and *dst*.
1824
Georg Brandl116aa622007-08-15 14:28:22 +00001825
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001826.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001827
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001828 Return a list containing the names of the entries in the directory given by
Larry Hastingsfdaea062012-06-25 04:42:23 -07001829 *path*. The list is in arbitrary order, and does not include the special
1830 entries ``'.'`` and ``'..'`` even if they are present in the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001831
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001832 *path* may be a :term:`path-like object`. If *path* is of type ``bytes``
1833 (directly or indirectly through the :class:`PathLike` interface),
1834 the filenames returned will also be of type ``bytes``;
Larry Hastingsfdaea062012-06-25 04:42:23 -07001835 in all other circumstances, they will be of type ``str``.
Georg Brandl116aa622007-08-15 14:28:22 +00001836
Larry Hastings77892dc2012-06-25 03:27:33 -07001837 This function can also support :ref:`specifying a file descriptor
1838 <path_fd>`; the file descriptor must refer to a directory.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001839
Miss Islington (bot)4fee28a2019-06-27 11:07:16 -07001840 .. audit-event:: os.listdir path os.listdir
Miss Islington (bot)8763d432019-06-24 09:09:47 -07001841
Larry Hastingsfdaea062012-06-25 04:42:23 -07001842 .. note::
1843 To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`.
1844
Victor Stinner6036e442015-03-08 01:58:04 +01001845 .. seealso::
1846
Victor Stinner51b58322015-05-15 09:12:58 +02001847 The :func:`scandir` function returns directory entries along with
1848 file attribute information, giving better performance for many
1849 common use cases.
Victor Stinner6036e442015-03-08 01:58:04 +01001850
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001851 .. versionchanged:: 3.2
1852 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001853
Larry Hastings9cf065c2012-06-22 16:30:09 -07001854 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04001855 Added support for specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001856
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001857 .. versionchanged:: 3.6
1858 Accepts a :term:`path-like object`.
1859
Georg Brandl50c40002012-06-24 11:45:20 +02001860
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001861.. function:: lstat(path, \*, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001862
R. David Murray7b1aae92011-01-24 19:34:58 +00001863 Perform the equivalent of an :c:func:`lstat` system call on the given path.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001864 Similar to :func:`~os.stat`, but does not follow symbolic links. Return a
1865 :class:`stat_result` object.
1866
1867 On platforms that do not support symbolic links, this is an alias for
1868 :func:`~os.stat`.
1869
1870 As of Python 3.3, this is equivalent to ``os.stat(path, dir_fd=dir_fd,
1871 follow_symlinks=False)``.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001872
Georg Brandl50c40002012-06-24 11:45:20 +02001873 This function can also support :ref:`paths relative to directory descriptors
1874 <dir_fd>`.
Brian Curtinc7395692010-07-09 15:15:09 +00001875
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001876 .. seealso::
1877
Berker Peksag2034caa2015-04-27 13:53:28 +03001878 The :func:`.stat` function.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001879
Georg Brandlb3823372010-07-10 08:58:37 +00001880 .. versionchanged:: 3.2
1881 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001882
Larry Hastings9cf065c2012-06-22 16:30:09 -07001883 .. versionchanged:: 3.3
1884 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001885
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001886 .. versionchanged:: 3.6
1887 Accepts a :term:`path-like object` for *src* and *dst*.
1888
Steve Dower9eb3d542019-08-21 15:52:42 -07001889 .. versionchanged:: 3.8
1890 On Windows, now opens reparse points that represent another path
1891 (name surrogates), including symbolic links and directory junctions.
1892 Other kinds of reparse points are resolved by the operating system as
1893 for :func:`~os.stat`.
1894
Ross Lagerwall7807c352011-03-17 20:20:30 +02001895
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001896.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
1897
1898 Create a directory named *path* with numeric mode *mode*.
1899
Tommy Beadle63b91e52016-06-02 15:41:20 -04001900 If the directory already exists, :exc:`FileExistsError` is raised.
1901
1902 .. _mkdir_modebits:
1903
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001904 On some systems, *mode* is ignored. Where it is used, the current umask
Tommy Beadle63b91e52016-06-02 15:41:20 -04001905 value is first masked out. If bits other than the last 9 (i.e. the last 3
1906 digits of the octal representation of the *mode*) are set, their meaning is
1907 platform-dependent. On some platforms, they are ignored and you should call
1908 :func:`chmod` explicitly to set them.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001909
1910 This function can also support :ref:`paths relative to directory descriptors
1911 <dir_fd>`.
1912
1913 It is also possible to create temporary directories; see the
1914 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1915
Steve Dowera00b5be2020-02-13 08:30:27 +00001916 .. audit-event:: os.mkdir path,mode,dir_fd os.mkdir
1917
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001918 .. versionadded:: 3.3
1919 The *dir_fd* argument.
1920
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001921 .. versionchanged:: 3.6
1922 Accepts a :term:`path-like object`.
1923
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001924
Zachary Warea22ae212014-03-20 09:42:01 -05001925.. function:: makedirs(name, mode=0o777, exist_ok=False)
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001926
1927 .. index::
1928 single: directory; creating
1929 single: UNC paths; and os.makedirs()
1930
1931 Recursive directory creation function. Like :func:`mkdir`, but makes all
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001932 intermediate-level directories needed to contain the leaf directory.
1933
Serhiy Storchakae304e332017-03-24 13:27:42 +02001934 The *mode* parameter is passed to :func:`mkdir` for creating the leaf
1935 directory; see :ref:`the mkdir() description <mkdir_modebits>` for how it
1936 is interpreted. To set the file permission bits of any newly-created parent
1937 directories you can set the umask before invoking :func:`makedirs`. The
1938 file permission bits of existing parent directories are not changed.
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001939
Miss Islington (bot)c3ef1a52019-07-05 01:48:21 -07001940 If *exist_ok* is ``False`` (the default), an :exc:`FileExistsError` is
1941 raised if the target directory already exists.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001942
1943 .. note::
1944
1945 :func:`makedirs` will become confused if the path elements to create
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001946 include :data:`pardir` (eg. ".." on UNIX systems).
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001947
1948 This function handles UNC paths correctly.
1949
Steve Dowera00b5be2020-02-13 08:30:27 +00001950 .. audit-event:: os.mkdir path,mode,dir_fd os.makedirs
1951
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001952 .. versionadded:: 3.2
1953 The *exist_ok* parameter.
1954
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04001955 .. versionchanged:: 3.4.1
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001956
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04001957 Before Python 3.4.1, if *exist_ok* was ``True`` and the directory existed,
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001958 :func:`makedirs` would still raise an error if *mode* did not match the
1959 mode of the existing directory. Since this behavior was impossible to
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04001960 implement safely, it was removed in Python 3.4.1. See :issue:`21082`.
Benjamin Peterson4717e212014-04-01 19:17:57 -04001961
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001962 .. versionchanged:: 3.6
1963 Accepts a :term:`path-like object`.
1964
Serhiy Storchakae304e332017-03-24 13:27:42 +02001965 .. versionchanged:: 3.7
1966 The *mode* argument no longer affects the file permission bits of
1967 newly-created intermediate-level directories.
1968
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001969
Larry Hastings9cf065c2012-06-22 16:30:09 -07001970.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001971
Larry Hastings9cf065c2012-06-22 16:30:09 -07001972 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1973 The current umask value is first masked out from the mode.
1974
Georg Brandl50c40002012-06-24 11:45:20 +02001975 This function can also support :ref:`paths relative to directory descriptors
1976 <dir_fd>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001977
1978 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1979 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1980 rendezvous between "client" and "server" type processes: the server opens the
1981 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1982 doesn't open the FIFO --- it just creates the rendezvous point.
1983
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001984 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001985
Larry Hastings9cf065c2012-06-22 16:30:09 -07001986 .. versionadded:: 3.3
1987 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001988
Brett Cannon6fa7aad2016-09-06 15:55:02 -07001989 .. versionchanged:: 3.6
1990 Accepts a :term:`path-like object`.
1991
Larry Hastings9cf065c2012-06-22 16:30:09 -07001992
Martin Panterbf19d162015-09-09 01:01:13 +00001993.. function:: mknod(path, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001994
1995 Create a filesystem node (file, device special file or named pipe) named
Martin Panterbf19d162015-09-09 01:01:13 +00001996 *path*. *mode* specifies both the permissions to use and the type of node
Georg Brandl18244152009-09-02 20:34:52 +00001997 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1998 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1999 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
2000 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00002001 :func:`os.makedev`), otherwise it is ignored.
2002
Georg Brandl50c40002012-06-24 11:45:20 +02002003 This function can also support :ref:`paths relative to directory descriptors
2004 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002005
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002006 .. availability:: Unix.
Berker Peksag6129e142016-09-26 22:50:11 +03002007
Larry Hastings9cf065c2012-06-22 16:30:09 -07002008 .. versionadded:: 3.3
2009 The *dir_fd* argument.
2010
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002011 .. versionchanged:: 3.6
2012 Accepts a :term:`path-like object`.
2013
Georg Brandl116aa622007-08-15 14:28:22 +00002014
2015.. function:: major(device)
2016
Christian Heimesfaf2f632008-01-06 16:59:19 +00002017 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00002018 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00002019
Georg Brandl116aa622007-08-15 14:28:22 +00002020
2021.. function:: minor(device)
2022
Christian Heimesfaf2f632008-01-06 16:59:19 +00002023 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00002024 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00002025
Georg Brandl116aa622007-08-15 14:28:22 +00002026
2027.. function:: makedev(major, minor)
2028
Christian Heimesfaf2f632008-01-06 16:59:19 +00002029 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00002030
Georg Brandl116aa622007-08-15 14:28:22 +00002031
Georg Brandl116aa622007-08-15 14:28:22 +00002032.. function:: pathconf(path, name)
2033
2034 Return system configuration information relevant to a named file. *name*
2035 specifies the configuration value to retrieve; it may be a string which is the
2036 name of a defined system value; these names are specified in a number of
2037 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
2038 additional names as well. The names known to the host operating system are
2039 given in the ``pathconf_names`` dictionary. For configuration variables not
2040 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00002041
2042 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
2043 specific value for *name* is not supported by the host system, even if it is
2044 included in ``pathconf_names``, an :exc:`OSError` is raised with
2045 :const:`errno.EINVAL` for the error number.
2046
Larry Hastings77892dc2012-06-25 03:27:33 -07002047 This function can support :ref:`specifying a file descriptor
Georg Brandl306336b2012-06-24 12:55:33 +02002048 <path_fd>`.
2049
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002050 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002051
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002052 .. versionchanged:: 3.6
2053 Accepts a :term:`path-like object`.
2054
Georg Brandl116aa622007-08-15 14:28:22 +00002055
2056.. data:: pathconf_names
2057
2058 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
2059 the integer values defined for those names by the host operating system. This
Georg Brandl8a5555f2012-06-24 13:29:09 +02002060 can be used to determine the set of names known to the system.
2061
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002062 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002063
2064
Larry Hastings9cf065c2012-06-22 16:30:09 -07002065.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002066
2067 Return a string representing the path to which the symbolic link points. The
Georg Brandl50c40002012-06-24 11:45:20 +02002068 result may be either an absolute or relative pathname; if it is relative, it
2069 may be converted to an absolute pathname using
2070 ``os.path.join(os.path.dirname(path), result)``.
Georg Brandl116aa622007-08-15 14:28:22 +00002071
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002072 If the *path* is a string object (directly or indirectly through a
2073 :class:`PathLike` interface), the result will also be a string object,
Martin Panter6245cb32016-04-15 02:14:19 +00002074 and the call may raise a UnicodeDecodeError. If the *path* is a bytes
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002075 object (direct or indirectly), the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00002076
Georg Brandl50c40002012-06-24 11:45:20 +02002077 This function can also support :ref:`paths relative to directory descriptors
2078 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002079
Steve Dower9eb3d542019-08-21 15:52:42 -07002080 When trying to resolve a path that may contain links, use
2081 :func:`~os.path.realpath` to properly handle recursion and platform
2082 differences.
2083
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002084 .. availability:: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002085
Georg Brandlb3823372010-07-10 08:58:37 +00002086 .. versionchanged:: 3.2
2087 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002088
Larry Hastings9cf065c2012-06-22 16:30:09 -07002089 .. versionadded:: 3.3
2090 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00002091
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002092 .. versionchanged:: 3.6
Berker Peksage0b5b202018-08-15 13:03:41 +03002093 Accepts a :term:`path-like object` on Unix.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002094
Berker Peksage0b5b202018-08-15 13:03:41 +03002095 .. versionchanged:: 3.8
2096 Accepts a :term:`path-like object` and a bytes object on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002097
Steve Dower9eb3d542019-08-21 15:52:42 -07002098 .. versionchanged:: 3.8
2099 Added support for directory junctions, and changed to return the
2100 substitution path (which typically includes ``\\?\`` prefix) rather
2101 than the optional "print name" field that was previously returned.
2102
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002103.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002104
Miss Islington (bot)c3ef1a52019-07-05 01:48:21 -07002105 Remove (delete) the file *path*. If *path* is a directory, an
2106 :exc:`IsADirectoryError` is raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002107
Georg Brandl50c40002012-06-24 11:45:20 +02002108 This function can support :ref:`paths relative to directory descriptors
2109 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002110
2111 On Windows, attempting to remove a file that is in use causes an exception to
2112 be raised; on Unix, the directory entry is removed but the storage allocated
2113 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002114
Brett Cannon05039172015-12-28 17:28:19 -08002115 This function is semantically identical to :func:`unlink`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002116
Steve Dowera00b5be2020-02-13 08:30:27 +00002117 .. audit-event:: os.remove path,dir_fd os.remove
2118
Larry Hastings9cf065c2012-06-22 16:30:09 -07002119 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002120 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002121
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002122 .. versionchanged:: 3.6
2123 Accepts a :term:`path-like object`.
2124
Georg Brandl116aa622007-08-15 14:28:22 +00002125
Zachary Warea22ae212014-03-20 09:42:01 -05002126.. function:: removedirs(name)
Georg Brandl116aa622007-08-15 14:28:22 +00002127
2128 .. index:: single: directory; deleting
2129
Christian Heimesfaf2f632008-01-06 16:59:19 +00002130 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00002131 leaf directory is successfully removed, :func:`removedirs` tries to
2132 successively remove every parent directory mentioned in *path* until an error
2133 is raised (which is ignored, because it generally means that a parent directory
2134 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
2135 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
2136 they are empty. Raises :exc:`OSError` if the leaf directory could not be
2137 successfully removed.
2138
Steve Dowera00b5be2020-02-13 08:30:27 +00002139 .. audit-event:: os.remove path,dir_fd os.removedirs
2140
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002141 .. versionchanged:: 3.6
2142 Accepts a :term:`path-like object`.
2143
Georg Brandl116aa622007-08-15 14:28:22 +00002144
Larry Hastings9cf065c2012-06-22 16:30:09 -07002145.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002146
Miss Islington (bot)c3ef1a52019-07-05 01:48:21 -07002147 Rename the file or directory *src* to *dst*. If *dst* exists, the operation
2148 will fail with an :exc:`OSError` subclass in a number of cases:
2149
2150 On Windows, if *dst* exists a :exc:`FileExistsError` is always raised.
2151
Miss Islington (bot)10717152019-07-11 10:45:36 -07002152 On Unix, if *src* is a file and *dst* is a directory or vice-versa, an
Miss Islington (bot)c3ef1a52019-07-05 01:48:21 -07002153 :exc:`IsADirectoryError` or a :exc:`NotADirectoryError` will be raised
2154 respectively. If both are directories and *dst* is empty, *dst* will be
2155 silently replaced. If *dst* is a non-empty directory, an :exc:`OSError`
2156 is raised. If both are files, *dst* it will be replaced silently if the user
2157 has permission. The operation may fail on some Unix flavors if *src* and
2158 *dst* are on different filesystems. If successful, the renaming will be an
2159 atomic operation (this is a POSIX requirement).
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002160
Georg Brandlaceaf902012-06-25 08:33:56 +02002161 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
2162 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002163
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002164 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002165
Steve Dowera00b5be2020-02-13 08:30:27 +00002166 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.rename
2167
Larry Hastings9cf065c2012-06-22 16:30:09 -07002168 .. versionadded:: 3.3
2169 The *src_dir_fd* and *dst_dir_fd* arguments.
2170
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002171 .. versionchanged:: 3.6
2172 Accepts a :term:`path-like object` for *src* and *dst*.
2173
Georg Brandl116aa622007-08-15 14:28:22 +00002174
2175.. function:: renames(old, new)
2176
2177 Recursive directory or file renaming function. Works like :func:`rename`, except
2178 creation of any intermediate directories needed to make the new pathname good is
2179 attempted first. After the rename, directories corresponding to rightmost path
2180 segments of the old name will be pruned away using :func:`removedirs`.
2181
Georg Brandl116aa622007-08-15 14:28:22 +00002182 .. note::
2183
2184 This function can fail with the new directory structure made if you lack
2185 permissions needed to remove the leaf directory or file.
2186
Steve Dowera00b5be2020-02-13 08:30:27 +00002187 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.renames
2188
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002189 .. versionchanged:: 3.6
2190 Accepts a :term:`path-like object` for *old* and *new*.
2191
Georg Brandl116aa622007-08-15 14:28:22 +00002192
Larry Hastings9cf065c2012-06-22 16:30:09 -07002193.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002194
2195 Rename the file or directory *src* to *dst*. If *dst* is a directory,
2196 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
2197 be replaced silently if the user has permission. The operation may fail
2198 if *src* and *dst* are on different filesystems. If successful,
2199 the renaming will be an atomic operation (this is a POSIX requirement).
2200
Georg Brandlaceaf902012-06-25 08:33:56 +02002201 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
2202 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002203
Steve Dowera00b5be2020-02-13 08:30:27 +00002204 .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.replace
2205
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002206 .. versionadded:: 3.3
2207
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002208 .. versionchanged:: 3.6
2209 Accepts a :term:`path-like object` for *src* and *dst*.
2210
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01002211
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002212.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002213
Miss Islington (bot)c3ef1a52019-07-05 01:48:21 -07002214 Remove (delete) the directory *path*. If the directory does not exist or is
2215 not empty, an :exc:`FileNotFoundError` or an :exc:`OSError` is raised
2216 respectively. In order to remove whole directory trees,
2217 :func:`shutil.rmtree` can be used.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002218
Georg Brandl50c40002012-06-24 11:45:20 +02002219 This function can support :ref:`paths relative to directory descriptors
2220 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002221
Steve Dowera00b5be2020-02-13 08:30:27 +00002222 .. audit-event:: os.rmdir path,dir_fd os.rmdir
2223
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002224 .. versionadded:: 3.3
2225 The *dir_fd* parameter.
2226
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002227 .. versionchanged:: 3.6
2228 Accepts a :term:`path-like object`.
2229
Georg Brandl116aa622007-08-15 14:28:22 +00002230
Victor Stinner6036e442015-03-08 01:58:04 +01002231.. function:: scandir(path='.')
2232
Brett Cannona32c4d02016-06-24 14:14:44 -07002233 Return an iterator of :class:`os.DirEntry` objects corresponding to the
2234 entries in the directory given by *path*. The entries are yielded in
2235 arbitrary order, and the special entries ``'.'`` and ``'..'`` are not
2236 included.
Victor Stinner6036e442015-03-08 01:58:04 +01002237
Victor Stinner51b58322015-05-15 09:12:58 +02002238 Using :func:`scandir` instead of :func:`listdir` can significantly
2239 increase the performance of code that also needs file type or file
Brett Cannona32c4d02016-06-24 14:14:44 -07002240 attribute information, because :class:`os.DirEntry` objects expose this
Victor Stinner51b58322015-05-15 09:12:58 +02002241 information if the operating system provides it when scanning a directory.
Brett Cannona32c4d02016-06-24 14:14:44 -07002242 All :class:`os.DirEntry` methods may perform a system call, but
2243 :func:`~os.DirEntry.is_dir` and :func:`~os.DirEntry.is_file` usually only
2244 require a system call for symbolic links; :func:`os.DirEntry.stat`
Victor Stinner51b58322015-05-15 09:12:58 +02002245 always requires a system call on Unix but only requires one for
2246 symbolic links on Windows.
Victor Stinner6036e442015-03-08 01:58:04 +01002247
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002248 *path* may be a :term:`path-like object`. If *path* is of type ``bytes``
2249 (directly or indirectly through the :class:`PathLike` interface),
2250 the type of the :attr:`~os.DirEntry.name` and :attr:`~os.DirEntry.path`
2251 attributes of each :class:`os.DirEntry` will be ``bytes``; in all other
2252 circumstances, they will be of type ``str``.
Victor Stinner6036e442015-03-08 01:58:04 +01002253
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002254 This function can also support :ref:`specifying a file descriptor
2255 <path_fd>`; the file descriptor must refer to a directory.
2256
Miss Islington (bot)4fee28a2019-06-27 11:07:16 -07002257 .. audit-event:: os.scandir path os.scandir
Miss Islington (bot)8763d432019-06-24 09:09:47 -07002258
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002259 The :func:`scandir` iterator supports the :term:`context manager` protocol
2260 and has the following method:
2261
2262 .. method:: scandir.close()
2263
2264 Close the iterator and free acquired resources.
2265
2266 This is called automatically when the iterator is exhausted or garbage
2267 collected, or when an error happens during iterating. However it
2268 is advisable to call it explicitly or use the :keyword:`with`
2269 statement.
2270
2271 .. versionadded:: 3.6
2272
Victor Stinner6036e442015-03-08 01:58:04 +01002273 The following example shows a simple use of :func:`scandir` to display all
Victor Stinner51b58322015-05-15 09:12:58 +02002274 the files (excluding directories) in the given *path* that don't start with
2275 ``'.'``. The ``entry.is_file()`` call will generally not make an additional
2276 system call::
Victor Stinner6036e442015-03-08 01:58:04 +01002277
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002278 with os.scandir(path) as it:
2279 for entry in it:
2280 if not entry.name.startswith('.') and entry.is_file():
2281 print(entry.name)
Victor Stinner6036e442015-03-08 01:58:04 +01002282
2283 .. note::
2284
2285 On Unix-based systems, :func:`scandir` uses the system's
2286 `opendir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/opendir.html>`_
2287 and
2288 `readdir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/readdir_r.html>`_
2289 functions. On Windows, it uses the Win32
Georg Brandl5d941342016-02-26 19:37:12 +01002290 `FindFirstFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01002291 and
Georg Brandl5d941342016-02-26 19:37:12 +01002292 `FindNextFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01002293 functions.
2294
Victor Stinner6036e442015-03-08 01:58:04 +01002295 .. versionadded:: 3.5
2296
Serhiy Storchakaffe96ae2016-02-11 13:21:30 +02002297 .. versionadded:: 3.6
2298 Added support for the :term:`context manager` protocol and the
2299 :func:`~scandir.close()` method. If a :func:`scandir` iterator is neither
2300 exhausted nor explicitly closed a :exc:`ResourceWarning` will be emitted
2301 in its destructor.
2302
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002303 The function accepts a :term:`path-like object`.
2304
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002305 .. versionchanged:: 3.7
2306 Added support for :ref:`file descriptors <path_fd>` on Unix.
2307
Victor Stinner6036e442015-03-08 01:58:04 +01002308
2309.. class:: DirEntry
2310
2311 Object yielded by :func:`scandir` to expose the file path and other file
2312 attributes of a directory entry.
2313
2314 :func:`scandir` will provide as much of this information as possible without
2315 making additional system calls. When a ``stat()`` or ``lstat()`` system call
Brett Cannona32c4d02016-06-24 14:14:44 -07002316 is made, the ``os.DirEntry`` object will cache the result.
Victor Stinner6036e442015-03-08 01:58:04 +01002317
Brett Cannona32c4d02016-06-24 14:14:44 -07002318 ``os.DirEntry`` instances are not intended to be stored in long-lived data
Victor Stinner6036e442015-03-08 01:58:04 +01002319 structures; if you know the file metadata has changed or if a long time has
2320 elapsed since calling :func:`scandir`, call ``os.stat(entry.path)`` to fetch
2321 up-to-date information.
2322
Brett Cannona32c4d02016-06-24 14:14:44 -07002323 Because the ``os.DirEntry`` methods can make operating system calls, they may
Victor Stinner51b58322015-05-15 09:12:58 +02002324 also raise :exc:`OSError`. If you need very fine-grained
Victor Stinner6036e442015-03-08 01:58:04 +01002325 control over errors, you can catch :exc:`OSError` when calling one of the
Brett Cannona32c4d02016-06-24 14:14:44 -07002326 ``os.DirEntry`` methods and handle as appropriate.
Victor Stinner6036e442015-03-08 01:58:04 +01002327
Brett Cannona32c4d02016-06-24 14:14:44 -07002328 To be directly usable as a :term:`path-like object`, ``os.DirEntry``
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002329 implements the :class:`PathLike` interface.
Brett Cannon96881cd2016-06-10 14:37:21 -07002330
Brett Cannona32c4d02016-06-24 14:14:44 -07002331 Attributes and methods on a ``os.DirEntry`` instance are as follows:
Victor Stinner6036e442015-03-08 01:58:04 +01002332
2333 .. attribute:: name
2334
2335 The entry's base filename, relative to the :func:`scandir` *path*
2336 argument.
2337
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002338 The :attr:`name` attribute will be ``bytes`` if the :func:`scandir`
2339 *path* argument is of type ``bytes`` and ``str`` otherwise. Use
Victor Stinner51b58322015-05-15 09:12:58 +02002340 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01002341
2342 .. attribute:: path
2343
2344 The entry's full path name: equivalent to ``os.path.join(scandir_path,
2345 entry.name)`` where *scandir_path* is the :func:`scandir` *path*
2346 argument. The path is only absolute if the :func:`scandir` *path*
Serhiy Storchakaea720fe2017-03-30 09:12:31 +03002347 argument was absolute. If the :func:`scandir` *path*
2348 argument was a :ref:`file descriptor <path_fd>`, the :attr:`path`
2349 attribute is the same as the :attr:`name` attribute.
Victor Stinner6036e442015-03-08 01:58:04 +01002350
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002351 The :attr:`path` attribute will be ``bytes`` if the :func:`scandir`
2352 *path* argument is of type ``bytes`` and ``str`` otherwise. Use
Victor Stinner51b58322015-05-15 09:12:58 +02002353 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01002354
2355 .. method:: inode()
2356
2357 Return the inode number of the entry.
2358
Brett Cannona32c4d02016-06-24 14:14:44 -07002359 The result is cached on the ``os.DirEntry`` object. Use
2360 ``os.stat(entry.path, follow_symlinks=False).st_ino`` to fetch up-to-date
2361 information.
Victor Stinner6036e442015-03-08 01:58:04 +01002362
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002363 On the first, uncached call, a system call is required on Windows but
2364 not on Unix.
Victor Stinner6036e442015-03-08 01:58:04 +01002365
2366 .. method:: is_dir(\*, follow_symlinks=True)
2367
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002368 Return ``True`` if this entry is a directory or a symbolic link pointing
2369 to a directory; return ``False`` if the entry is or points to any other
2370 kind of file, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002371
2372 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002373 is a directory (without following symlinks); return ``False`` if the
2374 entry is any other kind of file or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002375
Brett Cannona32c4d02016-06-24 14:14:44 -07002376 The result is cached on the ``os.DirEntry`` object, with a separate cache
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002377 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` along
2378 with :func:`stat.S_ISDIR` to fetch up-to-date information.
2379
2380 On the first, uncached call, no system call is required in most cases.
2381 Specifically, for non-symlinks, neither Windows or Unix require a system
2382 call, except on certain Unix file systems, such as network file systems,
2383 that return ``dirent.d_type == DT_UNKNOWN``. If the entry is a symlink,
2384 a system call will be required to follow the symlink unless
2385 *follow_symlinks* is ``False``.
Victor Stinner6036e442015-03-08 01:58:04 +01002386
Victor Stinner51b58322015-05-15 09:12:58 +02002387 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2388 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002389
Victor Stinner6036e442015-03-08 01:58:04 +01002390 .. method:: is_file(\*, follow_symlinks=True)
2391
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002392 Return ``True`` if this entry is a file or a symbolic link pointing to a
2393 file; return ``False`` if the entry is or points to a directory or other
2394 non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002395
2396 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002397 is a file (without following symlinks); return ``False`` if the entry is
2398 a directory or other non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002399
Brett Cannona32c4d02016-06-24 14:14:44 -07002400 The result is cached on the ``os.DirEntry`` object. Caching, system calls
2401 made, and exceptions raised are as per :func:`~os.DirEntry.is_dir`.
Victor Stinner6036e442015-03-08 01:58:04 +01002402
2403 .. method:: is_symlink()
2404
Victor Stinner51b58322015-05-15 09:12:58 +02002405 Return ``True`` if this entry is a symbolic link (even if broken);
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002406 return ``False`` if the entry points to a directory or any kind of file,
Victor Stinner51b58322015-05-15 09:12:58 +02002407 or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002408
Brett Cannona32c4d02016-06-24 14:14:44 -07002409 The result is cached on the ``os.DirEntry`` object. Call
Victor Stinner51b58322015-05-15 09:12:58 +02002410 :func:`os.path.islink` to fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002411
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002412 On the first, uncached call, no system call is required in most cases.
2413 Specifically, neither Windows or Unix require a system call, except on
2414 certain Unix file systems, such as network file systems, that return
2415 ``dirent.d_type == DT_UNKNOWN``.
Victor Stinner6036e442015-03-08 01:58:04 +01002416
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002417 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2418 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002419
2420 .. method:: stat(\*, follow_symlinks=True)
2421
Victor Stinner51b58322015-05-15 09:12:58 +02002422 Return a :class:`stat_result` object for this entry. This method
2423 follows symbolic links by default; to stat a symbolic link add the
2424 ``follow_symlinks=False`` argument.
2425
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002426 On Unix, this method always requires a system call. On Windows, it
2427 only requires a system call if *follow_symlinks* is ``True`` and the
Steve Dower9eb3d542019-08-21 15:52:42 -07002428 entry is a reparse point (for example, a symbolic link or directory
2429 junction).
Victor Stinner6036e442015-03-08 01:58:04 +01002430
2431 On Windows, the ``st_ino``, ``st_dev`` and ``st_nlink`` attributes of the
2432 :class:`stat_result` are always set to zero. Call :func:`os.stat` to
2433 get these attributes.
2434
Brett Cannona32c4d02016-06-24 14:14:44 -07002435 The result is cached on the ``os.DirEntry`` object, with a separate cache
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002436 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` to
2437 fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002438
Guido van Rossum1469d742016-01-06 11:36:03 -08002439 Note that there is a nice correspondence between several attributes
Brett Cannona32c4d02016-06-24 14:14:44 -07002440 and methods of ``os.DirEntry`` and of :class:`pathlib.Path`. In
Brett Cannonc28592b2016-06-24 12:21:47 -07002441 particular, the ``name`` attribute has the same
Guido van Rossum1469d742016-01-06 11:36:03 -08002442 meaning, as do the ``is_dir()``, ``is_file()``, ``is_symlink()``
2443 and ``stat()`` methods.
2444
Victor Stinner6036e442015-03-08 01:58:04 +01002445 .. versionadded:: 3.5
2446
Brett Cannon96881cd2016-06-10 14:37:21 -07002447 .. versionchanged:: 3.6
Serhiy Storchaka3c38e062016-11-20 08:23:07 +02002448 Added support for the :class:`~os.PathLike` interface. Added support
2449 for :class:`bytes` paths on Windows.
Brett Cannon96881cd2016-06-10 14:37:21 -07002450
Victor Stinner6036e442015-03-08 01:58:04 +01002451
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002452.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002453
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002454 Get the status of a file or a file descriptor. Perform the equivalent of a
2455 :c:func:`stat` system call on the given path. *path* may be specified as
Xiang Zhang4459e002017-01-22 13:04:17 +08002456 either a string or bytes -- directly or indirectly through the :class:`PathLike`
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002457 interface -- or as an open file descriptor. Return a :class:`stat_result`
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002458 object.
Georg Brandl116aa622007-08-15 14:28:22 +00002459
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002460 This function normally follows symlinks; to stat a symlink add the argument
2461 ``follow_symlinks=False``, or use :func:`lstat`.
R. David Murray7b1aae92011-01-24 19:34:58 +00002462
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002463 This function can support :ref:`specifying a file descriptor <path_fd>` and
2464 :ref:`not following symlinks <follow_symlinks>`.
Georg Brandl116aa622007-08-15 14:28:22 +00002465
Steve Dower9eb3d542019-08-21 15:52:42 -07002466 On Windows, passing ``follow_symlinks=False`` will disable following all
2467 name-surrogate reparse points, which includes symlinks and directory
2468 junctions. Other types of reparse points that do not resemble links or that
2469 the operating system is unable to follow will be opened directly. When
2470 following a chain of multiple links, this may result in the original link
2471 being returned instead of the non-link that prevented full traversal. To
2472 obtain stat results for the final path in this case, use the
2473 :func:`os.path.realpath` function to resolve the path name as far as
2474 possible and call :func:`lstat` on the result. This does not apply to
2475 dangling symlinks or junction points, which will raise the usual exceptions.
2476
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002477 .. index:: module: stat
R. David Murray7b1aae92011-01-24 19:34:58 +00002478
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002479 Example::
Georg Brandl116aa622007-08-15 14:28:22 +00002480
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002481 >>> import os
2482 >>> statinfo = os.stat('somefile.txt')
2483 >>> statinfo
2484 os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2485 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2486 st_mtime=1297230027, st_ctime=1297230027)
2487 >>> statinfo.st_size
2488 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002489
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002490 .. seealso::
Zachary Ware63f277b2014-06-19 09:46:37 -05002491
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002492 :func:`fstat` and :func:`lstat` functions.
2493
2494 .. versionadded:: 3.3
2495 Added the *dir_fd* and *follow_symlinks* arguments, specifying a file
2496 descriptor instead of a path.
2497
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002498 .. versionchanged:: 3.6
2499 Accepts a :term:`path-like object`.
2500
Steve Dower9eb3d542019-08-21 15:52:42 -07002501 .. versionchanged:: 3.8
2502 On Windows, all reparse points that can be resolved by the operating
2503 system are now followed, and passing ``follow_symlinks=False``
2504 disables following all name surrogate reparse points. If the operating
2505 system reaches a reparse point that it is not able to follow, *stat* now
2506 returns the information for the original path as if
2507 ``follow_symlinks=False`` had been specified instead of raising an error.
2508
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002509
2510.. class:: stat_result
2511
2512 Object whose attributes correspond roughly to the members of the
2513 :c:type:`stat` structure. It is used for the result of :func:`os.stat`,
2514 :func:`os.fstat` and :func:`os.lstat`.
2515
2516 Attributes:
2517
2518 .. attribute:: st_mode
2519
2520 File mode: file type and file mode bits (permissions).
2521
2522 .. attribute:: st_ino
2523
Steve Dower3e51a3d2018-05-28 17:24:36 -07002524 Platform dependent, but if non-zero, uniquely identifies the
2525 file for a given value of ``st_dev``. Typically:
2526
2527 * the inode number on Unix,
2528 * the `file index
2529 <https://msdn.microsoft.com/en-us/library/aa363788>`_ on
2530 Windows
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002531
2532 .. attribute:: st_dev
2533
2534 Identifier of the device on which this file resides.
2535
2536 .. attribute:: st_nlink
2537
2538 Number of hard links.
2539
2540 .. attribute:: st_uid
2541
2542 User identifier of the file owner.
2543
2544 .. attribute:: st_gid
2545
2546 Group identifier of the file owner.
2547
2548 .. attribute:: st_size
2549
2550 Size of the file in bytes, if it is a regular file or a symbolic link.
2551 The size of a symbolic link is the length of the pathname it contains,
2552 without a terminating null byte.
2553
2554 Timestamps:
2555
2556 .. attribute:: st_atime
2557
2558 Time of most recent access expressed in seconds.
2559
2560 .. attribute:: st_mtime
2561
2562 Time of most recent content modification expressed in seconds.
2563
2564 .. attribute:: st_ctime
2565
2566 Platform dependent:
2567
2568 * the time of most recent metadata change on Unix,
2569 * the time of creation on Windows, expressed in seconds.
2570
2571 .. attribute:: st_atime_ns
2572
2573 Time of most recent access expressed in nanoseconds as an integer.
2574
2575 .. attribute:: st_mtime_ns
2576
2577 Time of most recent content modification expressed in nanoseconds as an
2578 integer.
2579
2580 .. attribute:: st_ctime_ns
2581
2582 Platform dependent:
2583
2584 * the time of most recent metadata change on Unix,
2585 * the time of creation on Windows, expressed in nanoseconds as an
2586 integer.
2587
Georg Brandl116aa622007-08-15 14:28:22 +00002588 .. note::
2589
Senthil Kumaran3aac1792011-07-04 11:43:51 -07002590 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07002591 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
2592 system and the file system. For example, on Windows systems using the FAT
2593 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
2594 :attr:`st_atime` has only 1-day resolution. See your operating system
2595 documentation for details.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002596
Larry Hastings6fe20b32012-04-19 15:07:49 -07002597 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
2598 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
2599 systems do not provide nanosecond precision. On systems that do
2600 provide nanosecond precision, the floating-point object used to
2601 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
2602 cannot preserve all of it, and as such will be slightly inexact.
2603 If you need the exact timestamps you should always use
2604 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00002605
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002606 On some Unix systems (such as Linux), the following attributes may also be
2607 available:
2608
2609 .. attribute:: st_blocks
2610
2611 Number of 512-byte blocks allocated for file.
2612 This may be smaller than :attr:`st_size`/512 when the file has holes.
2613
2614 .. attribute:: st_blksize
2615
2616 "Preferred" blocksize for efficient file system I/O. Writing to a file in
2617 smaller chunks may cause an inefficient read-modify-rewrite.
2618
2619 .. attribute:: st_rdev
2620
2621 Type of device if an inode device.
2622
2623 .. attribute:: st_flags
2624
2625 User defined flags for file.
2626
2627 On other Unix systems (such as FreeBSD), the following attributes may be
2628 available (but may be only filled out if root tries to use them):
2629
2630 .. attribute:: st_gen
2631
2632 File generation number.
2633
2634 .. attribute:: st_birthtime
2635
2636 Time of file creation.
2637
jcea6c51d512018-01-28 14:00:08 +01002638 On Solaris and derivatives, the following attributes may also be
2639 available:
2640
2641 .. attribute:: st_fstype
2642
2643 String that uniquely identifies the type of the filesystem that
2644 contains the file.
2645
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002646 On Mac OS systems, the following attributes may also be available:
2647
2648 .. attribute:: st_rsize
2649
2650 Real size of the file.
2651
2652 .. attribute:: st_creator
2653
2654 Creator of the file.
2655
2656 .. attribute:: st_type
2657
2658 File type.
2659
Steve Dower9eb3d542019-08-21 15:52:42 -07002660 On Windows systems, the following attributes are also available:
Victor Stinnere1d24f72014-07-24 12:44:07 +02002661
2662 .. attribute:: st_file_attributes
2663
2664 Windows file attributes: ``dwFileAttributes`` member of the
2665 ``BY_HANDLE_FILE_INFORMATION`` structure returned by
2666 :c:func:`GetFileInformationByHandle`. See the ``FILE_ATTRIBUTE_*``
2667 constants in the :mod:`stat` module.
2668
Steve Dower9eb3d542019-08-21 15:52:42 -07002669 .. attribute:: st_reparse_tag
2670
2671 When :attr:`st_file_attributes` has the ``FILE_ATTRIBUTE_REPARSE_POINT``
2672 set, this field contains the tag identifying the type of reparse point.
2673 See the ``IO_REPARSE_TAG_*`` constants in the :mod:`stat` module.
2674
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002675 The standard module :mod:`stat` defines functions and constants that are
2676 useful for extracting information from a :c:type:`stat` structure. (On
2677 Windows, some items are filled with dummy values.)
2678
2679 For backward compatibility, a :class:`stat_result` instance is also
Georg Brandl50c40002012-06-24 11:45:20 +02002680 accessible as a tuple of at least 10 integers giving the most important (and
2681 portable) members of the :c:type:`stat` structure, in the order
2682 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
2683 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
2684 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002685 some implementations. For compatibility with older Python versions,
2686 accessing :class:`stat_result` as a tuple always returns integers.
Georg Brandl116aa622007-08-15 14:28:22 +00002687
Larry Hastings6fe20b32012-04-19 15:07:49 -07002688 .. versionadded:: 3.3
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002689 Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and
2690 :attr:`st_ctime_ns` members.
Larry Hastings6fe20b32012-04-19 15:07:49 -07002691
Zachary Ware63f277b2014-06-19 09:46:37 -05002692 .. versionadded:: 3.5
2693 Added the :attr:`st_file_attributes` member on Windows.
2694
Steve Dower3e51a3d2018-05-28 17:24:36 -07002695 .. versionchanged:: 3.5
2696 Windows now returns the file index as :attr:`st_ino` when
2697 available.
2698
jcea6c51d512018-01-28 14:00:08 +01002699 .. versionadded:: 3.7
2700 Added the :attr:`st_fstype` member to Solaris/derivatives.
Georg Brandl116aa622007-08-15 14:28:22 +00002701
Steve Dower9eb3d542019-08-21 15:52:42 -07002702 .. versionadded:: 3.8
2703 Added the :attr:`st_reparse_tag` member on Windows.
2704
2705 .. versionchanged:: 3.8
2706 On Windows, the :attr:`st_mode` member now identifies special
2707 files as :const:`S_IFCHR`, :const:`S_IFIFO` or :const:`S_IFBLK`
2708 as appropriate.
2709
Georg Brandl116aa622007-08-15 14:28:22 +00002710.. function:: statvfs(path)
2711
Georg Brandl60203b42010-10-06 10:11:56 +00002712 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002713 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002714 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002715 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2716 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Giuseppe Scrivano96a5e502017-12-14 23:46:46 +01002717 :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002718
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002719 Two module-level constants are defined for the :attr:`f_flag` attribute's
2720 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2721 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2722 setuid/setgid bits are disabled or not supported.
2723
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002724 Additional module-level constants are defined for GNU/glibc based systems.
2725 These are :const:`ST_NODEV` (disallow access to device special files),
2726 :const:`ST_NOEXEC` (disallow program execution), :const:`ST_SYNCHRONOUS`
2727 (writes are synced at once), :const:`ST_MANDLOCK` (allow mandatory locks on an FS),
2728 :const:`ST_WRITE` (write on file/directory/symlink), :const:`ST_APPEND`
2729 (append-only file), :const:`ST_IMMUTABLE` (immutable file), :const:`ST_NOATIME`
2730 (do not update access times), :const:`ST_NODIRATIME` (do not update directory access
2731 times), :const:`ST_RELATIME` (update atime relative to mtime/ctime).
2732
Georg Brandl50c40002012-06-24 11:45:20 +02002733 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002734
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002735 .. availability:: Unix.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002736
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002737 .. versionchanged:: 3.2
2738 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2739
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002740 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04002741 Added support for specifying *path* as an open file descriptor.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002742
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002743 .. versionchanged:: 3.4
2744 The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`,
2745 :const:`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`,
2746 :const:`ST_IMMUTABLE`, :const:`ST_NOATIME`, :const:`ST_NODIRATIME`,
2747 and :const:`ST_RELATIME` constants were added.
2748
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002749 .. versionchanged:: 3.6
2750 Accepts a :term:`path-like object`.
Georg Brandl116aa622007-08-15 14:28:22 +00002751
Giuseppe Scrivano96a5e502017-12-14 23:46:46 +01002752 .. versionadded:: 3.7
2753 Added :attr:`f_fsid`.
2754
Larry Hastings9cf065c2012-06-22 16:30:09 -07002755
2756.. data:: supports_dir_fd
2757
Cheryl Sabellae1521692019-05-06 08:39:13 -04002758 A :class:`set` object indicating which functions in the :mod:`os`
2759 module accept an open file descriptor for their *dir_fd* parameter.
2760 Different platforms provide different features, and the underlying
2761 functionality Python uses to implement the *dir_fd* parameter is not
2762 available on all platforms Python supports. For consistency's sake,
2763 functions that may support *dir_fd* always allow specifying the
2764 parameter, but will throw an exception if the functionality is used
2765 when it's not locally available. (Specifying ``None`` for *dir_fd*
2766 is always supported on all platforms.)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002767
Cheryl Sabellae1521692019-05-06 08:39:13 -04002768 To check whether a particular function accepts an open file descriptor
2769 for its *dir_fd* parameter, use the ``in`` operator on ``supports_dir_fd``.
2770 As an example, this expression evaluates to ``True`` if :func:`os.stat`
2771 accepts open file descriptors for *dir_fd* on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002772
2773 os.stat in os.supports_dir_fd
2774
Cheryl Sabellae1521692019-05-06 08:39:13 -04002775 Currently *dir_fd* parameters only work on Unix platforms;
2776 none of them work on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002777
2778 .. versionadded:: 3.3
2779
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002780
Larry Hastings9cf065c2012-06-22 16:30:09 -07002781.. data:: supports_effective_ids
2782
Cheryl Sabellae1521692019-05-06 08:39:13 -04002783 A :class:`set` object indicating whether :func:`os.access` permits
2784 specifying ``True`` for its *effective_ids* parameter on the local platform.
2785 (Specifying ``False`` for *effective_ids* is always supported on all
2786 platforms.) If the local platform supports it, the collection will contain
2787 :func:`os.access`; otherwise it will be empty.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002788
Cheryl Sabellae1521692019-05-06 08:39:13 -04002789 This expression evaluates to ``True`` if :func:`os.access` supports
2790 ``effective_ids=True`` on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002791
2792 os.access in os.supports_effective_ids
2793
Cheryl Sabellae1521692019-05-06 08:39:13 -04002794 Currently *effective_ids* is only supported on Unix platforms;
2795 it does not work on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002796
2797 .. versionadded:: 3.3
2798
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002799
Larry Hastings9cf065c2012-06-22 16:30:09 -07002800.. data:: supports_fd
2801
Cheryl Sabellae1521692019-05-06 08:39:13 -04002802 A :class:`set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002803 :mod:`os` module permit specifying their *path* parameter as an open file
Cheryl Sabellae1521692019-05-06 08:39:13 -04002804 descriptor on the local platform. Different platforms provide different
2805 features, and the underlying functionality Python uses to accept open file
2806 descriptors as *path* arguments is not available on all platforms Python
2807 supports.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002808
Cheryl Sabellae1521692019-05-06 08:39:13 -04002809 To determine whether a particular function permits specifying an open file
Larry Hastings9cf065c2012-06-22 16:30:09 -07002810 descriptor for its *path* parameter, use the ``in`` operator on
Cheryl Sabellae1521692019-05-06 08:39:13 -04002811 ``supports_fd``. As an example, this expression evaluates to ``True`` if
2812 :func:`os.chdir` accepts open file descriptors for *path* on your local
Larry Hastings9cf065c2012-06-22 16:30:09 -07002813 platform::
2814
2815 os.chdir in os.supports_fd
2816
2817 .. versionadded:: 3.3
2818
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002819
Larry Hastings9cf065c2012-06-22 16:30:09 -07002820.. data:: supports_follow_symlinks
2821
Cheryl Sabellae1521692019-05-06 08:39:13 -04002822 A :class:`set` object indicating which functions in the :mod:`os` module
2823 accept ``False`` for their *follow_symlinks* parameter on the local platform.
2824 Different platforms provide different features, and the underlying
2825 functionality Python uses to implement *follow_symlinks* is not available
2826 on all platforms Python supports. For consistency's sake, functions that
2827 may support *follow_symlinks* always allow specifying the parameter, but
2828 will throw an exception if the functionality is used when it's not locally
2829 available. (Specifying ``True`` for *follow_symlinks* is always supported
2830 on all platforms.)
Larry Hastings9cf065c2012-06-22 16:30:09 -07002831
Cheryl Sabellae1521692019-05-06 08:39:13 -04002832 To check whether a particular function accepts ``False`` for its
2833 *follow_symlinks* parameter, use the ``in`` operator on
2834 ``supports_follow_symlinks``. As an example, this expression evaluates
2835 to ``True`` if you may specify ``follow_symlinks=False`` when calling
2836 :func:`os.stat` on the local platform::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002837
2838 os.stat in os.supports_follow_symlinks
2839
2840 .. versionadded:: 3.3
2841
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002842
Martin Panterbf19d162015-09-09 01:01:13 +00002843.. function:: symlink(src, dst, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002844
Martin Panterbf19d162015-09-09 01:01:13 +00002845 Create a symbolic link pointing to *src* named *dst*.
Brian Curtinc7395692010-07-09 15:15:09 +00002846
Larry Hastings9cf065c2012-06-22 16:30:09 -07002847 On Windows, a symlink represents either a file or a directory, and does not
Jason R. Coombs3a092862013-05-27 23:21:28 -04002848 morph to the target dynamically. If the target is present, the type of the
2849 symlink will be created to match. Otherwise, the symlink will be created
2850 as a directory if *target_is_directory* is ``True`` or a file symlink (the
l-n-sdaeb3c42018-11-14 00:13:12 +00002851 default) otherwise. On non-Windows platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002852
Georg Brandl50c40002012-06-24 11:45:20 +02002853 This function can support :ref:`paths relative to directory descriptors
2854 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002855
Brian Curtin52173d42010-12-02 18:29:18 +00002856 .. note::
2857
Vidar Tonaas Fauske0e107662019-04-09 20:19:46 +02002858 On newer versions of Windows 10, unprivileged accounts can create symlinks
2859 if Developer Mode is enabled. When Developer Mode is not available/enabled,
2860 the *SeCreateSymbolicLinkPrivilege* privilege is required, or the process
2861 must be run as an administrator.
Brian Curtin96245592010-12-28 17:08:22 +00002862
Jason R. Coombs3a092862013-05-27 23:21:28 -04002863
Brian Curtin96245592010-12-28 17:08:22 +00002864 :exc:`OSError` is raised when the function is called by an unprivileged
2865 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002866
Steve Dowera00b5be2020-02-13 08:30:27 +00002867 .. audit-event:: os.symlink src,dst,dir_fd os.symlink
2868
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002869 .. availability:: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002870
Georg Brandlb3823372010-07-10 08:58:37 +00002871 .. versionchanged:: 3.2
2872 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002873
Larry Hastings9cf065c2012-06-22 16:30:09 -07002874 .. versionadded:: 3.3
2875 Added the *dir_fd* argument, and now allow *target_is_directory*
2876 on non-Windows platforms.
2877
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002878 .. versionchanged:: 3.6
2879 Accepts a :term:`path-like object` for *src* and *dst*.
2880
Vidar Tonaas Fauske0e107662019-04-09 20:19:46 +02002881 .. versionchanged:: 3.8
2882 Added support for unelevated symlinks on Windows with Developer Mode.
2883
Georg Brandl116aa622007-08-15 14:28:22 +00002884
Ross Lagerwall7807c352011-03-17 20:20:30 +02002885.. function:: sync()
2886
2887 Force write of everything to disk.
2888
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002889 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02002890
2891 .. versionadded:: 3.3
2892
2893
2894.. function:: truncate(path, length)
2895
2896 Truncate the file corresponding to *path*, so that it is at most
2897 *length* bytes in size.
2898
Georg Brandl306336b2012-06-24 12:55:33 +02002899 This function can support :ref:`specifying a file descriptor <path_fd>`.
2900
Miss Islington (bot)4fee28a2019-06-27 11:07:16 -07002901 .. audit-event:: os.truncate path,length os.truncate
Steve Dowerb82e17e2019-05-23 08:45:22 -07002902
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04002903 .. availability:: Unix, Windows.
Ross Lagerwall7807c352011-03-17 20:20:30 +02002904
2905 .. versionadded:: 3.3
2906
Steve Dowerfe0a41a2015-03-20 19:50:46 -07002907 .. versionchanged:: 3.5
2908 Added support for Windows
Ross Lagerwall7807c352011-03-17 20:20:30 +02002909
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002910 .. versionchanged:: 3.6
2911 Accepts a :term:`path-like object`.
2912
2913
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002914.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002915
Brett Cannon05039172015-12-28 17:28:19 -08002916 Remove (delete) the file *path*. This function is semantically
2917 identical to :func:`remove`; the ``unlink`` name is its
2918 traditional Unix name. Please see the documentation for
2919 :func:`remove` for further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002920
Steve Dowera00b5be2020-02-13 08:30:27 +00002921 .. audit-event:: os.remove path,dir_fd os.unlink
2922
Larry Hastings9cf065c2012-06-22 16:30:09 -07002923 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002924 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002925
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002926 .. versionchanged:: 3.6
2927 Accepts a :term:`path-like object`.
2928
Larry Hastings9cf065c2012-06-22 16:30:09 -07002929
Martin Panterbf19d162015-09-09 01:01:13 +00002930.. function:: utime(path, times=None, *[, ns], dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002931
Larry Hastings76ad59b2012-05-03 00:30:07 -07002932 Set the access and modified times of the file specified by *path*.
2933
2934 :func:`utime` takes two optional parameters, *times* and *ns*.
2935 These specify the times set on *path* and are used as follows:
2936
Martin Panterbf19d162015-09-09 01:01:13 +00002937 - If *ns* is specified,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002938 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2939 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002940 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002941 it must be a 2-tuple of the form ``(atime, mtime)``
2942 where each member is an int or float expressing seconds.
Martin Panterbf19d162015-09-09 01:01:13 +00002943 - If *times* is ``None`` and *ns* is unspecified,
Larry Hastings9cf065c2012-06-22 16:30:09 -07002944 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002945 where both times are the current time.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002946
Larry Hastings9cf065c2012-06-22 16:30:09 -07002947 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002948
Stéphane Wirtel7508a542018-05-01 12:02:26 +02002949 Note that the exact times you set here may not be returned by a subsequent
2950 :func:`~os.stat` call, depending on the resolution with which your operating
2951 system records access and modification times; see :func:`~os.stat`. The best
2952 way to preserve exact times is to use the *st_atime_ns* and *st_mtime_ns*
2953 fields from the :func:`os.stat` result object with the *ns* parameter to
2954 `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002955
Georg Brandl50c40002012-06-24 11:45:20 +02002956 This function can support :ref:`specifying a file descriptor <path_fd>`,
2957 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
2958 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002959
Steve Dowera00b5be2020-02-13 08:30:27 +00002960 .. audit-event:: os.utime path,times,ns,dir_fd os.utime
2961
Larry Hastings76ad59b2012-05-03 00:30:07 -07002962 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04002963 Added support for specifying *path* as an open file descriptor,
Larry Hastings9cf065c2012-06-22 16:30:09 -07002964 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002965
Brett Cannon6fa7aad2016-09-06 15:55:02 -07002966 .. versionchanged:: 3.6
2967 Accepts a :term:`path-like object`.
2968
Georg Brandl116aa622007-08-15 14:28:22 +00002969
Georg Brandl18244152009-09-02 20:34:52 +00002970.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002971
2972 .. index::
2973 single: directory; walking
2974 single: directory; traversal
2975
Christian Heimesfaf2f632008-01-06 16:59:19 +00002976 Generate the file names in a directory tree by walking the tree
2977 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002978 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2979 filenames)``.
2980
2981 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2982 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2983 *filenames* is a list of the names of the non-directory files in *dirpath*.
2984 Note that the names in the lists contain no path components. To get a full path
2985 (which begins with *top*) to a file or directory in *dirpath*, do
2986 ``os.path.join(dirpath, name)``.
2987
Christian Heimesfaf2f632008-01-06 16:59:19 +00002988 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002989 directory is generated before the triples for any of its subdirectories
Benjamin Petersone58e0c72014-06-15 20:51:12 -07002990 (directories are generated top-down). If *topdown* is ``False``, the triple
2991 for a directory is generated after the triples for all of its subdirectories
2992 (directories are generated bottom-up). No matter the value of *topdown*, the
2993 list of subdirectories is retrieved before the tuples for the directory and
2994 its subdirectories are generated.
Georg Brandl116aa622007-08-15 14:28:22 +00002995
Christian Heimesfaf2f632008-01-06 16:59:19 +00002996 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002997 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2998 recurse into the subdirectories whose names remain in *dirnames*; this can be
2999 used to prune the search, impose a specific order of visiting, or even to inform
3000 :func:`walk` about directories the caller creates or renames before it resumes
Victor Stinner0e316f62015-10-23 12:38:11 +02003001 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` has
3002 no effect on the behavior of the walk, because in bottom-up mode the directories
3003 in *dirnames* are generated before *dirpath* itself is generated.
Georg Brandl116aa622007-08-15 14:28:22 +00003004
Andrés Delfinobadb8942018-04-02 23:48:54 -03003005 By default, errors from the :func:`scandir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00003006 argument *onerror* is specified, it should be a function; it will be called with
3007 one argument, an :exc:`OSError` instance. It can report the error to continue
3008 with the walk, or raise the exception to abort the walk. Note that the filename
3009 is available as the ``filename`` attribute of the exception object.
3010
3011 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00003012 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00003013 symlinks, on systems that support them.
3014
Georg Brandl116aa622007-08-15 14:28:22 +00003015 .. note::
3016
Georg Brandl50c40002012-06-24 11:45:20 +02003017 Be aware that setting *followlinks* to ``True`` can lead to infinite
3018 recursion if a link points to a parent directory of itself. :func:`walk`
3019 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00003020
3021 .. note::
3022
3023 If you pass a relative pathname, don't change the current working directory
3024 between resumptions of :func:`walk`. :func:`walk` never changes the current
3025 directory, and assumes that its caller doesn't either.
3026
3027 This example displays the number of bytes taken by non-directory files in each
3028 directory under the starting directory, except that it doesn't look under any
3029 CVS subdirectory::
3030
3031 import os
3032 from os.path import join, getsize
3033 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00003034 print(root, "consumes", end=" ")
3035 print(sum(getsize(join(root, name)) for name in files), end=" ")
3036 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00003037 if 'CVS' in dirs:
3038 dirs.remove('CVS') # don't visit CVS directories
3039
Victor Stinner47c41b42015-03-10 13:31:47 +01003040 In the next example (simple implementation of :func:`shutil.rmtree`),
3041 walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
3042 deleting a directory before the directory is empty::
Georg Brandl116aa622007-08-15 14:28:22 +00003043
Christian Heimesfaf2f632008-01-06 16:59:19 +00003044 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00003045 # assuming there are no symbolic links.
3046 # CAUTION: This is dangerous! For example, if top == '/', it
3047 # could delete all your disk files.
3048 import os
3049 for root, dirs, files in os.walk(top, topdown=False):
3050 for name in files:
3051 os.remove(os.path.join(root, name))
3052 for name in dirs:
3053 os.rmdir(os.path.join(root, name))
3054
Victor Stinner524a5ba2015-03-10 13:20:34 +01003055 .. versionchanged:: 3.5
Victor Stinner51b58322015-05-15 09:12:58 +02003056 This function now calls :func:`os.scandir` instead of :func:`os.listdir`,
3057 making it faster by reducing the number of calls to :func:`os.stat`.
Victor Stinner524a5ba2015-03-10 13:20:34 +01003058
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003059 .. versionchanged:: 3.6
3060 Accepts a :term:`path-like object`.
3061
Georg Brandl116aa622007-08-15 14:28:22 +00003062
Larry Hastingsb4038062012-07-15 10:57:38 -07003063.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)
Charles-François Natali7372b062012-02-05 15:15:38 +01003064
3065 .. index::
3066 single: directory; walking
3067 single: directory; traversal
3068
Eli Benderskyd049d5c2012-02-11 09:52:29 +02003069 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
Larry Hastingsc48fe982012-06-25 04:49:05 -07003070 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``.
Charles-François Natali7372b062012-02-05 15:15:38 +01003071
3072 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
3073 and *dirfd* is a file descriptor referring to the directory *dirpath*.
3074
Larry Hastingsc48fe982012-06-25 04:49:05 -07003075 This function always supports :ref:`paths relative to directory descriptors
Larry Hastingsb4038062012-07-15 10:57:38 -07003076 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however
Larry Hastings950b76a2012-07-15 17:32:36 -07003077 that, unlike other functions, the :func:`fwalk` default value for
Larry Hastingsb4038062012-07-15 10:57:38 -07003078 *follow_symlinks* is ``False``.
Larry Hastingsc48fe982012-06-25 04:49:05 -07003079
Charles-François Natali7372b062012-02-05 15:15:38 +01003080 .. note::
3081
3082 Since :func:`fwalk` yields file descriptors, those are only valid until
3083 the next iteration step, so you should duplicate them (e.g. with
3084 :func:`dup`) if you want to keep them longer.
3085
3086 This example displays the number of bytes taken by non-directory files in each
3087 directory under the starting directory, except that it doesn't look under any
3088 CVS subdirectory::
3089
3090 import os
3091 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
3092 print(root, "consumes", end="")
Hynek Schlawack1729b8f2012-06-24 16:11:08 +02003093 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
Charles-François Natali7372b062012-02-05 15:15:38 +01003094 end="")
3095 print("bytes in", len(files), "non-directory files")
3096 if 'CVS' in dirs:
3097 dirs.remove('CVS') # don't visit CVS directories
3098
3099 In the next example, walking the tree bottom-up is essential:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003100 :func:`rmdir` doesn't allow deleting a directory before the directory is
Charles-François Natali7372b062012-02-05 15:15:38 +01003101 empty::
3102
3103 # Delete everything reachable from the directory named in "top",
3104 # assuming there are no symbolic links.
3105 # CAUTION: This is dangerous! For example, if top == '/', it
3106 # could delete all your disk files.
3107 import os
3108 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
3109 for name in files:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003110 os.unlink(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01003111 for name in dirs:
Victor Stinner69a6ca52012-08-05 15:18:02 +02003112 os.rmdir(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01003113
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003114 .. availability:: Unix.
Charles-François Natali7372b062012-02-05 15:15:38 +01003115
3116 .. versionadded:: 3.3
3117
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003118 .. versionchanged:: 3.6
3119 Accepts a :term:`path-like object`.
3120
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +02003121 .. versionchanged:: 3.7
3122 Added support for :class:`bytes` paths.
3123
Charles-François Natali7372b062012-02-05 15:15:38 +01003124
Zackery Spytz43fdbd22019-05-29 13:57:07 -06003125.. function:: memfd_create(name[, flags=os.MFD_CLOEXEC])
3126
3127 Create an anonymous file and return a file descriptor that refers to it.
3128 *flags* must be one of the ``os.MFD_*`` constants available on the system
3129 (or a bitwise ORed combination of them). By default, the new file
3130 descriptor is :ref:`non-inheritable <fd_inheritance>`.
3131
Miss Islington (bot)b496c262019-06-05 04:16:00 -07003132 The name supplied in *name* is used as a filename and will be displayed as
3133 the target of the corresponding symbolic link in the directory
3134 ``/proc/self/fd/``. The displayed name is always prefixed with ``memfd:``
3135 and serves only for debugging purposes. Names do not affect the behavior of
3136 the file descriptor, and as such multiple files can have the same name
3137 without any side effects.
3138
Zackery Spytz43fdbd22019-05-29 13:57:07 -06003139 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer.
3140
3141 .. versionadded:: 3.8
3142
3143
3144.. data:: MFD_CLOEXEC
3145 MFD_ALLOW_SEALING
3146 MFD_HUGETLB
3147 MFD_HUGE_SHIFT
3148 MFD_HUGE_MASK
3149 MFD_HUGE_64KB
3150 MFD_HUGE_512KB
3151 MFD_HUGE_1MB
3152 MFD_HUGE_2MB
3153 MFD_HUGE_8MB
3154 MFD_HUGE_16MB
3155 MFD_HUGE_32MB
3156 MFD_HUGE_256MB
3157 MFD_HUGE_512MB
3158 MFD_HUGE_1GB
3159 MFD_HUGE_2GB
3160 MFD_HUGE_16GB
3161
3162 These flags can be passed to :func:`memfd_create`.
3163
3164 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer. The
3165 ``MFD_HUGE*`` flags are only available since Linux 4.14.
3166
3167 .. versionadded:: 3.8
3168
3169
Georg Brandlb9831ab2012-06-24 11:57:07 +02003170Linux extended attributes
3171~~~~~~~~~~~~~~~~~~~~~~~~~
3172
3173.. versionadded:: 3.3
3174
3175These functions are all available on Linux only.
3176
3177.. function:: getxattr(path, attribute, *, follow_symlinks=True)
3178
3179 Return the value of the extended filesystem attribute *attribute* for
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003180 *path*. *attribute* can be bytes or str (directly or indirectly through the
3181 :class:`PathLike` interface). If it is str, it is encoded with the filesystem
3182 encoding.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003183
3184 This function can support :ref:`specifying a file descriptor <path_fd>` and
3185 :ref:`not following symlinks <follow_symlinks>`.
3186
Steve Dowera00b5be2020-02-13 08:30:27 +00003187 .. audit-event:: os.getxattr path,attribute os.getxattr
3188
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003189 .. versionchanged:: 3.6
Berker Peksagd4d48742017-02-19 03:17:35 +03003190 Accepts a :term:`path-like object` for *path* and *attribute*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003191
Georg Brandlb9831ab2012-06-24 11:57:07 +02003192
3193.. function:: listxattr(path=None, *, follow_symlinks=True)
3194
3195 Return a list of the extended filesystem attributes on *path*. The
3196 attributes in the list are represented as strings decoded with the filesystem
3197 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
3198 directory.
3199
3200 This function can support :ref:`specifying a file descriptor <path_fd>` and
3201 :ref:`not following symlinks <follow_symlinks>`.
3202
Steve Dowera00b5be2020-02-13 08:30:27 +00003203 .. audit-event:: os.listxattr path os.listxattr
3204
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003205 .. versionchanged:: 3.6
3206 Accepts a :term:`path-like object`.
3207
Georg Brandlb9831ab2012-06-24 11:57:07 +02003208
3209.. function:: removexattr(path, attribute, *, follow_symlinks=True)
3210
3211 Removes the extended filesystem attribute *attribute* from *path*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003212 *attribute* should be bytes or str (directly or indirectly through the
3213 :class:`PathLike` interface). If it is a string, it is encoded
Georg Brandlb9831ab2012-06-24 11:57:07 +02003214 with the filesystem encoding.
3215
3216 This function can support :ref:`specifying a file descriptor <path_fd>` and
3217 :ref:`not following symlinks <follow_symlinks>`.
3218
Steve Dowera00b5be2020-02-13 08:30:27 +00003219 .. audit-event:: os.removexattr path,attribute os.removexattr
3220
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003221 .. versionchanged:: 3.6
3222 Accepts a :term:`path-like object` for *path* and *attribute*.
3223
Georg Brandlb9831ab2012-06-24 11:57:07 +02003224
3225.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
3226
3227 Set the extended filesystem attribute *attribute* on *path* to *value*.
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003228 *attribute* must be a bytes or str with no embedded NULs (directly or
3229 indirectly through the :class:`PathLike` interface). If it is a str,
Georg Brandlb9831ab2012-06-24 11:57:07 +02003230 it is encoded with the filesystem encoding. *flags* may be
3231 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
3232 given and the attribute does not exist, ``EEXISTS`` will be raised.
3233 If :data:`XATTR_CREATE` is given and the attribute already exists, the
3234 attribute will not be created and ``ENODATA`` will be raised.
3235
3236 This function can support :ref:`specifying a file descriptor <path_fd>` and
3237 :ref:`not following symlinks <follow_symlinks>`.
3238
3239 .. note::
3240
3241 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
3242 to be ignored on some filesystems.
3243
Steve Dowera00b5be2020-02-13 08:30:27 +00003244 .. audit-event:: os.setxattr path,attribute,value,flags os.setxattr
3245
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003246 .. versionchanged:: 3.6
3247 Accepts a :term:`path-like object` for *path* and *attribute*.
3248
Georg Brandlb9831ab2012-06-24 11:57:07 +02003249
3250.. data:: XATTR_SIZE_MAX
3251
3252 The maximum size the value of an extended attribute can be. Currently, this
Serhiy Storchakaf8def282013-02-16 17:29:56 +02003253 is 64 KiB on Linux.
Georg Brandlb9831ab2012-06-24 11:57:07 +02003254
3255
3256.. data:: XATTR_CREATE
3257
3258 This is a possible value for the flags argument in :func:`setxattr`. It
3259 indicates the operation must create an attribute.
3260
3261
3262.. data:: XATTR_REPLACE
3263
3264 This is a possible value for the flags argument in :func:`setxattr`. It
3265 indicates the operation must replace an existing attribute.
3266
3267
Georg Brandl116aa622007-08-15 14:28:22 +00003268.. _os-process:
3269
3270Process Management
3271------------------
3272
3273These functions may be used to create and manage processes.
3274
Serhiy Storchakadab83542013-10-13 20:12:43 +03003275The various :func:`exec\* <execl>` functions take a list of arguments for the new
Georg Brandl116aa622007-08-15 14:28:22 +00003276program loaded into the process. In each case, the first of these arguments is
3277passed to the new program as its own name rather than as an argument a user may
3278have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00003279passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00003280['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
3281to be ignored.
3282
3283
3284.. function:: abort()
3285
3286 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
3287 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02003288 an exit code of ``3``. Be aware that calling this function will not call the
3289 Python signal handler registered for :const:`SIGABRT` with
3290 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003291
Georg Brandl116aa622007-08-15 14:28:22 +00003292
Steve Dower2438cdf2019-03-29 16:37:16 -07003293.. function:: add_dll_directory(path)
3294
3295 Add a path to the DLL search path.
3296
3297 This search path is used when resolving dependencies for imported
3298 extension modules (the module itself is resolved through sys.path),
3299 and also by :mod:`ctypes`.
3300
3301 Remove the directory by calling **close()** on the returned object
3302 or using it in a :keyword:`with` statement.
3303
3304 See the `Microsoft documentation
3305 <https://msdn.microsoft.com/44228cf2-6306-466c-8f16-f513cd3ba8b5>`_
3306 for more information about how DLLs are loaded.
3307
Steve Dowera00b5be2020-02-13 08:30:27 +00003308 .. audit-event:: os.add_dll_directory path os.add_dll_directory
3309
Steve Dower2438cdf2019-03-29 16:37:16 -07003310 .. availability:: Windows.
3311
3312 .. versionadded:: 3.8
3313 Previous versions of CPython would resolve DLLs using the default
3314 behavior for the current process. This led to inconsistencies,
3315 such as only sometimes searching :envvar:`PATH` or the current
3316 working directory, and OS functions such as ``AddDllDirectory``
3317 having no effect.
3318
3319 In 3.8, the two primary ways DLLs are loaded now explicitly
3320 override the process-wide behavior to ensure consistency. See the
3321 :ref:`porting notes <bpo-36085-whatsnew>` for information on
3322 updating libraries.
3323
3324
Georg Brandl116aa622007-08-15 14:28:22 +00003325.. function:: execl(path, arg0, arg1, ...)
3326 execle(path, arg0, arg1, ..., env)
3327 execlp(file, arg0, arg1, ...)
3328 execlpe(file, arg0, arg1, ..., env)
3329 execv(path, args)
3330 execve(path, args, env)
3331 execvp(file, args)
3332 execvpe(file, args, env)
3333
3334 These functions all execute a new program, replacing the current process; they
3335 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00003336 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00003337 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00003338
3339 The current process is replaced immediately. Open file objects and
3340 descriptors are not flushed, so if there may be data buffered
3341 on these open files, you should flush them using
3342 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
Serhiy Storchakadab83542013-10-13 20:12:43 +03003343 :func:`exec\* <execl>` function.
Georg Brandl116aa622007-08-15 14:28:22 +00003344
Serhiy Storchakadab83542013-10-13 20:12:43 +03003345 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00003346 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00003347 to work with if the number of parameters is fixed when the code is written; the
3348 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00003349 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00003350 variable, with the arguments being passed in a list or tuple as the *args*
3351 parameter. In either case, the arguments to the child process should start with
3352 the name of the command being run, but this is not enforced.
3353
Christian Heimesfaf2f632008-01-06 16:59:19 +00003354 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00003355 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
3356 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03003357 environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00003358 discussed in the next paragraph), the new environment is used as the source of
3359 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
3360 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
3361 locate the executable; *path* must contain an appropriate absolute or relative
3362 path.
3363
3364 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00003365 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00003366 used to define the environment variables for the new process (these are used
3367 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00003368 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00003369 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00003370
Larry Hastings9cf065c2012-06-22 16:30:09 -07003371 For :func:`execve` on some platforms, *path* may also be specified as an open
3372 file descriptor. This functionality may not be supported on your platform;
3373 you can check whether or not it is available using :data:`os.supports_fd`.
3374 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
3375
Miss Islington (bot)3498ac52020-02-04 16:32:32 -08003376 .. audit-event:: os.exec path,args,env os.execl
3377
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003378 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003379
Larry Hastings9cf065c2012-06-22 16:30:09 -07003380 .. versionadded:: 3.3
Cheryl Sabellae1521692019-05-06 08:39:13 -04003381 Added support for specifying *path* as an open file descriptor
Larry Hastings9cf065c2012-06-22 16:30:09 -07003382 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00003383
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003384 .. versionchanged:: 3.6
3385 Accepts a :term:`path-like object`.
3386
Georg Brandl116aa622007-08-15 14:28:22 +00003387.. function:: _exit(n)
3388
Georg Brandl6f4e68d2010-10-17 10:51:45 +00003389 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00003390 stdio buffers, etc.
3391
Georg Brandl116aa622007-08-15 14:28:22 +00003392 .. note::
3393
Georg Brandl6f4e68d2010-10-17 10:51:45 +00003394 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
3395 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00003396
Christian Heimesfaf2f632008-01-06 16:59:19 +00003397The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00003398although they are not required. These are typically used for system programs
3399written in Python, such as a mail server's external command delivery program.
3400
3401.. note::
3402
3403 Some of these may not be available on all Unix platforms, since there is some
3404 variation. These constants are defined where they are defined by the underlying
3405 platform.
3406
3407
3408.. data:: EX_OK
3409
Benjamin Petersonf650e462010-05-06 23:03:05 +00003410 Exit code that means no error occurred.
3411
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003412 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003413
Georg Brandl116aa622007-08-15 14:28:22 +00003414
3415.. data:: EX_USAGE
3416
3417 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00003418 number of arguments are given.
3419
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003420 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003421
Georg Brandl116aa622007-08-15 14:28:22 +00003422
3423.. data:: EX_DATAERR
3424
Benjamin Petersonf650e462010-05-06 23:03:05 +00003425 Exit code that means the input data was incorrect.
3426
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003427 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003428
Georg Brandl116aa622007-08-15 14:28:22 +00003429
3430.. data:: EX_NOINPUT
3431
3432 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003433
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003434 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003435
Georg Brandl116aa622007-08-15 14:28:22 +00003436
3437.. data:: EX_NOUSER
3438
Benjamin Petersonf650e462010-05-06 23:03:05 +00003439 Exit code that means a specified user did not exist.
3440
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003441 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003442
Georg Brandl116aa622007-08-15 14:28:22 +00003443
3444.. data:: EX_NOHOST
3445
Benjamin Petersonf650e462010-05-06 23:03:05 +00003446 Exit code that means a specified host did not exist.
3447
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003448 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003449
Georg Brandl116aa622007-08-15 14:28:22 +00003450
3451.. data:: EX_UNAVAILABLE
3452
Benjamin Petersonf650e462010-05-06 23:03:05 +00003453 Exit code that means that a required service is unavailable.
3454
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003455 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003456
Georg Brandl116aa622007-08-15 14:28:22 +00003457
3458.. data:: EX_SOFTWARE
3459
Benjamin Petersonf650e462010-05-06 23:03:05 +00003460 Exit code that means an internal software error was detected.
3461
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003462 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003463
Georg Brandl116aa622007-08-15 14:28:22 +00003464
3465.. data:: EX_OSERR
3466
3467 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003468 inability to fork or create a pipe.
3469
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003470 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003471
Georg Brandl116aa622007-08-15 14:28:22 +00003472
3473.. data:: EX_OSFILE
3474
3475 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00003476 some other kind of error.
3477
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003478 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003479
Georg Brandl116aa622007-08-15 14:28:22 +00003480
3481.. data:: EX_CANTCREAT
3482
3483 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003484
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003485 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003486
Georg Brandl116aa622007-08-15 14:28:22 +00003487
3488.. data:: EX_IOERR
3489
3490 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003491
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003492 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003493
Georg Brandl116aa622007-08-15 14:28:22 +00003494
3495.. data:: EX_TEMPFAIL
3496
3497 Exit code that means a temporary failure occurred. This indicates something
3498 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00003499 made during a retryable operation.
3500
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003501 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003502
Georg Brandl116aa622007-08-15 14:28:22 +00003503
3504.. data:: EX_PROTOCOL
3505
3506 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00003507 understood.
3508
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003509 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003510
Georg Brandl116aa622007-08-15 14:28:22 +00003511
3512.. data:: EX_NOPERM
3513
3514 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003515 operation (but not intended for file system problems).
3516
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003517 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003518
Georg Brandl116aa622007-08-15 14:28:22 +00003519
3520.. data:: EX_CONFIG
3521
3522 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003523
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003524 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003525
Georg Brandl116aa622007-08-15 14:28:22 +00003526
3527.. data:: EX_NOTFOUND
3528
Benjamin Petersonf650e462010-05-06 23:03:05 +00003529 Exit code that means something like "an entry was not found".
3530
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003531 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003532
Georg Brandl116aa622007-08-15 14:28:22 +00003533
3534.. function:: fork()
3535
Christian Heimesfaf2f632008-01-06 16:59:19 +00003536 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003537 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00003538
Larry Hastings3732ed22014-03-15 21:13:56 -07003539 Note that some platforms including FreeBSD <= 6.3 and Cygwin have
Miss Islington (bot)a4be5aa2019-11-15 13:37:25 -08003540 known issues when using ``fork()`` from a thread.
3541
Steve Dowera00b5be2020-02-13 08:30:27 +00003542 .. audit-event:: os.fork "" os.fork
3543
Miss Islington (bot)a4be5aa2019-11-15 13:37:25 -08003544 .. versionchanged:: 3.8
3545 Calling ``fork()`` in a subinterpreter is no longer supported
3546 (:exc:`RuntimeError` is raised).
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00003547
Christian Heimes3046fe42013-10-29 21:08:56 +01003548 .. warning::
3549
3550 See :mod:`ssl` for applications that use the SSL module with fork().
3551
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003552 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003553
3554
3555.. function:: forkpty()
3556
3557 Fork a child process, using a new pseudo-terminal as the child's controlling
3558 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
3559 new child's process id in the parent, and *fd* is the file descriptor of the
3560 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003561 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003562
Steve Dowera00b5be2020-02-13 08:30:27 +00003563 .. audit-event:: os.forkpty "" os.forkpty
3564
Miss Islington (bot)a4be5aa2019-11-15 13:37:25 -08003565 .. versionchanged:: 3.8
3566 Calling ``forkpty()`` in a subinterpreter is no longer supported
3567 (:exc:`RuntimeError` is raised).
3568
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003569 .. availability:: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003570
3571
3572.. function:: kill(pid, sig)
3573
3574 .. index::
3575 single: process; killing
3576 single: process; signalling
3577
3578 Send signal *sig* to the process *pid*. Constants for the specific signals
3579 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00003580
3581 Windows: The :data:`signal.CTRL_C_EVENT` and
3582 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
3583 only be sent to console processes which share a common console window,
3584 e.g., some subprocesses. Any other value for *sig* will cause the process
3585 to be unconditionally killed by the TerminateProcess API, and the exit code
3586 will be set to *sig*. The Windows version of :func:`kill` additionally takes
3587 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00003588
Victor Stinnerb3e72192011-05-08 01:46:11 +02003589 See also :func:`signal.pthread_kill`.
3590
Steve Dowera00b5be2020-02-13 08:30:27 +00003591 .. audit-event:: os.kill pid,sig os.kill
3592
Georg Brandl67b21b72010-08-17 15:07:14 +00003593 .. versionadded:: 3.2
3594 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00003595
Georg Brandl116aa622007-08-15 14:28:22 +00003596
3597.. function:: killpg(pgid, sig)
3598
3599 .. index::
3600 single: process; killing
3601 single: process; signalling
3602
Benjamin Petersonf650e462010-05-06 23:03:05 +00003603 Send the signal *sig* to the process group *pgid*.
3604
Steve Dowera00b5be2020-02-13 08:30:27 +00003605 .. audit-event:: os.killpg pgid,sig os.killpg
3606
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003607 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003608
Georg Brandl116aa622007-08-15 14:28:22 +00003609
3610.. function:: nice(increment)
3611
3612 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003613
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003614 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003615
3616
3617.. function:: plock(op)
3618
3619 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00003620 ``<sys/lock.h>``) determines which segments are locked.
3621
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003622 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003623
3624
Martin Panterbf19d162015-09-09 01:01:13 +00003625.. function:: popen(cmd, mode='r', buffering=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00003626
Martin Panterbf19d162015-09-09 01:01:13 +00003627 Open a pipe to or from command *cmd*.
3628 The return value is an open file object
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003629 connected to the pipe, which can be read or written depending on whether *mode*
3630 is ``'r'`` (default) or ``'w'``. The *buffering* argument has the same meaning as
3631 the corresponding argument to the built-in :func:`open` function. The
3632 returned file object reads or writes text strings rather than bytes.
3633
3634 The ``close`` method returns :const:`None` if the subprocess exited
3635 successfully, or the subprocess's return code if there was an
3636 error. On POSIX systems, if the return code is positive it
3637 represents the return value of the process left-shifted by one
3638 byte. If the return code is negative, the process was terminated
3639 by the signal given by the negated value of the return code. (For
3640 example, the return value might be ``- signal.SIGKILL`` if the
3641 subprocess was killed.) On Windows systems, the return value
3642 contains the signed integer return code from the child process.
3643
3644 This is implemented using :class:`subprocess.Popen`; see that class's
3645 documentation for more powerful ways to manage and communicate with
3646 subprocesses.
Georg Brandl116aa622007-08-15 14:28:22 +00003647
3648
Serhiy Storchakad700f972018-09-08 14:48:18 +03003649.. function:: posix_spawn(path, argv, env, *, file_actions=None, \
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003650 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \
Pablo Galindo254a4662018-09-07 16:44:24 +01003651 setsigdef=(), scheduler=None)
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003652
Serhiy Storchakaef347532018-05-01 16:45:04 +03003653 Wraps the :c:func:`posix_spawn` C library API for use from Python.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003654
Serhiy Storchakaef347532018-05-01 16:45:04 +03003655 Most users should use :func:`subprocess.run` instead of :func:`posix_spawn`.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003656
Serhiy Storchakad700f972018-09-08 14:48:18 +03003657 The positional-only arguments *path*, *args*, and *env* are similar to
3658 :func:`execve`.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003659
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003660 The *path* parameter is the path to the executable file.The *path* should
3661 contain a directory.Use :func:`posix_spawnp` to pass an executable file
3662 without directory.
3663
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003664 The *file_actions* argument may be a sequence of tuples describing actions
3665 to take on specific file descriptors in the child process between the C
Serhiy Storchakaef347532018-05-01 16:45:04 +03003666 library implementation's :c:func:`fork` and :c:func:`exec` steps.
3667 The first item in each tuple must be one of the three type indicator
3668 listed below describing the remaining tuple elements:
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003669
Serhiy Storchakaef347532018-05-01 16:45:04 +03003670 .. data:: POSIX_SPAWN_OPEN
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003671
Serhiy Storchakaef347532018-05-01 16:45:04 +03003672 (``os.POSIX_SPAWN_OPEN``, *fd*, *path*, *flags*, *mode*)
3673
3674 Performs ``os.dup2(os.open(path, flags, mode), fd)``.
3675
3676 .. data:: POSIX_SPAWN_CLOSE
3677
3678 (``os.POSIX_SPAWN_CLOSE``, *fd*)
3679
3680 Performs ``os.close(fd)``.
3681
3682 .. data:: POSIX_SPAWN_DUP2
3683
3684 (``os.POSIX_SPAWN_DUP2``, *fd*, *new_fd*)
3685
3686 Performs ``os.dup2(fd, new_fd)``.
3687
3688 These tuples correspond to the C library
3689 :c:func:`posix_spawn_file_actions_addopen`,
3690 :c:func:`posix_spawn_file_actions_addclose`, and
3691 :c:func:`posix_spawn_file_actions_adddup2` API calls used to prepare
3692 for the :c:func:`posix_spawn` call itself.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003693
Pablo Galindo254a4662018-09-07 16:44:24 +01003694 The *setpgroup* argument will set the process group of the child to the value
3695 specified. If the value specified is 0, the child's process group ID will be
3696 made the same as its process ID. If the value of *setpgroup* is not set, the
3697 child will inherit the parent's process group ID. This argument corresponds
3698 to the C library :c:data:`POSIX_SPAWN_SETPGROUP` flag.
3699
3700 If the *resetids* argument is ``True`` it will reset the effective UID and
3701 GID of the child to the real UID and GID of the parent process. If the
3702 argument is ``False``, then the child retains the effective UID and GID of
3703 the parent. In either case, if the set-user-ID and set-group-ID permission
3704 bits are enabled on the executable file, their effect will override the
3705 setting of the effective UID and GID. This argument corresponds to the C
3706 library :c:data:`POSIX_SPAWN_RESETIDS` flag.
3707
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003708 If the *setsid* argument is ``True``, it will create a new session ID
3709 for `posix_spawn`. *setsid* requires :c:data:`POSIX_SPAWN_SETSID`
3710 or :c:data:`POSIX_SPAWN_SETSID_NP` flag. Otherwise, :exc:`NotImplementedError`
3711 is raised.
3712
Pablo Galindo254a4662018-09-07 16:44:24 +01003713 The *setsigmask* argument will set the signal mask to the signal set
3714 specified. If the parameter is not used, then the child inherits the
3715 parent's signal mask. This argument corresponds to the C library
3716 :c:data:`POSIX_SPAWN_SETSIGMASK` flag.
3717
3718 The *sigdef* argument will reset the disposition of all signals in the set
3719 specified. This argument corresponds to the C library
3720 :c:data:`POSIX_SPAWN_SETSIGDEF` flag.
3721
3722 The *scheduler* argument must be a tuple containing the (optional) scheduler
3723 policy and an instance of :class:`sched_param` with the scheduler parameters.
3724 A value of ``None`` in the place of the scheduler policy indicates that is
3725 not being provided. This argument is a combination of the C library
3726 :c:data:`POSIX_SPAWN_SETSCHEDPARAM` and :c:data:`POSIX_SPAWN_SETSCHEDULER`
3727 flags.
3728
Miss Islington (bot)3498ac52020-02-04 16:32:32 -08003729 .. audit-event:: os.posix_spawn path,argv,env os.posix_spawn
3730
Mark Williams8b504002019-03-03 09:42:25 -08003731 .. versionadded:: 3.8
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003732
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003733 .. availability:: Unix.
Gregory P. Smith79760ed2018-04-01 12:01:48 -07003734
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003735.. function:: posix_spawnp(path, argv, env, *, file_actions=None, \
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003736 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003737 setsigdef=(), scheduler=None)
3738
3739 Wraps the :c:func:`posix_spawnp` C library API for use from Python.
3740
3741 Similar to :func:`posix_spawn` except that the system searches
3742 for the *executable* file in the list of directories specified by the
3743 :envvar:`PATH` environment variable (in the same way as for ``execvp(3)``).
3744
Miss Islington (bot)3498ac52020-02-04 16:32:32 -08003745 .. audit-event:: os.posix_spawn path,argv,env os.posix_spawnp
3746
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003747 .. versionadded:: 3.8
3748
Joannah Nanjekye80c5dfe2019-02-01 13:05:22 +03003749 .. availability:: See :func:`posix_spawn` documentation.
3750
Joannah Nanjekye92b83222019-01-16 16:29:26 +03003751
Gregory P. Smith163468a2017-05-29 10:03:41 -07003752.. function:: register_at_fork(*, before=None, after_in_parent=None, \
3753 after_in_child=None)
Antoine Pitrou346cbd32017-05-27 17:50:54 +02003754
Gregory P. Smith163468a2017-05-29 10:03:41 -07003755 Register callables to be executed when a new child process is forked
3756 using :func:`os.fork` or similar process cloning APIs.
3757 The parameters are optional and keyword-only.
3758 Each specifies a different call point.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02003759
Gregory P. Smith163468a2017-05-29 10:03:41 -07003760 * *before* is a function called before forking a child process.
3761 * *after_in_parent* is a function called from the parent process
3762 after forking a child process.
3763 * *after_in_child* is a function called from the child process.
3764
3765 These calls are only made if control is expected to return to the
3766 Python interpreter. A typical :mod:`subprocess` launch will not
3767 trigger them as the child is not going to re-enter the interpreter.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02003768
3769 Functions registered for execution before forking are called in
3770 reverse registration order. Functions registered for execution
3771 after forking (either in the parent or in the child) are called
3772 in registration order.
3773
3774 Note that :c:func:`fork` calls made by third-party C code may not
3775 call those functions, unless it explicitly calls :c:func:`PyOS_BeforeFork`,
3776 :c:func:`PyOS_AfterFork_Parent` and :c:func:`PyOS_AfterFork_Child`.
3777
Gregory P. Smith163468a2017-05-29 10:03:41 -07003778 There is no way to unregister a function.
3779
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003780 .. availability:: Unix.
Antoine Pitrou346cbd32017-05-27 17:50:54 +02003781
3782 .. versionadded:: 3.7
3783
3784
Georg Brandl116aa622007-08-15 14:28:22 +00003785.. function:: spawnl(mode, path, ...)
3786 spawnle(mode, path, ..., env)
3787 spawnlp(mode, file, ...)
3788 spawnlpe(mode, file, ..., env)
3789 spawnv(mode, path, args)
3790 spawnve(mode, path, args, env)
3791 spawnvp(mode, file, args)
3792 spawnvpe(mode, file, args, env)
3793
3794 Execute the program *path* in a new process.
3795
3796 (Note that the :mod:`subprocess` module provides more powerful facilities for
3797 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00003798 preferable to using these functions. Check especially the
3799 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00003800
Christian Heimesfaf2f632008-01-06 16:59:19 +00003801 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00003802 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
3803 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00003804 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00003805 be used with the :func:`waitpid` function.
3806
pxinwrf2d7ac72019-05-21 18:46:37 +08003807 Note on VxWorks, this function doesn't return ``-signal`` when the new process is
3808 killed. Instead it raises OSError exception.
3809
Serhiy Storchakadab83542013-10-13 20:12:43 +03003810 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00003811 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00003812 to work with if the number of parameters is fixed when the code is written; the
3813 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00003814 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00003815 parameters is variable, with the arguments being passed in a list or tuple as
3816 the *args* parameter. In either case, the arguments to the child process must
3817 start with the name of the command being run.
3818
Christian Heimesfaf2f632008-01-06 16:59:19 +00003819 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00003820 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
3821 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03003822 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00003823 discussed in the next paragraph), the new environment is used as the source of
3824 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
3825 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
3826 :envvar:`PATH` variable to locate the executable; *path* must contain an
3827 appropriate absolute or relative path.
3828
3829 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00003830 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00003831 which is used to define the environment variables for the new process (they are
3832 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00003833 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00003834 the new process to inherit the environment of the current process. Note that
3835 keys and values in the *env* dictionary must be strings; invalid keys or
3836 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00003837
3838 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
3839 equivalent::
3840
3841 import os
3842 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
3843
3844 L = ['cp', 'index.html', '/dev/null']
3845 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
3846
Miss Islington (bot)3498ac52020-02-04 16:32:32 -08003847 .. audit-event:: os.spawn mode,path,args,env os.spawnl
3848
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003849 .. availability:: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
3850 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
3851 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
3852 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00003853
Brett Cannon6fa7aad2016-09-06 15:55:02 -07003854 .. versionchanged:: 3.6
3855 Accepts a :term:`path-like object`.
3856
Georg Brandl116aa622007-08-15 14:28:22 +00003857
3858.. data:: P_NOWAIT
3859 P_NOWAITO
3860
Serhiy Storchakadab83542013-10-13 20:12:43 +03003861 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003862 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00003863 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00003864 the return value.
3865
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003866 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003867
Georg Brandl116aa622007-08-15 14:28:22 +00003868
3869.. data:: P_WAIT
3870
Serhiy Storchakadab83542013-10-13 20:12:43 +03003871 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003872 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
3873 return until the new process has run to completion and will return the exit code
3874 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003875 process.
3876
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003877 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003878
Georg Brandl116aa622007-08-15 14:28:22 +00003879
3880.. data:: P_DETACH
3881 P_OVERLAY
3882
Serhiy Storchakadab83542013-10-13 20:12:43 +03003883 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003884 functions. These are less portable than those listed above. :const:`P_DETACH`
3885 is similar to :const:`P_NOWAIT`, but the new process is detached from the
3886 console of the calling process. If :const:`P_OVERLAY` is used, the current
Serhiy Storchakadab83542013-10-13 20:12:43 +03003887 process will be replaced; the :func:`spawn\* <spawnl>` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003888
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003889 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003890
Georg Brandl116aa622007-08-15 14:28:22 +00003891
3892.. function:: startfile(path[, operation])
3893
3894 Start a file with its associated application.
3895
3896 When *operation* is not specified or ``'open'``, this acts like double-clicking
3897 the file in Windows Explorer, or giving the file name as an argument to the
3898 :program:`start` command from the interactive command shell: the file is opened
3899 with whatever application (if any) its extension is associated.
3900
3901 When another *operation* is given, it must be a "command verb" that specifies
3902 what should be done with the file. Common verbs documented by Microsoft are
3903 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
3904 ``'find'`` (to be used on directories).
3905
3906 :func:`startfile` returns as soon as the associated application is launched.
3907 There is no option to wait for the application to close, and no way to retrieve
3908 the application's exit status. The *path* parameter is relative to the current
3909 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00003910 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00003911 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003912 the path is properly encoded for Win32.
3913
Steve Dower7d0e0c92015-01-24 08:18:24 -08003914 To reduce interpreter startup overhead, the Win32 :c:func:`ShellExecute`
3915 function is not resolved until this function is first called. If the function
3916 cannot be resolved, :exc:`NotImplementedError` will be raised.
3917
Miss Islington (bot)3498ac52020-02-04 16:32:32 -08003918 .. audit-event:: os.startfile path,operation os.startfile
3919
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003920 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003921
Georg Brandl116aa622007-08-15 14:28:22 +00003922
3923.. function:: system(command)
3924
3925 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00003926 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00003927 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
3928 the executed command. If *command* generates any output, it will be sent to
3929 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00003930
3931 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00003932 format specified for :func:`wait`. Note that POSIX does not specify the
3933 meaning of the return value of the C :c:func:`system` function, so the return
3934 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00003935
Georg Brandl8f7b4272010-10-14 06:35:53 +00003936 On Windows, the return value is that returned by the system shell after
3937 running *command*. The shell is given by the Windows environment variable
3938 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
3939 status of the command run; on systems using a non-native shell, consult your
3940 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00003941
Georg Brandl8f7b4272010-10-14 06:35:53 +00003942 The :mod:`subprocess` module provides more powerful facilities for spawning
3943 new processes and retrieving their results; using that module is preferable
3944 to using this function. See the :ref:`subprocess-replacements` section in
3945 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00003946
Miss Islington (bot)4fee28a2019-06-27 11:07:16 -07003947 .. audit-event:: os.system command os.system
Steve Dowerb82e17e2019-05-23 08:45:22 -07003948
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003949 .. availability:: Unix, Windows.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003950
Georg Brandl116aa622007-08-15 14:28:22 +00003951
3952.. function:: times()
3953
Larry Hastings605a62d2012-06-24 04:33:36 -07003954 Returns the current global process times.
3955 The return value is an object with five attributes:
3956
3957 * :attr:`user` - user time
3958 * :attr:`system` - system time
3959 * :attr:`children_user` - user time of all child processes
3960 * :attr:`children_system` - system time of all child processes
3961 * :attr:`elapsed` - elapsed real time since a fixed point in the past
3962
3963 For backwards compatibility, this object also behaves like a five-tuple
3964 containing :attr:`user`, :attr:`system`, :attr:`children_user`,
3965 :attr:`children_system`, and :attr:`elapsed` in that order.
3966
3967 See the Unix manual page
Miss Islington (bot)cc51a6d2019-09-07 00:12:34 -07003968 :manpage:`times(2)` and :manpage:`times(3)` manual page on Unix or `the GetProcessTimes MSDN
Miss Islington (bot)4d430172020-02-10 14:57:14 -08003969 <https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes>`_
3970 on Windows. On Windows, only :attr:`user` and :attr:`system` are known; the other attributes are zero.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003971
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003972 .. availability:: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003973
Larry Hastings605a62d2012-06-24 04:33:36 -07003974 .. versionchanged:: 3.3
3975 Return type changed from a tuple to a tuple-like object
3976 with named attributes.
3977
Georg Brandl116aa622007-08-15 14:28:22 +00003978
3979.. function:: wait()
3980
3981 Wait for completion of a child process, and return a tuple containing its pid
3982 and exit status indication: a 16-bit number, whose low byte is the signal number
3983 that killed the process, and whose high byte is the exit status (if the signal
3984 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003985 produced.
3986
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04003987 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003988
Ross Lagerwall7807c352011-03-17 20:20:30 +02003989.. function:: waitid(idtype, id, options)
3990
3991 Wait for the completion of one or more child processes.
3992 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
3993 *id* specifies the pid to wait on.
3994 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
3995 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
3996 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
3997 representing the data contained in the :c:type:`siginfo_t` structure, namely:
3998 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
3999 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
4000 children in a waitable state.
4001
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004002 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004003
4004 .. versionadded:: 3.3
4005
4006.. data:: P_PID
4007 P_PGID
4008 P_ALL
4009
4010 These are the possible values for *idtype* in :func:`waitid`. They affect
4011 how *id* is interpreted.
4012
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004013 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004014
4015 .. versionadded:: 3.3
4016
4017.. data:: WEXITED
4018 WSTOPPED
4019 WNOWAIT
4020
4021 Flags that can be used in *options* in :func:`waitid` that specify what
4022 child signal to wait for.
4023
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004024 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004025
4026 .. versionadded:: 3.3
4027
4028
4029.. data:: CLD_EXITED
4030 CLD_DUMPED
4031 CLD_TRAPPED
4032 CLD_CONTINUED
4033
4034 These are the possible values for :attr:`si_code` in the result returned by
4035 :func:`waitid`.
4036
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004037 .. availability:: Unix.
Ross Lagerwall7807c352011-03-17 20:20:30 +02004038
4039 .. versionadded:: 3.3
4040
Georg Brandl116aa622007-08-15 14:28:22 +00004041
4042.. function:: waitpid(pid, options)
4043
4044 The details of this function differ on Unix and Windows.
4045
4046 On Unix: Wait for completion of a child process given by process id *pid*, and
4047 return a tuple containing its process id and exit status indication (encoded as
4048 for :func:`wait`). The semantics of the call are affected by the value of the
4049 integer *options*, which should be ``0`` for normal operation.
4050
4051 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
4052 that specific process. If *pid* is ``0``, the request is for the status of any
4053 child in the process group of the current process. If *pid* is ``-1``, the
4054 request pertains to any child of the current process. If *pid* is less than
4055 ``-1``, status is requested for any process in the process group ``-pid`` (the
4056 absolute value of *pid*).
4057
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00004058 An :exc:`OSError` is raised with the value of errno when the syscall
4059 returns -1.
4060
Georg Brandl116aa622007-08-15 14:28:22 +00004061 On Windows: Wait for completion of a process given by process handle *pid*, and
4062 return a tuple containing *pid*, and its exit status shifted left by 8 bits
4063 (shifting makes cross-platform use of the function easier). A *pid* less than or
4064 equal to ``0`` has no special meaning on Windows, and raises an exception. The
4065 value of integer *options* has no effect. *pid* can refer to any process whose
Serhiy Storchakadab83542013-10-13 20:12:43 +03004066 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
4067 functions called with :const:`P_NOWAIT` return suitable process handles.
Georg Brandl116aa622007-08-15 14:28:22 +00004068
Victor Stinnera766ddf2015-03-26 23:50:57 +01004069 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02004070 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01004071 exception, the function now retries the system call instead of raising an
4072 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
4073
Georg Brandl116aa622007-08-15 14:28:22 +00004074
Ezio Melottiba4d8ed2012-11-23 19:45:52 +02004075.. function:: wait3(options)
Georg Brandl116aa622007-08-15 14:28:22 +00004076
4077 Similar to :func:`waitpid`, except no process id argument is given and a
Serhiy Storchaka3f819ca2018-10-31 02:26:06 +02004078 3-element tuple containing the child's process id, exit status indication,
4079 and resource usage information is returned. Refer to
4080 :mod:`resource`.\ :func:`~resource.getrusage` for details on resource usage
4081 information. The option argument is the same as that provided to
4082 :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004083
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004084 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004085
Georg Brandl116aa622007-08-15 14:28:22 +00004086
Victor Stinner4195b5c2012-02-08 23:03:19 +01004087.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00004088
4089 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
4090 process id, exit status indication, and resource usage information is returned.
Serhiy Storchakadab83542013-10-13 20:12:43 +03004091 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
4092 resource usage information. The arguments to :func:`wait4` are the same
4093 as those provided to :func:`waitpid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004094
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004095 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004096
Georg Brandl116aa622007-08-15 14:28:22 +00004097
4098.. data:: WNOHANG
4099
4100 The option for :func:`waitpid` to return immediately if no child process status
4101 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004102
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004103 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004104
4105
4106.. data:: WCONTINUED
4107
4108 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00004109 from a job control stop since their status was last reported.
4110
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004111 .. availability:: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00004112
Georg Brandl116aa622007-08-15 14:28:22 +00004113
4114.. data:: WUNTRACED
4115
4116 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00004117 their current state has not been reported since they were stopped.
4118
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004119 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004120
Georg Brandl116aa622007-08-15 14:28:22 +00004121
4122The following functions take a process status code as returned by
4123:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
4124used to determine the disposition of a process.
4125
Georg Brandl116aa622007-08-15 14:28:22 +00004126.. function:: WCOREDUMP(status)
4127
Christian Heimesfaf2f632008-01-06 16:59:19 +00004128 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00004129 return ``False``.
4130
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004131 This function should be employed only if :func:`WIFSIGNALED` is true.
4132
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004133 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004134
Georg Brandl116aa622007-08-15 14:28:22 +00004135
4136.. function:: WIFCONTINUED(status)
4137
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004138 Return ``True`` if a stopped child has been resumed by delivery of
4139 :data:`~signal.SIGCONT` (if the process has been continued from a job
4140 control stop), otherwise return ``False``.
4141
4142 See :data:`WCONTINUED` option.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004143
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004144 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004145
Georg Brandl116aa622007-08-15 14:28:22 +00004146
4147.. function:: WIFSTOPPED(status)
4148
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004149 Return ``True`` if the process was stopped by delivery of a signal,
4150 otherwise return ``False``.
4151
4152 :func:`WIFSTOPPED` only returns ``True`` if the :func:`waitpid` call was
4153 done using :data:`WUNTRACED` option or when the process is being traced (see
4154 :manpage:`ptrace(2)`).
Benjamin Petersonf650e462010-05-06 23:03:05 +00004155
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004156 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004157
Georg Brandl116aa622007-08-15 14:28:22 +00004158.. function:: WIFSIGNALED(status)
4159
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004160 Return ``True`` if the process was terminated by a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00004161 ``False``.
4162
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004163 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004164
4165
4166.. function:: WIFEXITED(status)
4167
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004168 Return ``True`` if the process exited terminated normally, that is,
4169 by calling ``exit()`` or ``_exit()``, or by returning from ``main()``;
Benjamin Petersonf650e462010-05-06 23:03:05 +00004170 otherwise return ``False``.
4171
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004172 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004173
4174
4175.. function:: WEXITSTATUS(status)
4176
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004177 Return the process exit status.
4178
4179 This function should be employed only if :func:`WIFEXITED` is true.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004180
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004181 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004182
4183
4184.. function:: WSTOPSIG(status)
4185
Benjamin Petersonf650e462010-05-06 23:03:05 +00004186 Return the signal which caused the process to stop.
4187
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004188 This function should be employed only if :func:`WIFSTOPPED` is true.
4189
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004190 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004191
4192
4193.. function:: WTERMSIG(status)
4194
Miss Islington (bot)267afc22020-04-01 16:26:55 -07004195 Return the number of the signal that caused the process to terminate.
4196
4197 This function should be employed only if :func:`WIFSIGNALED` is true.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004198
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004199 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004200
4201
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004202Interface to the scheduler
4203--------------------------
4204
4205These functions control how a process is allocated CPU time by the operating
4206system. They are only available on some Unix platforms. For more detailed
4207information, consult your Unix manpages.
4208
4209.. versionadded:: 3.3
4210
Andrew Kuchling4921a082013-06-21 11:49:57 -04004211The following scheduling policies are exposed if they are supported by the
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004212operating system.
4213
4214.. data:: SCHED_OTHER
4215
4216 The default scheduling policy.
4217
4218.. data:: SCHED_BATCH
4219
4220 Scheduling policy for CPU-intensive processes that tries to preserve
4221 interactivity on the rest of the computer.
4222
4223.. data:: SCHED_IDLE
4224
4225 Scheduling policy for extremely low priority background tasks.
4226
4227.. data:: SCHED_SPORADIC
4228
4229 Scheduling policy for sporadic server programs.
4230
4231.. data:: SCHED_FIFO
4232
4233 A First In First Out scheduling policy.
4234
4235.. data:: SCHED_RR
4236
4237 A round-robin scheduling policy.
4238
4239.. data:: SCHED_RESET_ON_FORK
4240
Martin Panter8d56c022016-05-29 04:13:35 +00004241 This flag can be OR'ed with any other scheduling policy. When a process with
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004242 this flag set forks, its child's scheduling policy and priority are reset to
4243 the default.
4244
4245
4246.. class:: sched_param(sched_priority)
4247
4248 This class represents tunable scheduling parameters used in
4249 :func:`sched_setparam`, :func:`sched_setscheduler`, and
4250 :func:`sched_getparam`. It is immutable.
4251
4252 At the moment, there is only one possible parameter:
4253
4254 .. attribute:: sched_priority
4255
4256 The scheduling priority for a scheduling policy.
4257
4258
4259.. function:: sched_get_priority_min(policy)
4260
4261 Get the minimum priority value for *policy*. *policy* is one of the
4262 scheduling policy constants above.
4263
4264
4265.. function:: sched_get_priority_max(policy)
4266
4267 Get the maximum priority value for *policy*. *policy* is one of the
4268 scheduling policy constants above.
4269
4270
4271.. function:: sched_setscheduler(pid, policy, param)
4272
4273 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
4274 the calling process. *policy* is one of the scheduling policy constants
4275 above. *param* is a :class:`sched_param` instance.
4276
4277
4278.. function:: sched_getscheduler(pid)
4279
4280 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
4281 means the calling process. The result is one of the scheduling policy
4282 constants above.
4283
4284
4285.. function:: sched_setparam(pid, param)
4286
4287 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
4288 the calling process. *param* is a :class:`sched_param` instance.
4289
4290
4291.. function:: sched_getparam(pid)
4292
4293 Return the scheduling parameters as a :class:`sched_param` instance for the
4294 process with PID *pid*. A *pid* of 0 means the calling process.
4295
4296
4297.. function:: sched_rr_get_interval(pid)
4298
4299 Return the round-robin quantum in seconds for the process with PID *pid*. A
4300 *pid* of 0 means the calling process.
4301
4302
4303.. function:: sched_yield()
4304
4305 Voluntarily relinquish the CPU.
4306
4307
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004308.. function:: sched_setaffinity(pid, mask)
4309
Antoine Pitrou84869872012-08-04 16:16:35 +02004310 Restrict the process with PID *pid* (or the current process if zero) to a
4311 set of CPUs. *mask* is an iterable of integers representing the set of
4312 CPUs to which the process should be restricted.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004313
4314
Antoine Pitrou84869872012-08-04 16:16:35 +02004315.. function:: sched_getaffinity(pid)
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004316
Antoine Pitrou84869872012-08-04 16:16:35 +02004317 Return the set of CPUs the process with PID *pid* (or the current process
4318 if zero) is restricted to.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05004319
4320
Georg Brandl116aa622007-08-15 14:28:22 +00004321.. _os-path:
4322
4323Miscellaneous System Information
4324--------------------------------
4325
4326
4327.. function:: confstr(name)
4328
4329 Return string-valued system configuration values. *name* specifies the
4330 configuration value to retrieve; it may be a string which is the name of a
4331 defined system value; these names are specified in a number of standards (POSIX,
4332 Unix 95, Unix 98, and others). Some platforms define additional names as well.
4333 The names known to the host operating system are given as the keys of the
4334 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00004335 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00004336
4337 If the configuration value specified by *name* isn't defined, ``None`` is
4338 returned.
4339
4340 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
4341 specific value for *name* is not supported by the host system, even if it is
4342 included in ``confstr_names``, an :exc:`OSError` is raised with
4343 :const:`errno.EINVAL` for the error number.
4344
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004345 .. availability:: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004346
Georg Brandl116aa622007-08-15 14:28:22 +00004347
4348.. data:: confstr_names
4349
4350 Dictionary mapping names accepted by :func:`confstr` to the integer values
4351 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00004352 determine the set of names known to the system.
4353
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004354 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004355
4356
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004357.. function:: cpu_count()
4358
Serhiy Storchakaecf41da2016-10-19 16:29:26 +03004359 Return the number of CPUs in the system. Returns ``None`` if undetermined.
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004360
Charles-François Natalidc87e4b2015-07-13 21:01:39 +01004361 This number is not equivalent to the number of CPUs the current process can
4362 use. The number of usable CPUs can be obtained with
4363 ``len(os.sched_getaffinity(0))``
4364
4365
Charles-Francois Natali44feda32013-05-20 14:40:46 +02004366 .. versionadded:: 3.4
4367
4368
Georg Brandl116aa622007-08-15 14:28:22 +00004369.. function:: getloadavg()
4370
Christian Heimesa62da1d2008-01-12 19:39:10 +00004371 Return the number of processes in the system run queue averaged over the last
4372 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00004373 unobtainable.
4374
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004375 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004376
Georg Brandl116aa622007-08-15 14:28:22 +00004377
4378.. function:: sysconf(name)
4379
4380 Return integer-valued system configuration values. If the configuration value
4381 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
4382 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
4383 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00004384
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004385 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004386
4387
4388.. data:: sysconf_names
4389
4390 Dictionary mapping names accepted by :func:`sysconf` to the integer values
4391 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00004392 determine the set of names known to the system.
4393
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004394 .. availability:: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00004395
Christian Heimesfaf2f632008-01-06 16:59:19 +00004396The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00004397are defined for all platforms.
4398
4399Higher-level operations on pathnames are defined in the :mod:`os.path` module.
4400
4401
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004402.. index:: single: . (dot); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004403.. data:: curdir
4404
4405 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00004406 directory. This is ``'.'`` for Windows and POSIX. Also available via
4407 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004408
4409
Serhiy Storchakaddb961d2018-10-26 09:00:49 +03004410.. index:: single: ..; in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004411.. data:: pardir
4412
4413 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00004414 directory. This is ``'..'`` for Windows and POSIX. Also available via
4415 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004416
4417
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004418.. index:: single: / (slash); in pathnames
4419.. index:: single: \ (backslash); in pathnames (Windows)
Georg Brandl116aa622007-08-15 14:28:22 +00004420.. data:: sep
4421
Georg Brandlc575c902008-09-13 17:46:05 +00004422 The character used by the operating system to separate pathname components.
4423 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
4424 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00004425 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
4426 useful. Also available via :mod:`os.path`.
4427
4428
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004429.. index:: single: / (slash); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004430.. data:: altsep
4431
4432 An alternative character used by the operating system to separate pathname
4433 components, or ``None`` if only one separator character exists. This is set to
4434 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
4435 :mod:`os.path`.
4436
4437
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004438.. index:: single: . (dot); in pathnames
Georg Brandl116aa622007-08-15 14:28:22 +00004439.. data:: extsep
4440
4441 The character which separates the base filename from the extension; for example,
4442 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
4443
Georg Brandl116aa622007-08-15 14:28:22 +00004444
Serhiy Storchaka913876d2018-10-28 13:41:26 +02004445.. index:: single: : (colon); path separator (POSIX)
4446 single: ; (semicolon)
Georg Brandl116aa622007-08-15 14:28:22 +00004447.. data:: pathsep
4448
4449 The character conventionally used by the operating system to separate search
4450 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
4451 Windows. Also available via :mod:`os.path`.
4452
4453
4454.. data:: defpath
4455
Serhiy Storchakadab83542013-10-13 20:12:43 +03004456 The default search path used by :func:`exec\*p\* <execl>` and
4457 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
4458 key. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004459
4460
4461.. data:: linesep
4462
4463 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00004464 platform. This may be a single character, such as ``'\n'`` for POSIX, or
4465 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
4466 *os.linesep* as a line terminator when writing files opened in text mode (the
4467 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00004468
4469
4470.. data:: devnull
4471
Georg Brandl850a9902010-05-21 22:04:32 +00004472 The file path of the null device. For example: ``'/dev/null'`` for
4473 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00004474
Andrew Kuchling4921a082013-06-21 11:49:57 -04004475.. data:: RTLD_LAZY
4476 RTLD_NOW
4477 RTLD_GLOBAL
4478 RTLD_LOCAL
4479 RTLD_NODELETE
4480 RTLD_NOLOAD
4481 RTLD_DEEPBIND
4482
4483 Flags for use with the :func:`~sys.setdlopenflags` and
4484 :func:`~sys.getdlopenflags` functions. See the Unix manual page
4485 :manpage:`dlopen(3)` for what the different flags mean.
4486
4487 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +00004488
Georg Brandl116aa622007-08-15 14:28:22 +00004489
Victor Stinner9b1f4742016-09-06 16:18:52 -07004490Random numbers
4491--------------
Georg Brandl116aa622007-08-15 14:28:22 +00004492
4493
Victor Stinner9b1f4742016-09-06 16:18:52 -07004494.. function:: getrandom(size, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +00004495
Victor Stinner9b1f4742016-09-06 16:18:52 -07004496 Get up to *size* random bytes. The function can return less bytes than
4497 requested.
4498
4499 These bytes can be used to seed user-space random number generators or for
4500 cryptographic purposes.
4501
4502 ``getrandom()`` relies on entropy gathered from device drivers and other
4503 sources of environmental noise. Unnecessarily reading large quantities of
4504 data will have a negative impact on other users of the ``/dev/random`` and
4505 ``/dev/urandom`` devices.
4506
4507 The flags argument is a bit mask that can contain zero or more of the
4508 following values ORed together: :py:data:`os.GRND_RANDOM` and
4509 :py:data:`GRND_NONBLOCK`.
4510
4511 See also the `Linux getrandom() manual page
4512 <http://man7.org/linux/man-pages/man2/getrandom.2.html>`_.
4513
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04004514 .. availability:: Linux 3.17 and newer.
Victor Stinner9b1f4742016-09-06 16:18:52 -07004515
4516 .. versionadded:: 3.6
4517
4518.. function:: urandom(size)
4519
4520 Return a string of *size* random bytes suitable for cryptographic use.
Georg Brandl116aa622007-08-15 14:28:22 +00004521
4522 This function returns random bytes from an OS-specific randomness source. The
4523 returned data should be unpredictable enough for cryptographic applications,
Victor Stinnerdddf4842016-06-07 11:21:42 +02004524 though its exact quality depends on the OS implementation.
4525
Victor Stinnere66987e2016-09-06 16:33:52 -07004526 On Linux, if the ``getrandom()`` syscall is available, it is used in
4527 blocking mode: block until the system urandom entropy pool is initialized
4528 (128 bits of entropy are collected by the kernel). See the :pep:`524` for
4529 the rationale. On Linux, the :func:`getrandom` function can be used to get
4530 random bytes in non-blocking mode (using the :data:`GRND_NONBLOCK` flag) or
4531 to poll until the system urandom entropy pool is initialized.
Andrew Svetlov03cb99c2012-10-16 13:15:06 +03004532
Victor Stinnere66987e2016-09-06 16:33:52 -07004533 On a Unix-like system, random bytes are read from the ``/dev/urandom``
4534 device. If the ``/dev/urandom`` device is not available or not readable, the
4535 :exc:`NotImplementedError` exception is raised.
4536
4537 On Windows, it will use ``CryptGenRandom()``.
4538
4539 .. seealso::
4540 The :mod:`secrets` module provides higher level functions. For an
4541 easy-to-use interface to the random number generator provided by your
4542 platform, please see :class:`random.SystemRandom`.
4543
4544 .. versionchanged:: 3.6.0
4545 On Linux, ``getrandom()`` is now used in blocking mode to increase the
4546 security.
Victor Stinnerace88482015-07-29 02:28:32 +02004547
Victor Stinnerdddf4842016-06-07 11:21:42 +02004548 .. versionchanged:: 3.5.2
Victor Stinner9b1f4742016-09-06 16:18:52 -07004549 On Linux, if the ``getrandom()`` syscall blocks (the urandom entropy pool
4550 is not initialized yet), fall back on reading ``/dev/urandom``.
Victor Stinnerdddf4842016-06-07 11:21:42 +02004551
Victor Stinnerace88482015-07-29 02:28:32 +02004552 .. versionchanged:: 3.5
4553 On Linux 3.17 and newer, the ``getrandom()`` syscall is now used
4554 when available. On OpenBSD 5.6 and newer, the C ``getentropy()``
4555 function is now used. These functions avoid the usage of an internal file
4556 descriptor.
Victor Stinner9b1f4742016-09-06 16:18:52 -07004557
4558.. data:: GRND_NONBLOCK
4559
4560 By default, when reading from ``/dev/random``, :func:`getrandom` blocks if
4561 no random bytes are available, and when reading from ``/dev/urandom``, it blocks
4562 if the entropy pool has not yet been initialized.
4563
4564 If the :py:data:`GRND_NONBLOCK` flag is set, then :func:`getrandom` does not
4565 block in these cases, but instead immediately raises :exc:`BlockingIOError`.
4566
4567 .. versionadded:: 3.6
4568
4569.. data:: GRND_RANDOM
4570
4571 If this bit is set, then random bytes are drawn from the
4572 ``/dev/random`` pool instead of the ``/dev/urandom`` pool.
4573
4574 .. versionadded:: 3.6