blob: 4265bc23a1f916dcaff37e608a6419becedd203e [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
Benjamin Peterson1baf4652009-12-31 03:11:23 +000035* An "Availability: Unix" note means that this function is commonly found on
36 Unix systems. It does not make any claims about its existence on a specific
37 operating system.
38
39* If not separately noted, all functions that claim "Availability: Unix" are
40 supported on Mac OS X, which builds on a Unix core.
41
Benjamin Petersonf650e462010-05-06 23:03:05 +000042.. Availability notes get their own line and occur at the end of the function
43.. documentation.
44
Georg Brandlc575c902008-09-13 17:46:05 +000045.. note::
46
Christian Heimesa62da1d2008-01-12 19:39:10 +000047 All functions in this module raise :exc:`OSError` in the case of invalid or
48 inaccessible file names and paths, or other arguments that have the correct
49 type, but are not accepted by the operating system.
Georg Brandl116aa622007-08-15 14:28:22 +000050
Georg Brandl116aa622007-08-15 14:28:22 +000051.. exception:: error
52
Christian Heimesa62da1d2008-01-12 19:39:10 +000053 An alias for the built-in :exc:`OSError` exception.
Georg Brandl116aa622007-08-15 14:28:22 +000054
55
56.. data:: name
57
Benjamin Peterson1baf4652009-12-31 03:11:23 +000058 The name of the operating system dependent module imported. The following
Ned Deily5c867012014-06-26 23:40:06 -070059 names have currently been registered: ``'posix'``, ``'nt'``,
Jesus Ceaf6c2e892012-10-05 01:11:10 +020060 ``'ce'``, ``'java'``.
Georg Brandl116aa622007-08-15 14:28:22 +000061
Antoine Pitroua83cdaa2011-07-09 15:54:23 +020062 .. seealso::
63 :attr:`sys.platform` has a finer granularity. :func:`os.uname` gives
64 system-dependent version information.
65
66 The :mod:`platform` module provides detailed checks for the
67 system's identity.
68
Georg Brandl116aa622007-08-15 14:28:22 +000069
Martin v. Löwis011e8422009-05-05 04:43:17 +000070.. _os-filenames:
Victor Stinner6bfd8542014-06-19 12:50:27 +020071.. _filesystem-encoding:
Martin v. Löwis011e8422009-05-05 04:43:17 +000072
73File Names, Command Line Arguments, and Environment Variables
74-------------------------------------------------------------
75
Georg Brandl67b21b72010-08-17 15:07:14 +000076In Python, file names, command line arguments, and environment variables are
77represented using the string type. On some systems, decoding these strings to
78and from bytes is necessary before passing them to the operating system. Python
79uses the file system encoding to perform this conversion (see
80:func:`sys.getfilesystemencoding`).
Martin v. Löwis011e8422009-05-05 04:43:17 +000081
82.. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +000083 On some systems, conversion using the file system encoding may fail. In this
Victor Stinnerf6a271a2014-08-01 12:28:48 +020084 case, Python uses the :ref:`surrogateescape encoding error handler
85 <surrogateescape>`, which means that undecodable bytes are replaced by a
86 Unicode character U+DCxx on decoding, and these are again translated to the
87 original byte on encoding.
Martin v. Löwis011e8422009-05-05 04:43:17 +000088
89
Georg Brandl67b21b72010-08-17 15:07:14 +000090The file system encoding must guarantee to successfully decode all bytes
91below 128. If the file system encoding fails to provide this guarantee, API
92functions may raise UnicodeErrors.
Martin v. Löwis011e8422009-05-05 04:43:17 +000093
94
Georg Brandl116aa622007-08-15 14:28:22 +000095.. _os-procinfo:
96
97Process Parameters
98------------------
99
100These functions and data items provide information and operate on the current
101process and user.
102
103
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200104.. function:: ctermid()
105
106 Return the filename corresponding to the controlling terminal of the process.
107
108 Availability: Unix.
109
110
Georg Brandl116aa622007-08-15 14:28:22 +0000111.. data:: environ
112
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700113 A :term:`mapping` object representing the string environment. For example,
Georg Brandl116aa622007-08-15 14:28:22 +0000114 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
115 and is equivalent to ``getenv("HOME")`` in C.
116
117 This mapping is captured the first time the :mod:`os` module is imported,
118 typically during Python startup as part of processing :file:`site.py`. Changes
119 to the environment made after this time are not reflected in ``os.environ``,
120 except for changes made by modifying ``os.environ`` directly.
121
122 If the platform supports the :func:`putenv` function, this mapping may be used
123 to modify the environment as well as query the environment. :func:`putenv` will
124 be called automatically when the mapping is modified.
125
Victor Stinner84ae1182010-05-06 22:05:07 +0000126 On Unix, keys and values use :func:`sys.getfilesystemencoding` and
127 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like
128 to use a different encoding.
129
Georg Brandl116aa622007-08-15 14:28:22 +0000130 .. note::
131
132 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
133 to modify ``os.environ``.
134
135 .. note::
136
Georg Brandlc575c902008-09-13 17:46:05 +0000137 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
138 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000139 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000140
141 If :func:`putenv` is not provided, a modified copy of this mapping may be
142 passed to the appropriate process-creation functions to cause child processes
143 to use a modified environment.
144
Georg Brandl9afde1c2007-11-01 20:32:30 +0000145 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000146 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000147 automatically when an item is deleted from ``os.environ``, and when
148 one of the :meth:`pop` or :meth:`clear` methods is called.
149
Georg Brandl116aa622007-08-15 14:28:22 +0000150
Victor Stinner84ae1182010-05-06 22:05:07 +0000151.. data:: environb
152
Chris Jerdonek11f3f172012-11-03 12:05:55 -0700153 Bytes version of :data:`environ`: a :term:`mapping` object representing the
Victor Stinner84ae1182010-05-06 22:05:07 +0000154 environment as byte strings. :data:`environ` and :data:`environb` are
155 synchronized (modify :data:`environb` updates :data:`environ`, and vice
156 versa).
157
Victor Stinnerb745a742010-05-18 17:17:23 +0000158 :data:`environb` is only available if :data:`supports_bytes_environ` is
159 True.
Victor Stinner84ae1182010-05-06 22:05:07 +0000160
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000161 .. versionadded:: 3.2
162
Victor Stinner84ae1182010-05-06 22:05:07 +0000163
Georg Brandl116aa622007-08-15 14:28:22 +0000164.. function:: chdir(path)
165 fchdir(fd)
166 getcwd()
167 :noindex:
168
169 These functions are described in :ref:`os-file-dir`.
170
171
Victor Stinnere8d51452010-08-19 01:05:19 +0000172.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000173
Victor Stinnere8d51452010-08-19 01:05:19 +0000174 Encode *filename* to the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000175 error handler, or ``'strict'`` on Windows; return :class:`bytes` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000176
Antoine Pitroua305ca72010-09-25 22:12:00 +0000177 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000178
179 .. versionadded:: 3.2
180
181
182.. function:: fsdecode(filename)
183
184 Decode *filename* from the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000185 error handler, or ``'strict'`` on Windows; return :class:`str` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000186
187 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000188
189 .. versionadded:: 3.2
190
191
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200192.. function:: getenv(key, default=None)
193
194 Return the value of the environment variable *key* if it exists, or
195 *default* if it doesn't. *key*, *default* and the result are str.
196
197 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
198 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
199 would like to use a different encoding.
200
201 Availability: most flavors of Unix, Windows.
202
203
204.. function:: getenvb(key, default=None)
205
206 Return the value of the environment variable *key* if it exists, or
207 *default* if it doesn't. *key*, *default* and the result are bytes.
208
209 Availability: most flavors of Unix.
210
211 .. versionadded:: 3.2
212
213
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000214.. function:: get_exec_path(env=None)
215
216 Returns the list of directories that will be searched for a named
217 executable, similar to a shell, when launching a process.
218 *env*, when specified, should be an environment variable dictionary
219 to lookup the PATH in.
220 By default, when *env* is None, :data:`environ` is used.
221
222 .. versionadded:: 3.2
223
224
Georg Brandl116aa622007-08-15 14:28:22 +0000225.. function:: getegid()
226
227 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000228 "set id" bit on the file being executed in the current process.
229
230 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000231
232
233.. function:: geteuid()
234
235 .. index:: single: user; effective id
236
Benjamin Petersonf650e462010-05-06 23:03:05 +0000237 Return the current process's effective user id.
238
239 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000240
241
242.. function:: getgid()
243
244 .. index:: single: process; group
245
Benjamin Petersonf650e462010-05-06 23:03:05 +0000246 Return the real group id of the current process.
247
248 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000249
250
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200251.. function:: getgrouplist(user, group)
252
253 Return list of group ids that *user* belongs to. If *group* is not in the
254 list, it is included; typically, *group* is specified as the group ID
255 field from the password record for *user*.
256
257 Availability: Unix.
258
259 .. versionadded:: 3.3
260
261
Georg Brandl116aa622007-08-15 14:28:22 +0000262.. function:: getgroups()
263
264 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000265
Georg Brandl116aa622007-08-15 14:28:22 +0000266 Availability: Unix.
267
Larry Hastings3732ed22014-03-15 21:13:56 -0700268 .. note::
269
270 On Mac OS X, :func:`getgroups` behavior differs somewhat from
Ned Deily2e209682012-04-30 11:14:02 -0700271 other Unix platforms. If the Python interpreter was built with a
272 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
273 the list of effective group ids associated with the current user process;
274 this list is limited to a system-defined number of entries, typically 16,
275 and may be modified by calls to :func:`setgroups` if suitably privileged.
276 If built with a deployment target greater than :const:`10.5`,
277 :func:`getgroups` returns the current group access list for the user
278 associated with the effective user id of the process; the group access
279 list may change over the lifetime of the process, it is not affected by
280 calls to :func:`setgroups`, and its length is not limited to 16. The
281 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
282 obtained with :func:`sysconfig.get_config_var`.
283
Georg Brandl116aa622007-08-15 14:28:22 +0000284
285.. function:: getlogin()
286
287 Return the name of the user logged in on the controlling terminal of the
Benjamin Petersone218bcb2014-08-30 21:04:15 -0400288 process. For most purposes, it is more useful to use the environment
289 variables :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user
290 is, or ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the current
291 real user id.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000292
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000293 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000294
295
296.. function:: getpgid(pid)
297
298 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000299 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000300
Benjamin Petersonf650e462010-05-06 23:03:05 +0000301 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000302
303.. function:: getpgrp()
304
305 .. index:: single: process; group
306
Benjamin Petersonf650e462010-05-06 23:03:05 +0000307 Return the id of the current process group.
308
309 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000310
311
312.. function:: getpid()
313
314 .. index:: single: process; id
315
Benjamin Petersonf650e462010-05-06 23:03:05 +0000316 Return the current process id.
317
Georg Brandl116aa622007-08-15 14:28:22 +0000318
319.. function:: getppid()
320
321 .. index:: single: process; id of parent
322
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000323 Return the parent's process id. When the parent process has exited, on Unix
324 the id returned is the one of the init process (1), on Windows it is still
325 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000326
Georg Brandl8a5555f2012-06-24 13:29:09 +0200327 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000328
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000329 .. versionchanged:: 3.2
330 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000331
Georg Brandl8a5555f2012-06-24 13:29:09 +0200332
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000333.. function:: getpriority(which, who)
334
335 .. index:: single: process; scheduling priority
336
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200337 Get program scheduling priority. The value *which* is one of
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000338 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
339 is interpreted relative to *which* (a process identifier for
340 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200341 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000342 (respectively) the calling process, the process group of the calling process,
343 or the real user ID of the calling process.
344
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200345 Availability: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000346
347 .. versionadded:: 3.3
348
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200349
350.. data:: PRIO_PROCESS
351 PRIO_PGRP
352 PRIO_USER
353
354 Parameters for the :func:`getpriority` and :func:`setpriority` functions.
355
356 Availability: Unix.
357
358 .. versionadded:: 3.3
359
360
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000361.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000362
363 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000364 real, effective, and saved user ids.
365
366 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000367
Georg Brandl1b83a452009-11-28 11:12:26 +0000368 .. versionadded:: 3.2
369
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000370
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000371.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000372
373 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000374 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000375
376 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000377
Georg Brandl1b83a452009-11-28 11:12:26 +0000378 .. versionadded:: 3.2
379
Georg Brandl116aa622007-08-15 14:28:22 +0000380
381.. function:: getuid()
382
383 .. index:: single: user; id
384
Benjamin Peterson4bb09c82014-06-07 13:50:34 -0700385 Return the current process's real user id.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000386
387 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000388
389
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200390.. function:: initgroups(username, gid)
Georg Brandl116aa622007-08-15 14:28:22 +0000391
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200392 Call the system initgroups() to initialize the group access list with all of
393 the groups of which the specified username is a member, plus the specified
394 group id.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000395
396 Availability: Unix.
397
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200398 .. versionadded:: 3.2
399
Georg Brandl116aa622007-08-15 14:28:22 +0000400
Georg Brandl18244152009-09-02 20:34:52 +0000401.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000402
403 .. index:: single: environment variables; setting
404
Georg Brandl18244152009-09-02 20:34:52 +0000405 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000406 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000407 :func:`popen` or :func:`fork` and :func:`execv`.
408
409 Availability: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000410
411 .. note::
412
Georg Brandlc575c902008-09-13 17:46:05 +0000413 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
414 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000415
416 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
417 automatically translated into corresponding calls to :func:`putenv`; however,
418 calls to :func:`putenv` don't update ``os.environ``, so it is actually
419 preferable to assign to items of ``os.environ``.
420
421
422.. function:: setegid(egid)
423
Benjamin Petersonf650e462010-05-06 23:03:05 +0000424 Set the current process's effective group id.
425
426 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000427
428
429.. function:: seteuid(euid)
430
Benjamin Petersonf650e462010-05-06 23:03:05 +0000431 Set the current process's effective user id.
432
433 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000434
435
436.. function:: setgid(gid)
437
Benjamin Petersonf650e462010-05-06 23:03:05 +0000438 Set the current process' group id.
439
440 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000441
442
443.. function:: setgroups(groups)
444
445 Set the list of supplemental group ids associated with the current process to
446 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000447 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000448
Georg Brandl116aa622007-08-15 14:28:22 +0000449 Availability: Unix.
450
Ned Deily2e209682012-04-30 11:14:02 -0700451 .. note:: On Mac OS X, the length of *groups* may not exceed the
452 system-defined maximum number of effective group ids, typically 16.
453 See the documentation for :func:`getgroups` for cases where it may not
454 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000455
456.. function:: setpgrp()
457
Andrew Svetlova2fe3342012-08-11 21:14:08 +0300458 Call the system call :c:func:`setpgrp` or ``setpgrp(0, 0)`` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000459 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000460
Georg Brandl116aa622007-08-15 14:28:22 +0000461 Availability: Unix.
462
463
464.. function:: setpgid(pid, pgrp)
465
Georg Brandl60203b42010-10-06 10:11:56 +0000466 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000467 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000468 for the semantics.
469
470 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000471
472
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000473.. function:: setpriority(which, who, priority)
474
475 .. index:: single: process; scheduling priority
476
477 Set program scheduling priority. The value *which* is one of
478 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
479 is interpreted relative to *which* (a process identifier for
480 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
481 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
482 (respectively) the calling process, the process group of the calling process,
483 or the real user ID of the calling process.
484 *priority* is a value in the range -20 to 19. The default priority is 0;
485 lower priorities cause more favorable scheduling.
486
487 Availability: Unix
488
489 .. versionadded:: 3.3
490
491
Georg Brandl116aa622007-08-15 14:28:22 +0000492.. function:: setregid(rgid, egid)
493
Benjamin Petersonf650e462010-05-06 23:03:05 +0000494 Set the current process's real and effective group ids.
495
496 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000497
Georg Brandl1b83a452009-11-28 11:12:26 +0000498
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000499.. function:: setresgid(rgid, egid, sgid)
500
501 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000502
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000503 Availability: Unix.
504
Georg Brandl1b83a452009-11-28 11:12:26 +0000505 .. versionadded:: 3.2
506
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000507
508.. function:: setresuid(ruid, euid, suid)
509
510 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000511
Georg Brandl6faee4e2010-09-21 14:48:28 +0000512 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000513
Georg Brandl1b83a452009-11-28 11:12:26 +0000514 .. versionadded:: 3.2
515
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000516
517.. function:: setreuid(ruid, euid)
518
Benjamin Petersonf650e462010-05-06 23:03:05 +0000519 Set the current process's real and effective user ids.
520
521 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000522
Georg Brandl116aa622007-08-15 14:28:22 +0000523
524.. function:: getsid(pid)
525
Georg Brandl60203b42010-10-06 10:11:56 +0000526 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000527
Georg Brandl116aa622007-08-15 14:28:22 +0000528 Availability: Unix.
529
Georg Brandl116aa622007-08-15 14:28:22 +0000530
531.. function:: setsid()
532
Georg Brandl60203b42010-10-06 10:11:56 +0000533 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000534
Georg Brandl116aa622007-08-15 14:28:22 +0000535 Availability: Unix.
536
537
538.. function:: setuid(uid)
539
540 .. index:: single: user; id, setting
541
Benjamin Petersonf650e462010-05-06 23:03:05 +0000542 Set the current process's user id.
543
544 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000545
Georg Brandl116aa622007-08-15 14:28:22 +0000546
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000547.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000548.. function:: strerror(code)
549
550 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000551 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000552 error number, :exc:`ValueError` is raised.
553
Georg Brandl116aa622007-08-15 14:28:22 +0000554
Victor Stinnerb745a742010-05-18 17:17:23 +0000555.. data:: supports_bytes_environ
556
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200557 ``True`` if the native OS type of the environment is bytes (eg. ``False`` on
Victor Stinnerb745a742010-05-18 17:17:23 +0000558 Windows).
559
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000560 .. versionadded:: 3.2
561
Victor Stinnerb745a742010-05-18 17:17:23 +0000562
Georg Brandl116aa622007-08-15 14:28:22 +0000563.. function:: umask(mask)
564
Benjamin Petersonf650e462010-05-06 23:03:05 +0000565 Set the current numeric umask and return the previous umask.
566
Georg Brandl116aa622007-08-15 14:28:22 +0000567
568.. function:: uname()
569
570 .. index::
571 single: gethostname() (in module socket)
572 single: gethostbyaddr() (in module socket)
573
Larry Hastings605a62d2012-06-24 04:33:36 -0700574 Returns information identifying the current operating system.
575 The return value is an object with five attributes:
576
577 * :attr:`sysname` - operating system name
578 * :attr:`nodename` - name of machine on network (implementation-defined)
579 * :attr:`release` - operating system release
580 * :attr:`version` - operating system version
581 * :attr:`machine` - hardware identifier
582
583 For backwards compatibility, this object is also iterable, behaving
584 like a five-tuple containing :attr:`sysname`, :attr:`nodename`,
585 :attr:`release`, :attr:`version`, and :attr:`machine`
586 in that order.
587
588 Some systems truncate :attr:`nodename` to 8 characters or to the
Georg Brandl116aa622007-08-15 14:28:22 +0000589 leading component; a better way to get the hostname is
590 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000591 ``socket.gethostbyaddr(socket.gethostname())``.
592
593 Availability: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000594
Larry Hastings605a62d2012-06-24 04:33:36 -0700595 .. versionchanged:: 3.3
596 Return type changed from a tuple to a tuple-like object
597 with named attributes.
598
Georg Brandl116aa622007-08-15 14:28:22 +0000599
Georg Brandl18244152009-09-02 20:34:52 +0000600.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000601
602 .. index:: single: environment variables; deleting
603
Georg Brandl18244152009-09-02 20:34:52 +0000604 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000605 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000606 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000607
608 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
609 automatically translated into a corresponding call to :func:`unsetenv`; however,
610 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
611 preferable to delete items of ``os.environ``.
612
Benjamin Petersonf650e462010-05-06 23:03:05 +0000613 Availability: most flavors of Unix, Windows.
614
Georg Brandl116aa622007-08-15 14:28:22 +0000615
616.. _os-newstreams:
617
618File Object Creation
619--------------------
620
Georg Brandla570e982012-06-24 13:26:22 +0200621This function creates new :term:`file objects <file object>`. (See also
Georg Brandlb2462e22012-06-24 13:24:56 +0200622:func:`~os.open` for opening file descriptors.)
Georg Brandl116aa622007-08-15 14:28:22 +0000623
624
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300625.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000626
Georg Brandlb2462e22012-06-24 13:24:56 +0200627 Return an open file object connected to the file descriptor *fd*. This is an
628 alias of the :func:`open` built-in function and accepts the same arguments.
629 The only difference is that the first argument of :func:`fdopen` must always
630 be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000631
Georg Brandl116aa622007-08-15 14:28:22 +0000632
Georg Brandl116aa622007-08-15 14:28:22 +0000633.. _os-fd-ops:
634
635File Descriptor Operations
636--------------------------
637
638These functions operate on I/O streams referenced using file descriptors.
639
640File descriptors are small integers corresponding to a file that has been opened
641by the current process. For example, standard input is usually file descriptor
6420, standard output is 1, and standard error is 2. Further files opened by a
643process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
644is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
645by file descriptors.
646
Serhiy Storchakadab83542013-10-13 20:12:43 +0300647The :meth:`~io.IOBase.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000648associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000649descriptor directly will bypass the file object methods, ignoring aspects such
650as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000652
Georg Brandl116aa622007-08-15 14:28:22 +0000653.. function:: close(fd)
654
Benjamin Petersonf650e462010-05-06 23:03:05 +0000655 Close file descriptor *fd*.
656
Georg Brandl116aa622007-08-15 14:28:22 +0000657 .. note::
658
659 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000660 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000661 object" returned by the built-in function :func:`open` or by :func:`popen` or
Serhiy Storchakadab83542013-10-13 20:12:43 +0300662 :func:`fdopen`, use its :meth:`~io.IOBase.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000663
664
Christian Heimesfdab48e2008-01-20 09:06:41 +0000665.. function:: closerange(fd_low, fd_high)
666
667 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200668 ignoring errors. Equivalent to (but much faster than)::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000669
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000670 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000671 try:
672 os.close(fd)
673 except OSError:
674 pass
675
Christian Heimesfdab48e2008-01-20 09:06:41 +0000676
Georg Brandl81f11302007-12-21 08:45:42 +0000677.. function:: device_encoding(fd)
678
679 Return a string describing the encoding of the device associated with *fd*
680 if it is connected to a terminal; else return :const:`None`.
681
682
Georg Brandl116aa622007-08-15 14:28:22 +0000683.. function:: dup(fd)
684
Victor Stinnerdaf45552013-08-28 00:53:59 +0200685 Return a duplicate of file descriptor *fd*. The new file descriptor is
686 :ref:`non-inheritable <fd_inheritance>`.
687
688 On Windows, when duplicating a standard stream (0: stdin, 1: stdout,
689 2: stderr), the new file descriptor is :ref:`inheritable
690 <fd_inheritance>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000691
Victor Stinnerdaf45552013-08-28 00:53:59 +0200692 .. versionchanged:: 3.4
693 The new file descriptor is now non-inheritable.
Georg Brandl116aa622007-08-15 14:28:22 +0000694
Victor Stinnerdaf45552013-08-28 00:53:59 +0200695
696.. function:: dup2(fd, fd2, inheritable=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000697
698 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200699 The file descriptor *fd2* is :ref:`inheritable <fd_inheritance>` by default,
700 or non-inheritable if *inheritable* is ``False``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000701
Victor Stinnerdaf45552013-08-28 00:53:59 +0200702 .. versionchanged:: 3.4
703 Add the optional *inheritable* parameter.
704
Georg Brandl116aa622007-08-15 14:28:22 +0000705
Christian Heimes4e30a842007-11-30 22:12:06 +0000706.. function:: fchmod(fd, mode)
707
Georg Brandlb9df00c2012-06-24 12:38:14 +0200708 Change the mode of the file given by *fd* to the numeric *mode*. See the
Georg Brandl4d399a42012-06-25 07:40:32 +0200709 docs for :func:`chmod` for possible values of *mode*. As of Python 3.3, this
Georg Brandlb9df00c2012-06-24 12:38:14 +0200710 is equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000711
712 Availability: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000713
714
715.. function:: fchown(fd, uid, gid)
716
717 Change the owner and group id of the file given by *fd* to the numeric *uid*
Georg Brandlb9df00c2012-06-24 12:38:14 +0200718 and *gid*. To leave one of the ids unchanged, set it to -1. See
Georg Brandl4d399a42012-06-25 07:40:32 +0200719 :func:`chown`. As of Python 3.3, this is equivalent to ``os.chown(fd, uid,
Georg Brandlb9df00c2012-06-24 12:38:14 +0200720 gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000721
Christian Heimes4e30a842007-11-30 22:12:06 +0000722 Availability: Unix.
723
724
Georg Brandl116aa622007-08-15 14:28:22 +0000725.. function:: fdatasync(fd)
726
727 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000728 metadata.
729
730 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000731
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000732 .. note::
733 This function is not available on MacOS.
734
Georg Brandl116aa622007-08-15 14:28:22 +0000735
736.. function:: fpathconf(fd, name)
737
738 Return system configuration information relevant to an open file. *name*
739 specifies the configuration value to retrieve; it may be a string which is the
740 name of a defined system value; these names are specified in a number of
741 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
742 additional names as well. The names known to the host operating system are
743 given in the ``pathconf_names`` dictionary. For configuration variables not
744 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000745
746 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
747 specific value for *name* is not supported by the host system, even if it is
748 included in ``pathconf_names``, an :exc:`OSError` is raised with
749 :const:`errno.EINVAL` for the error number.
750
Georg Brandl4d399a42012-06-25 07:40:32 +0200751 As of Python 3.3, this is equivalent to ``os.pathconf(fd, name)``.
Georg Brandl306336b2012-06-24 12:55:33 +0200752
Senthil Kumaran2a97cee2013-09-19 00:08:56 -0700753 Availability: Unix.
754
Georg Brandl116aa622007-08-15 14:28:22 +0000755
Victor Stinner4195b5c2012-02-08 23:03:19 +0100756.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000757
Victor Stinner6d4f4fe2014-07-24 12:42:16 +0200758 Get the status of the file descriptor *fd*. Return a :class:`stat_result`
759 object.
760
761 As of Python 3.3, this is equivalent to ``os.stat(fd)``.
762
763 .. seealso::
764
Berker Peksag2034caa2015-04-27 13:53:28 +0300765 The :func:`.stat` function.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000766
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200767
Georg Brandl116aa622007-08-15 14:28:22 +0000768.. function:: fstatvfs(fd)
769
Georg Brandlb9df00c2012-06-24 12:38:14 +0200770 Return information about the filesystem containing the file associated with
Georg Brandl4d399a42012-06-25 07:40:32 +0200771 file descriptor *fd*, like :func:`statvfs`. As of Python 3.3, this is
Georg Brandlb9df00c2012-06-24 12:38:14 +0200772 equivalent to ``os.statvfs(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000773
774 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000775
776
777.. function:: fsync(fd)
778
779 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000780 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000781
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000782 If you're starting with a buffered Python :term:`file object` *f*, first do
783 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
784 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000785
Georg Brandl8a5555f2012-06-24 13:29:09 +0200786 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000787
788
789.. function:: ftruncate(fd, length)
790
Georg Brandl306336b2012-06-24 12:55:33 +0200791 Truncate the file corresponding to file descriptor *fd*, so that it is at
Georg Brandl4d399a42012-06-25 07:40:32 +0200792 most *length* bytes in size. As of Python 3.3, this is equivalent to
Georg Brandl306336b2012-06-24 12:55:33 +0200793 ``os.truncate(fd, length)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000794
Steve Dowerfe0a41a2015-03-20 19:50:46 -0700795 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000796
Steve Dowerfe0a41a2015-03-20 19:50:46 -0700797 .. versionchanged:: 3.5
798 Added support for Windows
Georg Brandl116aa622007-08-15 14:28:22 +0000799
Victor Stinner1db9e7b2014-07-29 22:32:47 +0200800.. function:: get_blocking(fd)
801
802 Get the blocking mode of the file descriptor: ``False`` if the
803 :data:`O_NONBLOCK` flag is set, ``True`` if the flag is cleared.
804
805 See also :func:`set_blocking` and :meth:`socket.socket.setblocking`.
806
807 Availability: Unix.
808
809 .. versionadded:: 3.5
810
Georg Brandl116aa622007-08-15 14:28:22 +0000811.. function:: isatty(fd)
812
813 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000814 tty(-like) device, else ``False``.
815
Georg Brandl116aa622007-08-15 14:28:22 +0000816
Ross Lagerwall7807c352011-03-17 20:20:30 +0200817.. function:: lockf(fd, cmd, len)
818
819 Apply, test or remove a POSIX lock on an open file descriptor.
820 *fd* is an open file descriptor.
821 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
822 :data:`F_ULOCK` or :data:`F_TEST`.
823 *len* specifies the section of the file to lock.
824
825 Availability: Unix.
826
827 .. versionadded:: 3.3
828
829
830.. data:: F_LOCK
831 F_TLOCK
832 F_ULOCK
833 F_TEST
834
835 Flags that specify what action :func:`lockf` will take.
836
837 Availability: Unix.
838
839 .. versionadded:: 3.3
840
Georg Brandlf62445a2012-06-24 13:31:20 +0200841
Georg Brandl116aa622007-08-15 14:28:22 +0000842.. function:: lseek(fd, pos, how)
843
Christian Heimesfaf2f632008-01-06 16:59:19 +0000844 Set the current position of file descriptor *fd* to position *pos*, modified
845 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
846 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
Serhiy Storchakadab83542013-10-13 20:12:43 +0300847 current position; :const:`SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100848 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000849
Georg Brandl116aa622007-08-15 14:28:22 +0000850
Georg Brandl8569e582010-05-19 20:57:08 +0000851.. data:: SEEK_SET
852 SEEK_CUR
853 SEEK_END
854
855 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandl8a5555f2012-06-24 13:29:09 +0200856 respectively.
857
Jesus Cea94363612012-06-22 18:32:07 +0200858 .. versionadded:: 3.3
859 Some operating systems could support additional values, like
860 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
861
Georg Brandl8569e582010-05-19 20:57:08 +0000862
Martin Panterbf19d162015-09-09 01:01:13 +0000863.. function:: open(path, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000864
Martin Panterbf19d162015-09-09 01:01:13 +0000865 Open the file *path* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700866 its mode according to *mode*. When computing *mode*, the current umask value
867 is first masked out. Return the file descriptor for the newly opened file.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200868 The new file descriptor is :ref:`non-inheritable <fd_inheritance>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000869
870 For a description of the flag and mode values, see the C run-time documentation;
871 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Andrew Kuchling4921a082013-06-21 11:49:57 -0400872 the :mod:`os` module. In particular, on Windows adding
Georg Brandl8569e582010-05-19 20:57:08 +0000873 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000874
Georg Brandl50c40002012-06-24 11:45:20 +0200875 This function can support :ref:`paths relative to directory descriptors
Andrew Kuchling4921a082013-06-21 11:49:57 -0400876 <dir_fd>` with the *dir_fd* parameter.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700877
Victor Stinnerdaf45552013-08-28 00:53:59 +0200878 .. versionchanged:: 3.4
879 The new file descriptor is now non-inheritable.
880
Georg Brandl116aa622007-08-15 14:28:22 +0000881 .. note::
882
Georg Brandl502d9a52009-07-26 15:02:41 +0000883 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000884 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bcf2010-07-13 14:47:01 +0000885 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000886 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000887
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000888 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700889 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000890
Victor Stinnera766ddf2015-03-26 23:50:57 +0100891 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +0200892 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +0100893 exception, the function now retries the system call instead of raising an
894 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
895
Andrew Kuchling4921a082013-06-21 11:49:57 -0400896The following constants are options for the *flags* parameter to the
897:func:`~os.open` function. They can be combined using the bitwise OR operator
898``|``. Some of them are not available on all platforms. For descriptions of
899their availability and use, consult the :manpage:`open(2)` manual page on Unix
Georg Brandl5d941342016-02-26 19:37:12 +0100900or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Andrew Kuchling4921a082013-06-21 11:49:57 -0400901
902
903.. data:: O_RDONLY
904 O_WRONLY
905 O_RDWR
906 O_APPEND
907 O_CREAT
908 O_EXCL
909 O_TRUNC
910
911 These constants are available on Unix and Windows.
912
913
914.. data:: O_DSYNC
915 O_RSYNC
916 O_SYNC
917 O_NDELAY
918 O_NONBLOCK
919 O_NOCTTY
920 O_SHLOCK
921 O_EXLOCK
922 O_CLOEXEC
923
924 These constants are only available on Unix.
925
926 .. versionchanged:: 3.3
927 Add :data:`O_CLOEXEC` constant.
928
929.. data:: O_BINARY
930 O_NOINHERIT
931 O_SHORT_LIVED
932 O_TEMPORARY
933 O_RANDOM
934 O_SEQUENTIAL
935 O_TEXT
936
937 These constants are only available on Windows.
938
939
940.. data:: O_ASYNC
941 O_DIRECT
942 O_DIRECTORY
943 O_NOFOLLOW
944 O_NOATIME
945 O_PATH
Christian Heimes177b3f92013-08-16 14:35:09 +0200946 O_TMPFILE
Andrew Kuchling4921a082013-06-21 11:49:57 -0400947
948 These constants are GNU extensions and not present if they are not defined by
949 the C library.
950
Christian Heimesd88f7352013-08-16 14:37:50 +0200951 .. versionchanged:: 3.4
Larry Hastings3732ed22014-03-15 21:13:56 -0700952 Add :data:`O_PATH` on systems that support it.
953 Add :data:`O_TMPFILE`, only available on Linux Kernel 3.11
954 or newer.
Christian Heimesd88f7352013-08-16 14:37:50 +0200955
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000956
Georg Brandl116aa622007-08-15 14:28:22 +0000957.. function:: openpty()
958
959 .. index:: module: pty
960
Victor Stinnerdaf45552013-08-28 00:53:59 +0200961 Open a new pseudo-terminal pair. Return a pair of file descriptors
962 ``(master, slave)`` for the pty and the tty, respectively. The new file
963 descriptors are :ref:`non-inheritable <fd_inheritance>`. For a (slightly) more
964 portable approach, use the :mod:`pty` module.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000965
966 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000967
Victor Stinnerdaf45552013-08-28 00:53:59 +0200968 .. versionchanged:: 3.4
969 The new file descriptors are now non-inheritable.
970
Georg Brandl116aa622007-08-15 14:28:22 +0000971
972.. function:: pipe()
973
Victor Stinnerdaf45552013-08-28 00:53:59 +0200974 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for
Victor Stinner05f31bf2013-11-06 01:48:45 +0100975 reading and writing, respectively. The new file descriptor is
Victor Stinnerdaf45552013-08-28 00:53:59 +0200976 :ref:`non-inheritable <fd_inheritance>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000977
978 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000979
Victor Stinnerdaf45552013-08-28 00:53:59 +0200980 .. versionchanged:: 3.4
981 The new file descriptors are now non-inheritable.
982
Georg Brandl116aa622007-08-15 14:28:22 +0000983
Charles-François Natali368f34b2011-06-06 19:49:47 +0200984.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200985
986 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +0200987 *flags* can be constructed by ORing together one or more of these values:
988 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200989 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
990 respectively.
991
992 Availability: some flavors of Unix.
993
994 .. versionadded:: 3.3
995
996
Ross Lagerwall7807c352011-03-17 20:20:30 +0200997.. function:: posix_fallocate(fd, offset, len)
998
999 Ensures that enough disk space is allocated for the file specified by *fd*
1000 starting from *offset* and continuing for *len* bytes.
1001
1002 Availability: Unix.
1003
1004 .. versionadded:: 3.3
1005
1006
1007.. function:: posix_fadvise(fd, offset, len, advice)
1008
1009 Announces an intention to access data in a specific pattern thus allowing
1010 the kernel to make optimizations.
1011 The advice applies to the region of the file specified by *fd* starting at
1012 *offset* and continuing for *len* bytes.
1013 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
1014 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
1015 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
1016
1017 Availability: Unix.
1018
1019 .. versionadded:: 3.3
1020
1021
1022.. data:: POSIX_FADV_NORMAL
1023 POSIX_FADV_SEQUENTIAL
1024 POSIX_FADV_RANDOM
1025 POSIX_FADV_NOREUSE
1026 POSIX_FADV_WILLNEED
1027 POSIX_FADV_DONTNEED
1028
1029 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
1030 the access pattern that is likely to be used.
1031
1032 Availability: Unix.
1033
1034 .. versionadded:: 3.3
1035
1036
1037.. function:: pread(fd, buffersize, offset)
1038
1039 Read from a file descriptor, *fd*, at a position of *offset*. It will read up
1040 to *buffersize* number of bytes. The file offset remains unchanged.
1041
1042 Availability: Unix.
1043
1044 .. versionadded:: 3.3
1045
1046
Jesus Cea67503c52014-10-20 16:18:24 +02001047.. function:: pwrite(fd, str, offset)
Ross Lagerwall7807c352011-03-17 20:20:30 +02001048
Jesus Cea67503c52014-10-20 16:18:24 +02001049 Write *bytestring* to a file descriptor, *fd*, from *offset*,
1050 leaving the file offset unchanged.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001051
1052 Availability: Unix.
1053
1054 .. versionadded:: 3.3
1055
1056
Georg Brandl116aa622007-08-15 14:28:22 +00001057.. function:: read(fd, n)
1058
Georg Brandlb90be692009-07-29 16:14:16 +00001059 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +00001060 bytes read. If the end of the file referred to by *fd* has been reached, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001061 empty bytes object is returned.
1062
Georg Brandl116aa622007-08-15 14:28:22 +00001063 .. note::
1064
1065 This function is intended for low-level I/O and must be applied to a file
Georg Brandlb2462e22012-06-24 13:24:56 +02001066 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a
1067 "file object" returned by the built-in function :func:`open` or by
1068 :func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its
1069 :meth:`~file.read` or :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +00001070
Victor Stinnera766ddf2015-03-26 23:50:57 +01001071 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001072 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001073 exception, the function now retries the system call instead of raising an
1074 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1075
Georg Brandl116aa622007-08-15 14:28:22 +00001076
Martin Panterbf19d162015-09-09 01:01:13 +00001077.. function:: sendfile(out, in, offset, count)
Martin Panter94994132015-09-09 05:29:24 +00001078 sendfile(out, in, offset, count, [headers], [trailers], flags=0)
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001079
Martin Panterbf19d162015-09-09 01:01:13 +00001080 Copy *count* bytes from file descriptor *in* to file descriptor *out*
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001081 starting at *offset*.
1082 Return the number of bytes sent. When EOF is reached return 0.
1083
1084 The first function notation is supported by all platforms that define
1085 :func:`sendfile`.
1086
1087 On Linux, if *offset* is given as ``None``, the bytes are read from the
1088 current position of *in* and the position of *in* is updated.
1089
1090 The second case may be used on Mac OS X and FreeBSD where *headers* and
1091 *trailers* are arbitrary sequences of buffers that are written before and
1092 after the data from *in* is written. It returns the same as the first case.
1093
Martin Panterbf19d162015-09-09 01:01:13 +00001094 On Mac OS X and FreeBSD, a value of 0 for *count* specifies to send until
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001095 the end of *in* is reached.
1096
Charles-Francois Natalia771a1b2013-05-01 15:12:20 +02001097 All platforms support sockets as *out* file descriptor, and some platforms
1098 allow other types (e.g. regular file, pipe) as well.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001099
Giampaolo Rodola'409569b2014-04-24 18:09:21 +02001100 Cross-platform applications should not use *headers*, *trailers* and *flags*
1101 arguments.
1102
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001103 Availability: Unix.
1104
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001105 .. note::
1106
Benjamin Peterson0ce95372014-06-15 18:30:27 -07001107 For a higher-level wrapper of :func:`sendfile`, see
Martin Panter3133a9f2015-09-11 23:44:18 +00001108 :meth:`socket.socket.sendfile`.
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001109
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001110 .. versionadded:: 3.3
1111
1112
Victor Stinner1db9e7b2014-07-29 22:32:47 +02001113.. function:: set_blocking(fd, blocking)
1114
1115 Set the blocking mode of the specified file descriptor. Set the
1116 :data:`O_NONBLOCK` flag if blocking is ``False``, clear the flag otherwise.
1117
1118 See also :func:`get_blocking` and :meth:`socket.socket.setblocking`.
1119
1120 Availability: Unix.
1121
1122 .. versionadded:: 3.5
1123
1124
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001125.. data:: SF_NODISKIO
1126 SF_MNOWAIT
1127 SF_SYNC
1128
1129 Parameters to the :func:`sendfile` function, if the implementation supports
1130 them.
1131
1132 Availability: Unix.
1133
1134 .. versionadded:: 3.3
1135
1136
Ross Lagerwall7807c352011-03-17 20:20:30 +02001137.. function:: readv(fd, buffers)
1138
Benjamin Petersone83ed432014-01-18 22:54:59 -05001139 Read from a file descriptor *fd* into a number of mutable :term:`bytes-like
1140 objects <bytes-like object>` *buffers*. :func:`~os.readv` will transfer data
1141 into each buffer until it is full and then move on to the next buffer in the
1142 sequence to hold the rest of the data. :func:`~os.readv` returns the total
1143 number of bytes read (which may be less than the total capacity of all the
1144 objects).
Ross Lagerwall7807c352011-03-17 20:20:30 +02001145
1146 Availability: Unix.
1147
1148 .. versionadded:: 3.3
1149
1150
Georg Brandl116aa622007-08-15 14:28:22 +00001151.. function:: tcgetpgrp(fd)
1152
1153 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001154 file descriptor as returned by :func:`os.open`).
1155
1156 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001157
1158
1159.. function:: tcsetpgrp(fd, pg)
1160
1161 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001162 descriptor as returned by :func:`os.open`) to *pg*.
1163
1164 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001165
1166
1167.. function:: ttyname(fd)
1168
1169 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001170 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001171 exception is raised.
1172
1173 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001174
1175
1176.. function:: write(fd, str)
1177
Georg Brandlb90be692009-07-29 16:14:16 +00001178 Write the bytestring in *str* to file descriptor *fd*. Return the number of
Benjamin Petersonf650e462010-05-06 23:03:05 +00001179 bytes actually written.
1180
Georg Brandl116aa622007-08-15 14:28:22 +00001181 .. note::
1182
1183 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001184 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001185 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001186 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1187 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001188
Victor Stinnera766ddf2015-03-26 23:50:57 +01001189 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001190 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01001191 exception, the function now retries the system call instead of raising an
1192 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1193
Georg Brandl8569e582010-05-19 20:57:08 +00001194
Ross Lagerwall7807c352011-03-17 20:20:30 +02001195.. function:: writev(fd, buffers)
1196
Benjamin Petersone83ed432014-01-18 22:54:59 -05001197 Write the contents of *buffers* to file descriptor *fd*. *buffers* must be a
Senthil Kumarand37de3c2016-06-18 11:21:50 -07001198 sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are
1199 processed in array order. Entire contents of first buffer is written before
1200 proceeding to second, and so on. The operating system may set a limit
1201 (sysconf() value SC_IOV_MAX) on the number of buffers that can be used.
1202
Benjamin Petersone83ed432014-01-18 22:54:59 -05001203 :func:`~os.writev` writes the contents of each object to the file descriptor
1204 and returns the total number of bytes written.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001205
1206 Availability: Unix.
1207
1208 .. versionadded:: 3.3
1209
1210
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001211.. _terminal-size:
1212
1213Querying the size of a terminal
1214~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1215
1216.. versionadded:: 3.3
1217
1218.. function:: get_terminal_size(fd=STDOUT_FILENO)
1219
1220 Return the size of the terminal window as ``(columns, lines)``,
1221 tuple of type :class:`terminal_size`.
1222
1223 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1224 output) specifies which file descriptor should be queried.
1225
1226 If the file descriptor is not connected to a terminal, an :exc:`OSError`
Andrew Svetlov5b898402012-12-18 21:26:36 +02001227 is raised.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001228
1229 :func:`shutil.get_terminal_size` is the high-level function which
1230 should normally be used, ``os.get_terminal_size`` is the low-level
1231 implementation.
1232
1233 Availability: Unix, Windows.
1234
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001235.. class:: terminal_size
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001236
Georg Brandl6cff9ff2012-06-24 14:05:40 +02001237 A subclass of tuple, holding ``(columns, lines)`` of the terminal window size.
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001238
1239 .. attribute:: columns
1240
1241 Width of the terminal window in characters.
1242
1243 .. attribute:: lines
1244
1245 Height of the terminal window in characters.
1246
1247
Victor Stinnerdaf45552013-08-28 00:53:59 +02001248.. _fd_inheritance:
1249
1250Inheritance of File Descriptors
1251~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1252
Georg Brandl5642ff92013-09-15 10:37:57 +02001253.. versionadded:: 3.4
1254
1255A file descriptor has an "inheritable" flag which indicates if the file descriptor
1256can be inherited by child processes. Since Python 3.4, file descriptors
Victor Stinnerdaf45552013-08-28 00:53:59 +02001257created by Python are non-inheritable by default.
1258
1259On UNIX, non-inheritable file descriptors are closed in child processes at the
1260execution of a new program, other file descriptors are inherited.
1261
1262On Windows, non-inheritable handles and file descriptors are closed in child
Georg Brandl5642ff92013-09-15 10:37:57 +02001263processes, except for standard streams (file descriptors 0, 1 and 2: stdin, stdout
Serhiy Storchaka690a6a92013-10-13 20:13:37 +03001264and stderr), which are always inherited. Using :func:`spawn\* <spawnl>` functions,
Victor Stinnerdaf45552013-08-28 00:53:59 +02001265all inheritable handles and all inheritable file descriptors are inherited.
1266Using the :mod:`subprocess` module, all file descriptors except standard
Georg Brandl5642ff92013-09-15 10:37:57 +02001267streams are closed, and inheritable handles are only inherited if the
1268*close_fds* parameter is ``False``.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001269
1270.. function:: get_inheritable(fd)
1271
Georg Brandl5642ff92013-09-15 10:37:57 +02001272 Get the "inheritable" flag of the specified file descriptor (a boolean).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001273
1274.. function:: set_inheritable(fd, inheritable)
1275
Georg Brandl5642ff92013-09-15 10:37:57 +02001276 Set the "inheritable" flag of the specified file descriptor.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001277
1278.. function:: get_handle_inheritable(handle)
1279
Georg Brandl5642ff92013-09-15 10:37:57 +02001280 Get the "inheritable" flag of the specified handle (a boolean).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001281
1282 Availability: Windows.
1283
1284.. function:: set_handle_inheritable(handle, inheritable)
1285
Georg Brandl5642ff92013-09-15 10:37:57 +02001286 Set the "inheritable" flag of the specified handle.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001287
1288 Availability: Windows.
1289
1290
Georg Brandl116aa622007-08-15 14:28:22 +00001291.. _os-file-dir:
1292
1293Files and Directories
1294---------------------
1295
Georg Brandl50c40002012-06-24 11:45:20 +02001296On some Unix platforms, many of these functions support one or more of these
1297features:
1298
1299.. _path_fd:
1300
Larry Hastings77892dc2012-06-25 03:27:33 -07001301* **specifying a file descriptor:**
1302 For some functions, the *path* argument can be not only a string giving a path
Georg Brandl50c40002012-06-24 11:45:20 +02001303 name, but also a file descriptor. The function will then operate on the file
Georg Brandlaceaf902012-06-25 08:33:56 +02001304 referred to by the descriptor. (For POSIX systems, Python will call the
1305 ``f...`` version of the function.)
Georg Brandl50c40002012-06-24 11:45:20 +02001306
1307 You can check whether or not *path* can be specified as a file descriptor on
1308 your platform using :data:`os.supports_fd`. If it is unavailable, using it
1309 will raise a :exc:`NotImplementedError`.
1310
1311 If the function also supports *dir_fd* or *follow_symlinks* arguments, it is
1312 an error to specify one of those when supplying *path* as a file descriptor.
1313
1314.. _dir_fd:
1315
Larry Hastings77892dc2012-06-25 03:27:33 -07001316* **paths relative to directory descriptors:** If *dir_fd* is not ``None``, it
Georg Brandl50c40002012-06-24 11:45:20 +02001317 should be a file descriptor referring to a directory, and the path to operate
1318 on should be relative; path will then be relative to that directory. If the
Georg Brandlaceaf902012-06-25 08:33:56 +02001319 path is absolute, *dir_fd* is ignored. (For POSIX systems, Python will call
Larry Hastings77892dc2012-06-25 03:27:33 -07001320 the ``...at`` or ``f...at`` version of the function.)
Georg Brandl50c40002012-06-24 11:45:20 +02001321
1322 You can check whether or not *dir_fd* is supported on your platform using
1323 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise a
1324 :exc:`NotImplementedError`.
1325
1326.. _follow_symlinks:
1327
Larry Hastings77892dc2012-06-25 03:27:33 -07001328* **not following symlinks:** If *follow_symlinks* is
Georg Brandl50c40002012-06-24 11:45:20 +02001329 ``False``, and the last element of the path to operate on is a symbolic link,
1330 the function will operate on the symbolic link itself instead of the file the
Georg Brandlaceaf902012-06-25 08:33:56 +02001331 link points to. (For POSIX systems, Python will call the ``l...`` version of
Georg Brandl50c40002012-06-24 11:45:20 +02001332 the function.)
1333
1334 You can check whether or not *follow_symlinks* is supported on your platform
1335 using :data:`os.supports_follow_symlinks`. If it is unavailable, using it
1336 will raise a :exc:`NotImplementedError`.
1337
1338
1339
Larry Hastings9cf065c2012-06-22 16:30:09 -07001340.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001341
1342 Use the real uid/gid to test for access to *path*. Note that most operations
1343 will use the effective uid/gid, therefore this routine can be used in a
1344 suid/sgid environment to test if the invoking user has the specified access to
1345 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1346 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1347 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1348 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001349 information.
1350
Georg Brandl50c40002012-06-24 11:45:20 +02001351 This function can support specifying :ref:`paths relative to directory
1352 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001353
1354 If *effective_ids* is ``True``, :func:`access` will perform its access
1355 checks using the effective uid/gid instead of the real uid/gid.
1356 *effective_ids* may not be supported on your platform; you can check whether
1357 or not it is available using :data:`os.supports_effective_ids`. If it is
1358 unavailable, using it will raise a :exc:`NotImplementedError`.
1359
Georg Brandl116aa622007-08-15 14:28:22 +00001360 .. note::
1361
Georg Brandl502d9a52009-07-26 15:02:41 +00001362 Using :func:`access` to check if a user is authorized to e.g. open a file
1363 before actually doing so using :func:`open` creates a security hole,
1364 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001365 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1366 techniques. For example::
1367
1368 if os.access("myfile", os.R_OK):
1369 with open("myfile") as fp:
1370 return fp.read()
1371 return "some default data"
1372
1373 is better written as::
1374
1375 try:
1376 fp = open("myfile")
Antoine Pitrou62ab10a02011-10-12 20:10:51 +02001377 except PermissionError:
1378 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001379 else:
1380 with fp:
1381 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001382
1383 .. note::
1384
1385 I/O operations may fail even when :func:`access` indicates that they would
1386 succeed, particularly for operations on network filesystems which may have
1387 permissions semantics beyond the usual POSIX permission-bit model.
1388
Larry Hastings9cf065c2012-06-22 16:30:09 -07001389 .. versionchanged:: 3.3
1390 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1391
Georg Brandl116aa622007-08-15 14:28:22 +00001392
1393.. data:: F_OK
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001394 R_OK
1395 W_OK
1396 X_OK
Georg Brandl116aa622007-08-15 14:28:22 +00001397
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001398 Values to pass as the *mode* parameter of :func:`access` to test the
1399 existence, readability, writability and executability of *path*,
1400 respectively.
Georg Brandl116aa622007-08-15 14:28:22 +00001401
1402
1403.. function:: chdir(path)
1404
1405 .. index:: single: directory; changing
1406
Benjamin Petersonf650e462010-05-06 23:03:05 +00001407 Change the current working directory to *path*.
1408
Larry Hastings77892dc2012-06-25 03:27:33 -07001409 This function can support :ref:`specifying a file descriptor <path_fd>`. The
Georg Brandl50c40002012-06-24 11:45:20 +02001410 descriptor must refer to an opened directory, not an open file.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001411
Larry Hastings9cf065c2012-06-22 16:30:09 -07001412 .. versionadded:: 3.3
1413 Added support for specifying *path* as a file descriptor
Georg Brandl50c40002012-06-24 11:45:20 +02001414 on some platforms.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001415
Georg Brandl116aa622007-08-15 14:28:22 +00001416
Larry Hastings9cf065c2012-06-22 16:30:09 -07001417.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001418
1419 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1420 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1421
R David Murray30178062011-03-10 17:18:33 -05001422 * :data:`stat.UF_NODUMP`
1423 * :data:`stat.UF_IMMUTABLE`
1424 * :data:`stat.UF_APPEND`
1425 * :data:`stat.UF_OPAQUE`
1426 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001427 * :data:`stat.UF_COMPRESSED`
1428 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001429 * :data:`stat.SF_ARCHIVED`
1430 * :data:`stat.SF_IMMUTABLE`
1431 * :data:`stat.SF_APPEND`
1432 * :data:`stat.SF_NOUNLINK`
1433 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001434
Georg Brandl50c40002012-06-24 11:45:20 +02001435 This function can support :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001436
Georg Brandlc575c902008-09-13 17:46:05 +00001437 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001438
Larry Hastings9cf065c2012-06-22 16:30:09 -07001439 .. versionadded:: 3.3
1440 The *follow_symlinks* argument.
1441
Georg Brandl116aa622007-08-15 14:28:22 +00001442
Larry Hastings9cf065c2012-06-22 16:30:09 -07001443.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001444
1445 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001446 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001447 combinations of them:
1448
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001449 * :data:`stat.S_ISUID`
1450 * :data:`stat.S_ISGID`
1451 * :data:`stat.S_ENFMT`
1452 * :data:`stat.S_ISVTX`
1453 * :data:`stat.S_IREAD`
1454 * :data:`stat.S_IWRITE`
1455 * :data:`stat.S_IEXEC`
1456 * :data:`stat.S_IRWXU`
1457 * :data:`stat.S_IRUSR`
1458 * :data:`stat.S_IWUSR`
1459 * :data:`stat.S_IXUSR`
1460 * :data:`stat.S_IRWXG`
1461 * :data:`stat.S_IRGRP`
1462 * :data:`stat.S_IWGRP`
1463 * :data:`stat.S_IXGRP`
1464 * :data:`stat.S_IRWXO`
1465 * :data:`stat.S_IROTH`
1466 * :data:`stat.S_IWOTH`
1467 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001468
Georg Brandl50c40002012-06-24 11:45:20 +02001469 This function can support :ref:`specifying a file descriptor <path_fd>`,
1470 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1471 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001472
Georg Brandl116aa622007-08-15 14:28:22 +00001473 .. note::
1474
Georg Brandl50c40002012-06-24 11:45:20 +02001475 Although Windows supports :func:`chmod`, you can only set the file's
1476 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1477 constants or a corresponding integer value). All other bits are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001478
Larry Hastings9cf065c2012-06-22 16:30:09 -07001479 .. versionadded:: 3.3
1480 Added support for specifying *path* as an open file descriptor,
1481 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001482
Larry Hastings9cf065c2012-06-22 16:30:09 -07001483
1484.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001485
Georg Brandl50c40002012-06-24 11:45:20 +02001486 Change the owner and group id of *path* to the numeric *uid* and *gid*. To
1487 leave one of the ids unchanged, set it to -1.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001488
Georg Brandl50c40002012-06-24 11:45:20 +02001489 This function can support :ref:`specifying a file descriptor <path_fd>`,
1490 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1491 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001492
Sandro Tosid902a142011-08-22 23:28:27 +02001493 See :func:`shutil.chown` for a higher-level function that accepts names in
1494 addition to numeric ids.
1495
Benjamin Petersonf650e462010-05-06 23:03:05 +00001496 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001497
Larry Hastings9cf065c2012-06-22 16:30:09 -07001498 .. versionadded:: 3.3
1499 Added support for specifying an open file descriptor for *path*,
1500 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001501
Benjamin Peterson799bd802011-08-31 22:15:17 -04001502
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001503.. function:: chroot(path)
1504
Georg Brandl8a5555f2012-06-24 13:29:09 +02001505 Change the root directory of the current process to *path*.
1506
1507 Availability: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001508
1509
1510.. function:: fchdir(fd)
1511
1512 Change the current working directory to the directory represented by the file
1513 descriptor *fd*. The descriptor must refer to an opened directory, not an
Georg Brandl4d399a42012-06-25 07:40:32 +02001514 open file. As of Python 3.3, this is equivalent to ``os.chdir(fd)``.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001515
1516 Availability: Unix.
1517
1518
1519.. function:: getcwd()
1520
1521 Return a string representing the current working directory.
1522
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001523
1524.. function:: getcwdb()
1525
1526 Return a bytestring representing the current working directory.
1527
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001528
Georg Brandl116aa622007-08-15 14:28:22 +00001529.. function:: lchflags(path, flags)
1530
Georg Brandl50c40002012-06-24 11:45:20 +02001531 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do
Georg Brandl4d399a42012-06-25 07:40:32 +02001532 not follow symbolic links. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001533 ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001534
1535 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001536
Georg Brandl116aa622007-08-15 14:28:22 +00001537
Christian Heimes93852662007-12-01 12:22:32 +00001538.. function:: lchmod(path, mode)
1539
1540 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
Georg Brandl50c40002012-06-24 11:45:20 +02001541 affects the symlink rather than the target. See the docs for :func:`chmod`
Georg Brandl4d399a42012-06-25 07:40:32 +02001542 for possible values of *mode*. As of Python 3.3, this is equivalent to
Georg Brandlb9df00c2012-06-24 12:38:14 +02001543 ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001544
1545 Availability: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001546
Christian Heimes93852662007-12-01 12:22:32 +00001547
Georg Brandl116aa622007-08-15 14:28:22 +00001548.. function:: lchown(path, uid, gid)
1549
Georg Brandl50c40002012-06-24 11:45:20 +02001550 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandl4d399a42012-06-25 07:40:32 +02001551 function will not follow symbolic links. As of Python 3.3, this is equivalent
Georg Brandlb9df00c2012-06-24 12:38:14 +02001552 to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001553
1554 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001555
Georg Brandl116aa622007-08-15 14:28:22 +00001556
Larry Hastings9cf065c2012-06-22 16:30:09 -07001557.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001558
Larry Hastings9cf065c2012-06-22 16:30:09 -07001559 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001560
Georg Brandlaceaf902012-06-25 08:33:56 +02001561 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1562 supply :ref:`paths relative to directory descriptors <dir_fd>`, and :ref:`not
1563 following symlinks <follow_symlinks>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001564
Brian Curtin1b9df392010-11-24 20:24:31 +00001565 Availability: Unix, Windows.
1566
1567 .. versionchanged:: 3.2
1568 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001569
Larry Hastings9cf065c2012-06-22 16:30:09 -07001570 .. versionadded:: 3.3
1571 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1572
Georg Brandl116aa622007-08-15 14:28:22 +00001573
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001574.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001575
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001576 Return a list containing the names of the entries in the directory given by
Larry Hastingsfdaea062012-06-25 04:42:23 -07001577 *path*. The list is in arbitrary order, and does not include the special
1578 entries ``'.'`` and ``'..'`` even if they are present in the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001579
Larry Hastingsfdaea062012-06-25 04:42:23 -07001580 *path* may be either of type ``str`` or of type ``bytes``. If *path*
1581 is of type ``bytes``, the filenames returned will also be of type ``bytes``;
1582 in all other circumstances, they will be of type ``str``.
Georg Brandl116aa622007-08-15 14:28:22 +00001583
Larry Hastings77892dc2012-06-25 03:27:33 -07001584 This function can also support :ref:`specifying a file descriptor
1585 <path_fd>`; the file descriptor must refer to a directory.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001586
Larry Hastingsfdaea062012-06-25 04:42:23 -07001587 .. note::
1588 To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`.
1589
Victor Stinner6036e442015-03-08 01:58:04 +01001590 .. seealso::
1591
Victor Stinner51b58322015-05-15 09:12:58 +02001592 The :func:`scandir` function returns directory entries along with
1593 file attribute information, giving better performance for many
1594 common use cases.
Victor Stinner6036e442015-03-08 01:58:04 +01001595
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001596 .. versionchanged:: 3.2
1597 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001598
Larry Hastings9cf065c2012-06-22 16:30:09 -07001599 .. versionadded:: 3.3
1600 Added support for specifying an open file descriptor for *path*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001601
Georg Brandl50c40002012-06-24 11:45:20 +02001602
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001603.. function:: lstat(path, \*, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001604
R. David Murray7b1aae92011-01-24 19:34:58 +00001605 Perform the equivalent of an :c:func:`lstat` system call on the given path.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001606 Similar to :func:`~os.stat`, but does not follow symbolic links. Return a
1607 :class:`stat_result` object.
1608
1609 On platforms that do not support symbolic links, this is an alias for
1610 :func:`~os.stat`.
1611
1612 As of Python 3.3, this is equivalent to ``os.stat(path, dir_fd=dir_fd,
1613 follow_symlinks=False)``.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001614
Georg Brandl50c40002012-06-24 11:45:20 +02001615 This function can also support :ref:`paths relative to directory descriptors
1616 <dir_fd>`.
Brian Curtinc7395692010-07-09 15:15:09 +00001617
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001618 .. seealso::
1619
Berker Peksag2034caa2015-04-27 13:53:28 +03001620 The :func:`.stat` function.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02001621
Georg Brandlb3823372010-07-10 08:58:37 +00001622 .. versionchanged:: 3.2
1623 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001624
Larry Hastings9cf065c2012-06-22 16:30:09 -07001625 .. versionchanged:: 3.3
1626 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001627
1628
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001629.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
1630
1631 Create a directory named *path* with numeric mode *mode*.
1632
Tommy Beadle63b91e52016-06-02 15:41:20 -04001633 If the directory already exists, :exc:`FileExistsError` is raised.
1634
1635 .. _mkdir_modebits:
1636
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001637 On some systems, *mode* is ignored. Where it is used, the current umask
Tommy Beadle63b91e52016-06-02 15:41:20 -04001638 value is first masked out. If bits other than the last 9 (i.e. the last 3
1639 digits of the octal representation of the *mode*) are set, their meaning is
1640 platform-dependent. On some platforms, they are ignored and you should call
1641 :func:`chmod` explicitly to set them.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001642
1643 This function can also support :ref:`paths relative to directory descriptors
1644 <dir_fd>`.
1645
1646 It is also possible to create temporary directories; see the
1647 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1648
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001649 .. versionadded:: 3.3
1650 The *dir_fd* argument.
1651
1652
Zachary Warea22ae212014-03-20 09:42:01 -05001653.. function:: makedirs(name, mode=0o777, exist_ok=False)
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001654
1655 .. index::
1656 single: directory; creating
1657 single: UNC paths; and os.makedirs()
1658
1659 Recursive directory creation function. Like :func:`mkdir`, but makes all
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001660 intermediate-level directories needed to contain the leaf directory.
1661
Tommy Beadle63b91e52016-06-02 15:41:20 -04001662 The *mode* parameter is passed to :func:`mkdir`; see :ref:`the mkdir()
1663 description <mkdir_modebits>` for how it is interpreted.
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001664
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001665 If *exist_ok* is ``False`` (the default), an :exc:`OSError` is raised if the
1666 target directory already exists.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001667
1668 .. note::
1669
1670 :func:`makedirs` will become confused if the path elements to create
Hynek Schlawack0230b6a2012-10-07 18:04:38 +02001671 include :data:`pardir` (eg. ".." on UNIX systems).
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001672
1673 This function handles UNC paths correctly.
1674
1675 .. versionadded:: 3.2
1676 The *exist_ok* parameter.
1677
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04001678 .. versionchanged:: 3.4.1
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001679
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04001680 Before Python 3.4.1, if *exist_ok* was ``True`` and the directory existed,
Benjamin Petersonee5f1c12014-04-01 19:13:18 -04001681 :func:`makedirs` would still raise an error if *mode* did not match the
1682 mode of the existing directory. Since this behavior was impossible to
Benjamin Peterson1acc69c2014-04-01 19:22:06 -04001683 implement safely, it was removed in Python 3.4.1. See :issue:`21082`.
Benjamin Peterson4717e212014-04-01 19:17:57 -04001684
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001685
Larry Hastings9cf065c2012-06-22 16:30:09 -07001686.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001687
Larry Hastings9cf065c2012-06-22 16:30:09 -07001688 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1689 The current umask value is first masked out from the mode.
1690
Georg Brandl50c40002012-06-24 11:45:20 +02001691 This function can also support :ref:`paths relative to directory descriptors
1692 <dir_fd>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001693
1694 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1695 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1696 rendezvous between "client" and "server" type processes: the server opens the
1697 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1698 doesn't open the FIFO --- it just creates the rendezvous point.
1699
Benjamin Petersonf650e462010-05-06 23:03:05 +00001700 Availability: Unix.
1701
Larry Hastings9cf065c2012-06-22 16:30:09 -07001702 .. versionadded:: 3.3
1703 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001704
Larry Hastings9cf065c2012-06-22 16:30:09 -07001705
Martin Panterbf19d162015-09-09 01:01:13 +00001706.. function:: mknod(path, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001707
1708 Create a filesystem node (file, device special file or named pipe) named
Martin Panterbf19d162015-09-09 01:01:13 +00001709 *path*. *mode* specifies both the permissions to use and the type of node
Georg Brandl18244152009-09-02 20:34:52 +00001710 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1711 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1712 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
1713 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00001714 :func:`os.makedev`), otherwise it is ignored.
1715
Georg Brandl50c40002012-06-24 11:45:20 +02001716 This function can also support :ref:`paths relative to directory descriptors
1717 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001718
1719 .. versionadded:: 3.3
1720 The *dir_fd* argument.
1721
Georg Brandl116aa622007-08-15 14:28:22 +00001722
1723.. function:: major(device)
1724
Christian Heimesfaf2f632008-01-06 16:59:19 +00001725 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001726 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001727
Georg Brandl116aa622007-08-15 14:28:22 +00001728
1729.. function:: minor(device)
1730
Christian Heimesfaf2f632008-01-06 16:59:19 +00001731 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001732 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001733
Georg Brandl116aa622007-08-15 14:28:22 +00001734
1735.. function:: makedev(major, minor)
1736
Christian Heimesfaf2f632008-01-06 16:59:19 +00001737 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00001738
Georg Brandl116aa622007-08-15 14:28:22 +00001739
Georg Brandl116aa622007-08-15 14:28:22 +00001740.. function:: pathconf(path, name)
1741
1742 Return system configuration information relevant to a named file. *name*
1743 specifies the configuration value to retrieve; it may be a string which is the
1744 name of a defined system value; these names are specified in a number of
1745 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1746 additional names as well. The names known to the host operating system are
1747 given in the ``pathconf_names`` dictionary. For configuration variables not
1748 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00001749
1750 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1751 specific value for *name* is not supported by the host system, even if it is
1752 included in ``pathconf_names``, an :exc:`OSError` is raised with
1753 :const:`errno.EINVAL` for the error number.
1754
Larry Hastings77892dc2012-06-25 03:27:33 -07001755 This function can support :ref:`specifying a file descriptor
Georg Brandl306336b2012-06-24 12:55:33 +02001756 <path_fd>`.
1757
Benjamin Petersonf650e462010-05-06 23:03:05 +00001758 Availability: Unix.
1759
Georg Brandl116aa622007-08-15 14:28:22 +00001760
1761.. data:: pathconf_names
1762
1763 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1764 the integer values defined for those names by the host operating system. This
Georg Brandl8a5555f2012-06-24 13:29:09 +02001765 can be used to determine the set of names known to the system.
1766
1767 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001768
1769
Larry Hastings9cf065c2012-06-22 16:30:09 -07001770.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001771
1772 Return a string representing the path to which the symbolic link points. The
Georg Brandl50c40002012-06-24 11:45:20 +02001773 result may be either an absolute or relative pathname; if it is relative, it
1774 may be converted to an absolute pathname using
1775 ``os.path.join(os.path.dirname(path), result)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001776
Georg Brandl76e55382008-10-08 16:34:57 +00001777 If the *path* is a string object, the result will also be a string object,
Martin Panter6245cb32016-04-15 02:14:19 +00001778 and the call may raise a UnicodeDecodeError. If the *path* is a bytes
Georg Brandl76e55382008-10-08 16:34:57 +00001779 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00001780
Georg Brandl50c40002012-06-24 11:45:20 +02001781 This function can also support :ref:`paths relative to directory descriptors
1782 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001783
Brian Curtinc7395692010-07-09 15:15:09 +00001784 Availability: Unix, Windows
1785
Georg Brandlb3823372010-07-10 08:58:37 +00001786 .. versionchanged:: 3.2
1787 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001788
Larry Hastings9cf065c2012-06-22 16:30:09 -07001789 .. versionadded:: 3.3
1790 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001791
Georg Brandl116aa622007-08-15 14:28:22 +00001792
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001793.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07001794
Georg Brandl50c40002012-06-24 11:45:20 +02001795 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
1796 raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001797
Georg Brandl50c40002012-06-24 11:45:20 +02001798 This function can support :ref:`paths relative to directory descriptors
1799 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001800
1801 On Windows, attempting to remove a file that is in use causes an exception to
1802 be raised; on Unix, the directory entry is removed but the storage allocated
1803 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001804
Brett Cannon01f7ac32015-12-28 17:30:32 -08001805 This function is semantically identical to :func:`unlink`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001806
Larry Hastings9cf065c2012-06-22 16:30:09 -07001807 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001808 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001809
Georg Brandl116aa622007-08-15 14:28:22 +00001810
Zachary Warea22ae212014-03-20 09:42:01 -05001811.. function:: removedirs(name)
Georg Brandl116aa622007-08-15 14:28:22 +00001812
1813 .. index:: single: directory; deleting
1814
Christian Heimesfaf2f632008-01-06 16:59:19 +00001815 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00001816 leaf directory is successfully removed, :func:`removedirs` tries to
1817 successively remove every parent directory mentioned in *path* until an error
1818 is raised (which is ignored, because it generally means that a parent directory
1819 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1820 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1821 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1822 successfully removed.
1823
Georg Brandl116aa622007-08-15 14:28:22 +00001824
Larry Hastings9cf065c2012-06-22 16:30:09 -07001825.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001826
1827 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1828 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001829 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001830 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1831 the renaming will be an atomic operation (this is a POSIX requirement). On
1832 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001833 file.
1834
Georg Brandlaceaf902012-06-25 08:33:56 +02001835 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1836 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001837
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001838 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001839
Larry Hastings9cf065c2012-06-22 16:30:09 -07001840 .. versionadded:: 3.3
1841 The *src_dir_fd* and *dst_dir_fd* arguments.
1842
Georg Brandl116aa622007-08-15 14:28:22 +00001843
1844.. function:: renames(old, new)
1845
1846 Recursive directory or file renaming function. Works like :func:`rename`, except
1847 creation of any intermediate directories needed to make the new pathname good is
1848 attempted first. After the rename, directories corresponding to rightmost path
1849 segments of the old name will be pruned away using :func:`removedirs`.
1850
Georg Brandl116aa622007-08-15 14:28:22 +00001851 .. note::
1852
1853 This function can fail with the new directory structure made if you lack
1854 permissions needed to remove the leaf directory or file.
1855
1856
Larry Hastings9cf065c2012-06-22 16:30:09 -07001857.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001858
1859 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1860 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
1861 be replaced silently if the user has permission. The operation may fail
1862 if *src* and *dst* are on different filesystems. If successful,
1863 the renaming will be an atomic operation (this is a POSIX requirement).
1864
Georg Brandlaceaf902012-06-25 08:33:56 +02001865 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
1866 supply :ref:`paths relative to directory descriptors <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001867
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001868 .. versionadded:: 3.3
1869
1870
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001871.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001872
Georg Brandla6053b42009-09-01 08:11:14 +00001873 Remove (delete) the directory *path*. Only works when the directory is
1874 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
Benjamin Petersonf650e462010-05-06 23:03:05 +00001875 directory trees, :func:`shutil.rmtree` can be used.
1876
Georg Brandl50c40002012-06-24 11:45:20 +02001877 This function can support :ref:`paths relative to directory descriptors
1878 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001879
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001880 .. versionadded:: 3.3
1881 The *dir_fd* parameter.
1882
Georg Brandl116aa622007-08-15 14:28:22 +00001883
Victor Stinner6036e442015-03-08 01:58:04 +01001884.. function:: scandir(path='.')
1885
1886 Return an iterator of :class:`DirEntry` objects corresponding to the entries
1887 in the directory given by *path*. The entries are yielded in arbitrary
1888 order, and the special entries ``'.'`` and ``'..'`` are not included.
1889
Victor Stinner51b58322015-05-15 09:12:58 +02001890 Using :func:`scandir` instead of :func:`listdir` can significantly
1891 increase the performance of code that also needs file type or file
1892 attribute information, because :class:`DirEntry` objects expose this
1893 information if the operating system provides it when scanning a directory.
1894 All :class:`DirEntry` methods may perform a system call, but
1895 :func:`~DirEntry.is_dir` and :func:`~DirEntry.is_file` usually only
1896 require a system call for symbolic links; :func:`DirEntry.stat`
1897 always requires a system call on Unix but only requires one for
1898 symbolic links on Windows.
Victor Stinner6036e442015-03-08 01:58:04 +01001899
Victor Stinner51b58322015-05-15 09:12:58 +02001900 On Unix, *path* can be of type :class:`str` or :class:`bytes` (use
1901 :func:`~os.fsencode` and :func:`~os.fsdecode` to encode and decode
1902 :class:`bytes` paths). On Windows, *path* must be of type :class:`str`.
Martin Pantereb995702016-07-28 01:11:04 +00001903 On both systems, the type of the :attr:`~DirEntry.name` and
Victor Stinner51b58322015-05-15 09:12:58 +02001904 :attr:`~DirEntry.path` attributes of each :class:`DirEntry` will be of
1905 the same type as *path*.
Victor Stinner6036e442015-03-08 01:58:04 +01001906
1907 The following example shows a simple use of :func:`scandir` to display all
Victor Stinner51b58322015-05-15 09:12:58 +02001908 the files (excluding directories) in the given *path* that don't start with
1909 ``'.'``. The ``entry.is_file()`` call will generally not make an additional
1910 system call::
Victor Stinner6036e442015-03-08 01:58:04 +01001911
1912 for entry in os.scandir(path):
1913 if not entry.name.startswith('.') and entry.is_file():
1914 print(entry.name)
1915
1916 .. note::
1917
1918 On Unix-based systems, :func:`scandir` uses the system's
1919 `opendir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/opendir.html>`_
1920 and
1921 `readdir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/readdir_r.html>`_
1922 functions. On Windows, it uses the Win32
Georg Brandl5d941342016-02-26 19:37:12 +01001923 `FindFirstFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01001924 and
Georg Brandl5d941342016-02-26 19:37:12 +01001925 `FindNextFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428(v=vs.85).aspx>`_
Victor Stinner6036e442015-03-08 01:58:04 +01001926 functions.
1927
Victor Stinner6036e442015-03-08 01:58:04 +01001928 .. versionadded:: 3.5
1929
1930
1931.. class:: DirEntry
1932
1933 Object yielded by :func:`scandir` to expose the file path and other file
1934 attributes of a directory entry.
1935
1936 :func:`scandir` will provide as much of this information as possible without
1937 making additional system calls. When a ``stat()`` or ``lstat()`` system call
Victor Stinner51b58322015-05-15 09:12:58 +02001938 is made, the ``DirEntry`` object will cache the result.
Victor Stinner6036e442015-03-08 01:58:04 +01001939
1940 ``DirEntry`` instances are not intended to be stored in long-lived data
1941 structures; if you know the file metadata has changed or if a long time has
1942 elapsed since calling :func:`scandir`, call ``os.stat(entry.path)`` to fetch
1943 up-to-date information.
1944
1945 Because the ``DirEntry`` methods can make operating system calls, they may
Victor Stinner51b58322015-05-15 09:12:58 +02001946 also raise :exc:`OSError`. If you need very fine-grained
Victor Stinner6036e442015-03-08 01:58:04 +01001947 control over errors, you can catch :exc:`OSError` when calling one of the
1948 ``DirEntry`` methods and handle as appropriate.
1949
1950 Attributes and methods on a ``DirEntry`` instance are as follows:
1951
1952 .. attribute:: name
1953
1954 The entry's base filename, relative to the :func:`scandir` *path*
1955 argument.
1956
Victor Stinner51b58322015-05-15 09:12:58 +02001957 The :attr:`name` attribute will be of the same type (``str`` or
1958 ``bytes``) as the :func:`scandir` *path* argument. Use
1959 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01001960
1961 .. attribute:: path
1962
1963 The entry's full path name: equivalent to ``os.path.join(scandir_path,
1964 entry.name)`` where *scandir_path* is the :func:`scandir` *path*
1965 argument. The path is only absolute if the :func:`scandir` *path*
Victor Stinner51b58322015-05-15 09:12:58 +02001966 argument was absolute.
Victor Stinner6036e442015-03-08 01:58:04 +01001967
Victor Stinner51b58322015-05-15 09:12:58 +02001968 The :attr:`path` attribute will be of the same type (``str`` or
1969 ``bytes``) as the :func:`scandir` *path* argument. Use
1970 :func:`~os.fsdecode` to decode byte filenames.
Victor Stinner6036e442015-03-08 01:58:04 +01001971
1972 .. method:: inode()
1973
1974 Return the inode number of the entry.
1975
Victor Stinner5f0c5d92016-01-31 18:36:41 +01001976 The result is cached on the ``DirEntry`` object. Use ``os.stat(entry.path,
Victor Stinner6036e442015-03-08 01:58:04 +01001977 follow_symlinks=False).st_ino`` to fetch up-to-date information.
1978
Victor Stinner5f0c5d92016-01-31 18:36:41 +01001979 On the first, uncached call, a system call is required on Windows but
1980 not on Unix.
Victor Stinner6036e442015-03-08 01:58:04 +01001981
1982 .. method:: is_dir(\*, follow_symlinks=True)
1983
Victor Stinner5f0c5d92016-01-31 18:36:41 +01001984 Return ``True`` if this entry is a directory or a symbolic link pointing
1985 to a directory; return ``False`` if the entry is or points to any other
1986 kind of file, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01001987
1988 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01001989 is a directory (without following symlinks); return ``False`` if the
1990 entry is any other kind of file or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01001991
Victor Stinner5f0c5d92016-01-31 18:36:41 +01001992 The result is cached on the ``DirEntry`` object, with a separate cache
1993 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` along
1994 with :func:`stat.S_ISDIR` to fetch up-to-date information.
1995
1996 On the first, uncached call, no system call is required in most cases.
1997 Specifically, for non-symlinks, neither Windows or Unix require a system
1998 call, except on certain Unix file systems, such as network file systems,
1999 that return ``dirent.d_type == DT_UNKNOWN``. If the entry is a symlink,
2000 a system call will be required to follow the symlink unless
2001 *follow_symlinks* is ``False``.
Victor Stinner6036e442015-03-08 01:58:04 +01002002
Victor Stinner51b58322015-05-15 09:12:58 +02002003 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2004 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002005
Victor Stinner6036e442015-03-08 01:58:04 +01002006 .. method:: is_file(\*, follow_symlinks=True)
2007
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002008 Return ``True`` if this entry is a file or a symbolic link pointing to a
2009 file; return ``False`` if the entry is or points to a directory or other
2010 non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002011
2012 If *follow_symlinks* is ``False``, return ``True`` only if this entry
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002013 is a file (without following symlinks); return ``False`` if the entry is
2014 a directory or other non-file entry, or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002015
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002016 The result is cached on the ``DirEntry`` object. Caching, system calls
2017 made, and exceptions raised are as per :func:`~DirEntry.is_dir`.
Victor Stinner6036e442015-03-08 01:58:04 +01002018
2019 .. method:: is_symlink()
2020
Victor Stinner51b58322015-05-15 09:12:58 +02002021 Return ``True`` if this entry is a symbolic link (even if broken);
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002022 return ``False`` if the entry points to a directory or any kind of file,
Victor Stinner51b58322015-05-15 09:12:58 +02002023 or if it doesn't exist anymore.
Victor Stinner6036e442015-03-08 01:58:04 +01002024
Victor Stinner51b58322015-05-15 09:12:58 +02002025 The result is cached on the ``DirEntry`` object. Call
2026 :func:`os.path.islink` to fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002027
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002028 On the first, uncached call, no system call is required in most cases.
2029 Specifically, neither Windows or Unix require a system call, except on
2030 certain Unix file systems, such as network file systems, that return
2031 ``dirent.d_type == DT_UNKNOWN``.
Victor Stinner6036e442015-03-08 01:58:04 +01002032
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002033 This method can raise :exc:`OSError`, such as :exc:`PermissionError`,
2034 but :exc:`FileNotFoundError` is caught and not raised.
Victor Stinner6036e442015-03-08 01:58:04 +01002035
2036 .. method:: stat(\*, follow_symlinks=True)
2037
Victor Stinner51b58322015-05-15 09:12:58 +02002038 Return a :class:`stat_result` object for this entry. This method
2039 follows symbolic links by default; to stat a symbolic link add the
2040 ``follow_symlinks=False`` argument.
2041
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002042 On Unix, this method always requires a system call. On Windows, it
2043 only requires a system call if *follow_symlinks* is ``True`` and the
2044 entry is a symbolic link.
Victor Stinner6036e442015-03-08 01:58:04 +01002045
2046 On Windows, the ``st_ino``, ``st_dev`` and ``st_nlink`` attributes of the
2047 :class:`stat_result` are always set to zero. Call :func:`os.stat` to
2048 get these attributes.
2049
Victor Stinner5f0c5d92016-01-31 18:36:41 +01002050 The result is cached on the ``DirEntry`` object, with a separate cache
2051 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` to
2052 fetch up-to-date information.
Victor Stinner6036e442015-03-08 01:58:04 +01002053
Guido van Rossum1469d742016-01-06 11:36:03 -08002054 Note that there is a nice correspondence between several attributes
2055 and methods of ``DirEntry`` and of :class:`pathlib.Path`. In
Brett Cannon559ad5d2016-06-24 12:22:14 -07002056 particular, the ``name`` attribute has the same meaning, as do the
2057 ``is_dir()``, ``is_file()``, ``is_symlink()`` and ``stat()`` methods.
Guido van Rossum1469d742016-01-06 11:36:03 -08002058
Victor Stinner6036e442015-03-08 01:58:04 +01002059 .. versionadded:: 3.5
2060
2061
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002062.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002063
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002064 Get the status of a file or a file descriptor. Perform the equivalent of a
2065 :c:func:`stat` system call on the given path. *path* may be specified as
2066 either a string or as an open file descriptor. Return a :class:`stat_result`
2067 object.
Georg Brandl116aa622007-08-15 14:28:22 +00002068
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002069 This function normally follows symlinks; to stat a symlink add the argument
2070 ``follow_symlinks=False``, or use :func:`lstat`.
R. David Murray7b1aae92011-01-24 19:34:58 +00002071
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002072 This function can support :ref:`specifying a file descriptor <path_fd>` and
2073 :ref:`not following symlinks <follow_symlinks>`.
Georg Brandl116aa622007-08-15 14:28:22 +00002074
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002075 .. index:: module: stat
R. David Murray7b1aae92011-01-24 19:34:58 +00002076
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002077 Example::
Georg Brandl116aa622007-08-15 14:28:22 +00002078
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002079 >>> import os
2080 >>> statinfo = os.stat('somefile.txt')
2081 >>> statinfo
2082 os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2083 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2084 st_mtime=1297230027, st_ctime=1297230027)
2085 >>> statinfo.st_size
2086 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002087
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002088 .. seealso::
Zachary Ware63f277b2014-06-19 09:46:37 -05002089
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002090 :func:`fstat` and :func:`lstat` functions.
2091
2092 .. versionadded:: 3.3
2093 Added the *dir_fd* and *follow_symlinks* arguments, specifying a file
2094 descriptor instead of a path.
2095
2096
2097.. class:: stat_result
2098
2099 Object whose attributes correspond roughly to the members of the
2100 :c:type:`stat` structure. It is used for the result of :func:`os.stat`,
2101 :func:`os.fstat` and :func:`os.lstat`.
2102
2103 Attributes:
2104
2105 .. attribute:: st_mode
2106
2107 File mode: file type and file mode bits (permissions).
2108
2109 .. attribute:: st_ino
2110
2111 Inode number.
2112
2113 .. attribute:: st_dev
2114
2115 Identifier of the device on which this file resides.
2116
2117 .. attribute:: st_nlink
2118
2119 Number of hard links.
2120
2121 .. attribute:: st_uid
2122
2123 User identifier of the file owner.
2124
2125 .. attribute:: st_gid
2126
2127 Group identifier of the file owner.
2128
2129 .. attribute:: st_size
2130
2131 Size of the file in bytes, if it is a regular file or a symbolic link.
2132 The size of a symbolic link is the length of the pathname it contains,
2133 without a terminating null byte.
2134
2135 Timestamps:
2136
2137 .. attribute:: st_atime
2138
2139 Time of most recent access expressed in seconds.
2140
2141 .. attribute:: st_mtime
2142
2143 Time of most recent content modification expressed in seconds.
2144
2145 .. attribute:: st_ctime
2146
2147 Platform dependent:
2148
2149 * the time of most recent metadata change on Unix,
2150 * the time of creation on Windows, expressed in seconds.
2151
2152 .. attribute:: st_atime_ns
2153
2154 Time of most recent access expressed in nanoseconds as an integer.
2155
2156 .. attribute:: st_mtime_ns
2157
2158 Time of most recent content modification expressed in nanoseconds as an
2159 integer.
2160
2161 .. attribute:: st_ctime_ns
2162
2163 Platform dependent:
2164
2165 * the time of most recent metadata change on Unix,
2166 * the time of creation on Windows, expressed in nanoseconds as an
2167 integer.
2168
2169 See also the :func:`stat_float_times` function.
Zachary Ware63f277b2014-06-19 09:46:37 -05002170
Georg Brandl116aa622007-08-15 14:28:22 +00002171 .. note::
2172
Senthil Kumaran3aac1792011-07-04 11:43:51 -07002173 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07002174 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
2175 system and the file system. For example, on Windows systems using the FAT
2176 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
2177 :attr:`st_atime` has only 1-day resolution. See your operating system
2178 documentation for details.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002179
Larry Hastings6fe20b32012-04-19 15:07:49 -07002180 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
2181 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
2182 systems do not provide nanosecond precision. On systems that do
2183 provide nanosecond precision, the floating-point object used to
2184 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
2185 cannot preserve all of it, and as such will be slightly inexact.
2186 If you need the exact timestamps you should always use
2187 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00002188
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002189 On some Unix systems (such as Linux), the following attributes may also be
2190 available:
2191
2192 .. attribute:: st_blocks
2193
2194 Number of 512-byte blocks allocated for file.
2195 This may be smaller than :attr:`st_size`/512 when the file has holes.
2196
2197 .. attribute:: st_blksize
2198
2199 "Preferred" blocksize for efficient file system I/O. Writing to a file in
2200 smaller chunks may cause an inefficient read-modify-rewrite.
2201
2202 .. attribute:: st_rdev
2203
2204 Type of device if an inode device.
2205
2206 .. attribute:: st_flags
2207
2208 User defined flags for file.
2209
2210 On other Unix systems (such as FreeBSD), the following attributes may be
2211 available (but may be only filled out if root tries to use them):
2212
2213 .. attribute:: st_gen
2214
2215 File generation number.
2216
2217 .. attribute:: st_birthtime
2218
2219 Time of file creation.
2220
2221 On Mac OS systems, the following attributes may also be available:
2222
2223 .. attribute:: st_rsize
2224
2225 Real size of the file.
2226
2227 .. attribute:: st_creator
2228
2229 Creator of the file.
2230
2231 .. attribute:: st_type
2232
2233 File type.
2234
Victor Stinnere1d24f72014-07-24 12:44:07 +02002235 On Windows systems, the following attribute is also available:
2236
2237 .. attribute:: st_file_attributes
2238
2239 Windows file attributes: ``dwFileAttributes`` member of the
2240 ``BY_HANDLE_FILE_INFORMATION`` structure returned by
2241 :c:func:`GetFileInformationByHandle`. See the ``FILE_ATTRIBUTE_*``
2242 constants in the :mod:`stat` module.
2243
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002244 The standard module :mod:`stat` defines functions and constants that are
2245 useful for extracting information from a :c:type:`stat` structure. (On
2246 Windows, some items are filled with dummy values.)
2247
2248 For backward compatibility, a :class:`stat_result` instance is also
Georg Brandl50c40002012-06-24 11:45:20 +02002249 accessible as a tuple of at least 10 integers giving the most important (and
2250 portable) members of the :c:type:`stat` structure, in the order
2251 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
2252 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
2253 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002254 some implementations. For compatibility with older Python versions,
2255 accessing :class:`stat_result` as a tuple always returns integers.
Georg Brandl116aa622007-08-15 14:28:22 +00002256
Larry Hastings6fe20b32012-04-19 15:07:49 -07002257 .. versionadded:: 3.3
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002258 Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and
2259 :attr:`st_ctime_ns` members.
Larry Hastings6fe20b32012-04-19 15:07:49 -07002260
Zachary Ware63f277b2014-06-19 09:46:37 -05002261 .. versionadded:: 3.5
2262 Added the :attr:`st_file_attributes` member on Windows.
2263
Georg Brandl116aa622007-08-15 14:28:22 +00002264
2265.. function:: stat_float_times([newvalue])
2266
2267 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00002268 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00002269 ``False``, future calls return ints. If *newvalue* is omitted, return the
2270 current setting.
2271
2272 For compatibility with older Python versions, accessing :class:`stat_result` as
2273 a tuple always returns integers.
2274
Georg Brandl55ac8f02007-09-01 13:51:09 +00002275 Python now returns float values by default. Applications which do not work
2276 correctly with floating point time stamps can use this function to restore the
2277 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00002278
2279 The resolution of the timestamps (that is the smallest possible fraction)
2280 depends on the system. Some systems only support second resolution; on these
2281 systems, the fraction will always be zero.
2282
2283 It is recommended that this setting is only changed at program startup time in
2284 the *__main__* module; libraries should never change this setting. If an
2285 application uses a library that works incorrectly if floating point time stamps
2286 are processed, this application should turn the feature off until the library
2287 has been corrected.
2288
Victor Stinner034d0aa2012-06-05 01:22:15 +02002289 .. deprecated:: 3.3
2290
Georg Brandl116aa622007-08-15 14:28:22 +00002291
2292.. function:: statvfs(path)
2293
Georg Brandl60203b42010-10-06 10:11:56 +00002294 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002295 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002296 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002297 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2298 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002299 :attr:`f_flag`, :attr:`f_namemax`.
2300
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002301 Two module-level constants are defined for the :attr:`f_flag` attribute's
2302 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2303 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2304 setuid/setgid bits are disabled or not supported.
2305
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002306 Additional module-level constants are defined for GNU/glibc based systems.
2307 These are :const:`ST_NODEV` (disallow access to device special files),
2308 :const:`ST_NOEXEC` (disallow program execution), :const:`ST_SYNCHRONOUS`
2309 (writes are synced at once), :const:`ST_MANDLOCK` (allow mandatory locks on an FS),
2310 :const:`ST_WRITE` (write on file/directory/symlink), :const:`ST_APPEND`
2311 (append-only file), :const:`ST_IMMUTABLE` (immutable file), :const:`ST_NOATIME`
2312 (do not update access times), :const:`ST_NODIRATIME` (do not update directory access
2313 times), :const:`ST_RELATIME` (update atime relative to mtime/ctime).
2314
Georg Brandl50c40002012-06-24 11:45:20 +02002315 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002316
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002317 .. versionchanged:: 3.2
2318 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2319
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002320 .. versionchanged:: 3.4
2321 The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`,
2322 :const:`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`,
2323 :const:`ST_IMMUTABLE`, :const:`ST_NOATIME`, :const:`ST_NODIRATIME`,
2324 and :const:`ST_RELATIME` constants were added.
2325
Benjamin Petersonf650e462010-05-06 23:03:05 +00002326 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002327
Larry Hastings9cf065c2012-06-22 16:30:09 -07002328 .. versionadded:: 3.3
2329 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00002330
Larry Hastings9cf065c2012-06-22 16:30:09 -07002331
2332.. data:: supports_dir_fd
2333
Serhiy Storchakadab83542013-10-13 20:12:43 +03002334 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002335 :mod:`os` module permit use of their *dir_fd* parameter. Different platforms
Larry Hastings9cf065c2012-06-22 16:30:09 -07002336 provide different functionality, and an option that might work on one might
2337 be unsupported on another. For consistency's sakes, functions that support
Andrew Svetlov5b898402012-12-18 21:26:36 +02002338 *dir_fd* always allow specifying the parameter, but will raise an exception
Larry Hastings9cf065c2012-06-22 16:30:09 -07002339 if the functionality is not actually available.
2340
2341 To check whether a particular function permits use of its *dir_fd*
2342 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
2343 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
2344 is locally available::
2345
2346 os.stat in os.supports_dir_fd
2347
Georg Brandlf62445a2012-06-24 13:31:20 +02002348 Currently *dir_fd* parameters only work on Unix platforms; none of them work
2349 on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002350
2351 .. versionadded:: 3.3
2352
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002353
Larry Hastings9cf065c2012-06-22 16:30:09 -07002354.. data:: supports_effective_ids
2355
Serhiy Storchakadab83542013-10-13 20:12:43 +03002356 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002357 :mod:`os` module permit use of the *effective_ids* parameter for
2358 :func:`os.access`. If the local platform supports it, the collection will
2359 contain :func:`os.access`, otherwise it will be empty.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002360
Georg Brandl50c40002012-06-24 11:45:20 +02002361 To check whether you can use the *effective_ids* parameter for
Berker Peksag4d6c6062015-02-16 03:36:10 +02002362 :func:`os.access`, use the ``in`` operator on ``supports_effective_ids``,
2363 like so::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002364
2365 os.access in os.supports_effective_ids
2366
Georg Brandl50c40002012-06-24 11:45:20 +02002367 Currently *effective_ids* only works on Unix platforms; it does not work on
2368 Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002369
2370 .. versionadded:: 3.3
2371
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002372
Larry Hastings9cf065c2012-06-22 16:30:09 -07002373.. data:: supports_fd
2374
Serhiy Storchakadab83542013-10-13 20:12:43 +03002375 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002376 :mod:`os` module permit specifying their *path* parameter as an open file
Larry Hastings9cf065c2012-06-22 16:30:09 -07002377 descriptor. Different platforms provide different functionality, and an
2378 option that might work on one might be unsupported on another. For
2379 consistency's sakes, functions that support *fd* always allow specifying
Andrew Svetlov5b898402012-12-18 21:26:36 +02002380 the parameter, but will raise an exception if the functionality is not
Larry Hastings9cf065c2012-06-22 16:30:09 -07002381 actually available.
2382
2383 To check whether a particular function permits specifying an open file
2384 descriptor for its *path* parameter, use the ``in`` operator on
2385 ``supports_fd``. As an example, this expression determines whether
2386 :func:`os.chdir` accepts open file descriptors when called on your local
2387 platform::
2388
2389 os.chdir in os.supports_fd
2390
2391 .. versionadded:: 3.3
2392
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002393
Larry Hastings9cf065c2012-06-22 16:30:09 -07002394.. data:: supports_follow_symlinks
2395
Serhiy Storchakadab83542013-10-13 20:12:43 +03002396 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002397 :mod:`os` module permit use of their *follow_symlinks* parameter. Different
Larry Hastings9cf065c2012-06-22 16:30:09 -07002398 platforms provide different functionality, and an option that might work on
2399 one might be unsupported on another. For consistency's sakes, functions that
2400 support *follow_symlinks* always allow specifying the parameter, but will
Andrew Svetlov5b898402012-12-18 21:26:36 +02002401 raise an exception if the functionality is not actually available.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002402
2403 To check whether a particular function permits use of its *follow_symlinks*
2404 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2405 example, this expression determines whether the *follow_symlinks* parameter
2406 of :func:`os.stat` is locally available::
2407
2408 os.stat in os.supports_follow_symlinks
2409
2410 .. versionadded:: 3.3
2411
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002412
Martin Panterbf19d162015-09-09 01:01:13 +00002413.. function:: symlink(src, dst, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002414
Martin Panterbf19d162015-09-09 01:01:13 +00002415 Create a symbolic link pointing to *src* named *dst*.
Brian Curtinc7395692010-07-09 15:15:09 +00002416
Larry Hastings9cf065c2012-06-22 16:30:09 -07002417 On Windows, a symlink represents either a file or a directory, and does not
Jason R. Coombs3a092862013-05-27 23:21:28 -04002418 morph to the target dynamically. If the target is present, the type of the
2419 symlink will be created to match. Otherwise, the symlink will be created
2420 as a directory if *target_is_directory* is ``True`` or a file symlink (the
2421 default) otherwise. On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002422
Georg Brandl64a41ed2010-10-06 08:52:48 +00002423 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2424 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002425
Georg Brandl50c40002012-06-24 11:45:20 +02002426 This function can support :ref:`paths relative to directory descriptors
2427 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002428
Brian Curtin52173d42010-12-02 18:29:18 +00002429 .. note::
2430
Larry Hastings9cf065c2012-06-22 16:30:09 -07002431 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2432 successfully create symlinks. This privilege is not typically granted to
2433 regular users but is available to accounts which can escalate privileges
2434 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002435 application as an administrator are ways to successfully create symlinks.
2436
Jason R. Coombs3a092862013-05-27 23:21:28 -04002437
Brian Curtin96245592010-12-28 17:08:22 +00002438 :exc:`OSError` is raised when the function is called by an unprivileged
2439 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002440
Georg Brandl64a41ed2010-10-06 08:52:48 +00002441 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002442
Georg Brandlb3823372010-07-10 08:58:37 +00002443 .. versionchanged:: 3.2
2444 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002445
Larry Hastings9cf065c2012-06-22 16:30:09 -07002446 .. versionadded:: 3.3
2447 Added the *dir_fd* argument, and now allow *target_is_directory*
2448 on non-Windows platforms.
2449
Georg Brandl116aa622007-08-15 14:28:22 +00002450
Ross Lagerwall7807c352011-03-17 20:20:30 +02002451.. function:: sync()
2452
2453 Force write of everything to disk.
2454
2455 Availability: Unix.
2456
2457 .. versionadded:: 3.3
2458
2459
2460.. function:: truncate(path, length)
2461
2462 Truncate the file corresponding to *path*, so that it is at most
2463 *length* bytes in size.
2464
Georg Brandl306336b2012-06-24 12:55:33 +02002465 This function can support :ref:`specifying a file descriptor <path_fd>`.
2466
Steve Dowerfe0a41a2015-03-20 19:50:46 -07002467 Availability: Unix, Windows.
Ross Lagerwall7807c352011-03-17 20:20:30 +02002468
2469 .. versionadded:: 3.3
2470
Steve Dowerfe0a41a2015-03-20 19:50:46 -07002471 .. versionchanged:: 3.5
2472 Added support for Windows
Ross Lagerwall7807c352011-03-17 20:20:30 +02002473
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002474.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002475
Brett Cannon01f7ac32015-12-28 17:30:32 -08002476 Remove (delete) the file *path*. This function is semantically
2477 identical to :func:`remove`; the ``unlink`` name is its
2478 traditional Unix name. Please see the documentation for
2479 :func:`remove` for further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002480
Larry Hastings9cf065c2012-06-22 16:30:09 -07002481 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002482 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002483
Larry Hastings9cf065c2012-06-22 16:30:09 -07002484
Martin Panterbf19d162015-09-09 01:01:13 +00002485.. function:: utime(path, times=None, *[, ns], dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002486
Larry Hastings76ad59b2012-05-03 00:30:07 -07002487 Set the access and modified times of the file specified by *path*.
2488
2489 :func:`utime` takes two optional parameters, *times* and *ns*.
2490 These specify the times set on *path* and are used as follows:
2491
Martin Panterbf19d162015-09-09 01:01:13 +00002492 - If *ns* is specified,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002493 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2494 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002495 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002496 it must be a 2-tuple of the form ``(atime, mtime)``
2497 where each member is an int or float expressing seconds.
Martin Panterbf19d162015-09-09 01:01:13 +00002498 - If *times* is ``None`` and *ns* is unspecified,
Larry Hastings9cf065c2012-06-22 16:30:09 -07002499 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002500 where both times are the current time.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002501
Larry Hastings9cf065c2012-06-22 16:30:09 -07002502 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002503
2504 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002505 depends on whether the operating system implements directories as files
2506 (for example, Windows does not). Note that the exact times you set here may
2507 not be returned by a subsequent :func:`~os.stat` call, depending on the
2508 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002509 times; see :func:`~os.stat`. The best way to preserve exact times is to
2510 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2511 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002512
Georg Brandl50c40002012-06-24 11:45:20 +02002513 This function can support :ref:`specifying a file descriptor <path_fd>`,
2514 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
2515 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002516
Larry Hastings76ad59b2012-05-03 00:30:07 -07002517 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002518 Added support for specifying an open file descriptor for *path*,
2519 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002520
Georg Brandl116aa622007-08-15 14:28:22 +00002521
Georg Brandl18244152009-09-02 20:34:52 +00002522.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002523
2524 .. index::
2525 single: directory; walking
2526 single: directory; traversal
2527
Christian Heimesfaf2f632008-01-06 16:59:19 +00002528 Generate the file names in a directory tree by walking the tree
2529 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002530 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2531 filenames)``.
2532
2533 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2534 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2535 *filenames* is a list of the names of the non-directory files in *dirpath*.
2536 Note that the names in the lists contain no path components. To get a full path
2537 (which begins with *top*) to a file or directory in *dirpath*, do
2538 ``os.path.join(dirpath, name)``.
2539
Christian Heimesfaf2f632008-01-06 16:59:19 +00002540 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002541 directory is generated before the triples for any of its subdirectories
Benjamin Petersone58e0c72014-06-15 20:51:12 -07002542 (directories are generated top-down). If *topdown* is ``False``, the triple
2543 for a directory is generated after the triples for all of its subdirectories
2544 (directories are generated bottom-up). No matter the value of *topdown*, the
2545 list of subdirectories is retrieved before the tuples for the directory and
2546 its subdirectories are generated.
Georg Brandl116aa622007-08-15 14:28:22 +00002547
Christian Heimesfaf2f632008-01-06 16:59:19 +00002548 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002549 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2550 recurse into the subdirectories whose names remain in *dirnames*; this can be
2551 used to prune the search, impose a specific order of visiting, or even to inform
2552 :func:`walk` about directories the caller creates or renames before it resumes
Victor Stinner0e316f62015-10-23 12:38:11 +02002553 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` has
2554 no effect on the behavior of the walk, because in bottom-up mode the directories
2555 in *dirnames* are generated before *dirpath* itself is generated.
Georg Brandl116aa622007-08-15 14:28:22 +00002556
Ezio Melotti67494f22011-10-18 12:59:39 +03002557 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002558 argument *onerror* is specified, it should be a function; it will be called with
2559 one argument, an :exc:`OSError` instance. It can report the error to continue
2560 with the walk, or raise the exception to abort the walk. Note that the filename
2561 is available as the ``filename`` attribute of the exception object.
2562
2563 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002564 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002565 symlinks, on systems that support them.
2566
Georg Brandl116aa622007-08-15 14:28:22 +00002567 .. note::
2568
Georg Brandl50c40002012-06-24 11:45:20 +02002569 Be aware that setting *followlinks* to ``True`` can lead to infinite
2570 recursion if a link points to a parent directory of itself. :func:`walk`
2571 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00002572
2573 .. note::
2574
2575 If you pass a relative pathname, don't change the current working directory
2576 between resumptions of :func:`walk`. :func:`walk` never changes the current
2577 directory, and assumes that its caller doesn't either.
2578
2579 This example displays the number of bytes taken by non-directory files in each
2580 directory under the starting directory, except that it doesn't look under any
2581 CVS subdirectory::
2582
2583 import os
2584 from os.path import join, getsize
2585 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002586 print(root, "consumes", end=" ")
2587 print(sum(getsize(join(root, name)) for name in files), end=" ")
2588 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002589 if 'CVS' in dirs:
2590 dirs.remove('CVS') # don't visit CVS directories
2591
Victor Stinner47c41b42015-03-10 13:31:47 +01002592 In the next example (simple implementation of :func:`shutil.rmtree`),
2593 walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
2594 deleting a directory before the directory is empty::
Georg Brandl116aa622007-08-15 14:28:22 +00002595
Christian Heimesfaf2f632008-01-06 16:59:19 +00002596 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002597 # assuming there are no symbolic links.
2598 # CAUTION: This is dangerous! For example, if top == '/', it
2599 # could delete all your disk files.
2600 import os
2601 for root, dirs, files in os.walk(top, topdown=False):
2602 for name in files:
2603 os.remove(os.path.join(root, name))
2604 for name in dirs:
2605 os.rmdir(os.path.join(root, name))
2606
Victor Stinner524a5ba2015-03-10 13:20:34 +01002607 .. versionchanged:: 3.5
Victor Stinner51b58322015-05-15 09:12:58 +02002608 This function now calls :func:`os.scandir` instead of :func:`os.listdir`,
2609 making it faster by reducing the number of calls to :func:`os.stat`.
Victor Stinner524a5ba2015-03-10 13:20:34 +01002610
Georg Brandl116aa622007-08-15 14:28:22 +00002611
Larry Hastingsb4038062012-07-15 10:57:38 -07002612.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)
Charles-François Natali7372b062012-02-05 15:15:38 +01002613
2614 .. index::
2615 single: directory; walking
2616 single: directory; traversal
2617
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002618 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
Larry Hastingsc48fe982012-06-25 04:49:05 -07002619 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002620
2621 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2622 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2623
Larry Hastingsc48fe982012-06-25 04:49:05 -07002624 This function always supports :ref:`paths relative to directory descriptors
Larry Hastingsb4038062012-07-15 10:57:38 -07002625 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however
Larry Hastings950b76a2012-07-15 17:32:36 -07002626 that, unlike other functions, the :func:`fwalk` default value for
Larry Hastingsb4038062012-07-15 10:57:38 -07002627 *follow_symlinks* is ``False``.
Larry Hastingsc48fe982012-06-25 04:49:05 -07002628
Charles-François Natali7372b062012-02-05 15:15:38 +01002629 .. note::
2630
2631 Since :func:`fwalk` yields file descriptors, those are only valid until
2632 the next iteration step, so you should duplicate them (e.g. with
2633 :func:`dup`) if you want to keep them longer.
2634
2635 This example displays the number of bytes taken by non-directory files in each
2636 directory under the starting directory, except that it doesn't look under any
2637 CVS subdirectory::
2638
2639 import os
2640 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2641 print(root, "consumes", end="")
Hynek Schlawack1729b8f2012-06-24 16:11:08 +02002642 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
Charles-François Natali7372b062012-02-05 15:15:38 +01002643 end="")
2644 print("bytes in", len(files), "non-directory files")
2645 if 'CVS' in dirs:
2646 dirs.remove('CVS') # don't visit CVS directories
2647
2648 In the next example, walking the tree bottom-up is essential:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002649 :func:`rmdir` doesn't allow deleting a directory before the directory is
Charles-François Natali7372b062012-02-05 15:15:38 +01002650 empty::
2651
2652 # Delete everything reachable from the directory named in "top",
2653 # assuming there are no symbolic links.
2654 # CAUTION: This is dangerous! For example, if top == '/', it
2655 # could delete all your disk files.
2656 import os
2657 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2658 for name in files:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002659 os.unlink(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01002660 for name in dirs:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002661 os.rmdir(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01002662
2663 Availability: Unix.
2664
2665 .. versionadded:: 3.3
2666
2667
Georg Brandlb9831ab2012-06-24 11:57:07 +02002668Linux extended attributes
2669~~~~~~~~~~~~~~~~~~~~~~~~~
2670
2671.. versionadded:: 3.3
2672
2673These functions are all available on Linux only.
2674
2675.. function:: getxattr(path, attribute, *, follow_symlinks=True)
2676
2677 Return the value of the extended filesystem attribute *attribute* for
2678 *path*. *attribute* can be bytes or str. If it is str, it is encoded
2679 with the filesystem encoding.
2680
2681 This function can support :ref:`specifying a file descriptor <path_fd>` and
2682 :ref:`not following symlinks <follow_symlinks>`.
2683
2684
2685.. function:: listxattr(path=None, *, follow_symlinks=True)
2686
2687 Return a list of the extended filesystem attributes on *path*. The
2688 attributes in the list are represented as strings decoded with the filesystem
2689 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
2690 directory.
2691
2692 This function can support :ref:`specifying a file descriptor <path_fd>` and
2693 :ref:`not following symlinks <follow_symlinks>`.
2694
2695
2696.. function:: removexattr(path, attribute, *, follow_symlinks=True)
2697
2698 Removes the extended filesystem attribute *attribute* from *path*.
2699 *attribute* should be bytes or str. If it is a string, it is encoded
2700 with the filesystem encoding.
2701
2702 This function can support :ref:`specifying a file descriptor <path_fd>` and
2703 :ref:`not following symlinks <follow_symlinks>`.
2704
2705
2706.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
2707
2708 Set the extended filesystem attribute *attribute* on *path* to *value*.
2709 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
2710 it is encoded with the filesystem encoding. *flags* may be
2711 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
2712 given and the attribute does not exist, ``EEXISTS`` will be raised.
2713 If :data:`XATTR_CREATE` is given and the attribute already exists, the
2714 attribute will not be created and ``ENODATA`` will be raised.
2715
2716 This function can support :ref:`specifying a file descriptor <path_fd>` and
2717 :ref:`not following symlinks <follow_symlinks>`.
2718
2719 .. note::
2720
2721 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
2722 to be ignored on some filesystems.
2723
2724
2725.. data:: XATTR_SIZE_MAX
2726
2727 The maximum size the value of an extended attribute can be. Currently, this
Serhiy Storchakaf8def282013-02-16 17:29:56 +02002728 is 64 KiB on Linux.
Georg Brandlb9831ab2012-06-24 11:57:07 +02002729
2730
2731.. data:: XATTR_CREATE
2732
2733 This is a possible value for the flags argument in :func:`setxattr`. It
2734 indicates the operation must create an attribute.
2735
2736
2737.. data:: XATTR_REPLACE
2738
2739 This is a possible value for the flags argument in :func:`setxattr`. It
2740 indicates the operation must replace an existing attribute.
2741
2742
Georg Brandl116aa622007-08-15 14:28:22 +00002743.. _os-process:
2744
2745Process Management
2746------------------
2747
2748These functions may be used to create and manage processes.
2749
Serhiy Storchakadab83542013-10-13 20:12:43 +03002750The various :func:`exec\* <execl>` functions take a list of arguments for the new
Georg Brandl116aa622007-08-15 14:28:22 +00002751program loaded into the process. In each case, the first of these arguments is
2752passed to the new program as its own name rather than as an argument a user may
2753have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002754passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002755['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2756to be ignored.
2757
2758
2759.. function:: abort()
2760
2761 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2762 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002763 an exit code of ``3``. Be aware that calling this function will not call the
2764 Python signal handler registered for :const:`SIGABRT` with
2765 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002766
Georg Brandl116aa622007-08-15 14:28:22 +00002767
2768.. function:: execl(path, arg0, arg1, ...)
2769 execle(path, arg0, arg1, ..., env)
2770 execlp(file, arg0, arg1, ...)
2771 execlpe(file, arg0, arg1, ..., env)
2772 execv(path, args)
2773 execve(path, args, env)
2774 execvp(file, args)
2775 execvpe(file, args, env)
2776
2777 These functions all execute a new program, replacing the current process; they
2778 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002779 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002780 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002781
2782 The current process is replaced immediately. Open file objects and
2783 descriptors are not flushed, so if there may be data buffered
2784 on these open files, you should flush them using
2785 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
Serhiy Storchakadab83542013-10-13 20:12:43 +03002786 :func:`exec\* <execl>` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002787
Serhiy Storchakadab83542013-10-13 20:12:43 +03002788 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00002789 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002790 to work with if the number of parameters is fixed when the code is written; the
2791 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002792 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002793 variable, with the arguments being passed in a list or tuple as the *args*
2794 parameter. In either case, the arguments to the child process should start with
2795 the name of the command being run, but this is not enforced.
2796
Christian Heimesfaf2f632008-01-06 16:59:19 +00002797 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002798 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2799 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03002800 environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00002801 discussed in the next paragraph), the new environment is used as the source of
2802 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2803 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2804 locate the executable; *path* must contain an appropriate absolute or relative
2805 path.
2806
2807 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002808 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002809 used to define the environment variables for the new process (these are used
2810 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002811 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002812 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002813
Larry Hastings9cf065c2012-06-22 16:30:09 -07002814 For :func:`execve` on some platforms, *path* may also be specified as an open
2815 file descriptor. This functionality may not be supported on your platform;
2816 you can check whether or not it is available using :data:`os.supports_fd`.
2817 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2818
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002819 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002820
Larry Hastings9cf065c2012-06-22 16:30:09 -07002821 .. versionadded:: 3.3
2822 Added support for specifying an open file descriptor for *path*
2823 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002824
2825.. function:: _exit(n)
2826
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002827 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002828 stdio buffers, etc.
2829
Georg Brandl116aa622007-08-15 14:28:22 +00002830 .. note::
2831
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002832 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2833 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002834
Christian Heimesfaf2f632008-01-06 16:59:19 +00002835The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002836although they are not required. These are typically used for system programs
2837written in Python, such as a mail server's external command delivery program.
2838
2839.. note::
2840
2841 Some of these may not be available on all Unix platforms, since there is some
2842 variation. These constants are defined where they are defined by the underlying
2843 platform.
2844
2845
2846.. data:: EX_OK
2847
Benjamin Petersonf650e462010-05-06 23:03:05 +00002848 Exit code that means no error occurred.
2849
2850 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002851
Georg Brandl116aa622007-08-15 14:28:22 +00002852
2853.. data:: EX_USAGE
2854
2855 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002856 number of arguments are given.
2857
2858 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002859
Georg Brandl116aa622007-08-15 14:28:22 +00002860
2861.. data:: EX_DATAERR
2862
Benjamin Petersonf650e462010-05-06 23:03:05 +00002863 Exit code that means the input data was incorrect.
2864
2865 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002866
Georg Brandl116aa622007-08-15 14:28:22 +00002867
2868.. data:: EX_NOINPUT
2869
2870 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002871
Georg Brandlc575c902008-09-13 17:46:05 +00002872 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002873
Georg Brandl116aa622007-08-15 14:28:22 +00002874
2875.. data:: EX_NOUSER
2876
Benjamin Petersonf650e462010-05-06 23:03:05 +00002877 Exit code that means a specified user did not exist.
2878
2879 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002880
Georg Brandl116aa622007-08-15 14:28:22 +00002881
2882.. data:: EX_NOHOST
2883
Benjamin Petersonf650e462010-05-06 23:03:05 +00002884 Exit code that means a specified host did not exist.
2885
2886 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002887
Georg Brandl116aa622007-08-15 14:28:22 +00002888
2889.. data:: EX_UNAVAILABLE
2890
Benjamin Petersonf650e462010-05-06 23:03:05 +00002891 Exit code that means that a required service is unavailable.
2892
2893 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002894
Georg Brandl116aa622007-08-15 14:28:22 +00002895
2896.. data:: EX_SOFTWARE
2897
Benjamin Petersonf650e462010-05-06 23:03:05 +00002898 Exit code that means an internal software error was detected.
2899
2900 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002901
Georg Brandl116aa622007-08-15 14:28:22 +00002902
2903.. data:: EX_OSERR
2904
2905 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002906 inability to fork or create a pipe.
2907
2908 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002909
Georg Brandl116aa622007-08-15 14:28:22 +00002910
2911.. data:: EX_OSFILE
2912
2913 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002914 some other kind of error.
2915
2916 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002917
Georg Brandl116aa622007-08-15 14:28:22 +00002918
2919.. data:: EX_CANTCREAT
2920
2921 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002922
Georg Brandlc575c902008-09-13 17:46:05 +00002923 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002924
Georg Brandl116aa622007-08-15 14:28:22 +00002925
2926.. data:: EX_IOERR
2927
2928 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002929
Georg Brandlc575c902008-09-13 17:46:05 +00002930 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002931
Georg Brandl116aa622007-08-15 14:28:22 +00002932
2933.. data:: EX_TEMPFAIL
2934
2935 Exit code that means a temporary failure occurred. This indicates something
2936 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002937 made during a retryable operation.
2938
2939 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002940
Georg Brandl116aa622007-08-15 14:28:22 +00002941
2942.. data:: EX_PROTOCOL
2943
2944 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002945 understood.
2946
2947 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002948
Georg Brandl116aa622007-08-15 14:28:22 +00002949
2950.. data:: EX_NOPERM
2951
2952 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002953 operation (but not intended for file system problems).
2954
2955 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002956
Georg Brandl116aa622007-08-15 14:28:22 +00002957
2958.. data:: EX_CONFIG
2959
2960 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002961
Georg Brandlc575c902008-09-13 17:46:05 +00002962 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002963
Georg Brandl116aa622007-08-15 14:28:22 +00002964
2965.. data:: EX_NOTFOUND
2966
Benjamin Petersonf650e462010-05-06 23:03:05 +00002967 Exit code that means something like "an entry was not found".
2968
2969 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002970
Georg Brandl116aa622007-08-15 14:28:22 +00002971
2972.. function:: fork()
2973
Christian Heimesfaf2f632008-01-06 16:59:19 +00002974 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002975 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002976
Larry Hastings3732ed22014-03-15 21:13:56 -07002977 Note that some platforms including FreeBSD <= 6.3 and Cygwin have
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002978 known issues when using fork() from a thread.
2979
Christian Heimes3046fe42013-10-29 21:08:56 +01002980 .. warning::
2981
2982 See :mod:`ssl` for applications that use the SSL module with fork().
2983
Georg Brandlc575c902008-09-13 17:46:05 +00002984 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002985
2986
2987.. function:: forkpty()
2988
2989 Fork a child process, using a new pseudo-terminal as the child's controlling
2990 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2991 new child's process id in the parent, and *fd* is the file descriptor of the
2992 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002993 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002994
Georg Brandlc575c902008-09-13 17:46:05 +00002995 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002996
2997
2998.. function:: kill(pid, sig)
2999
3000 .. index::
3001 single: process; killing
3002 single: process; signalling
3003
3004 Send signal *sig* to the process *pid*. Constants for the specific signals
3005 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00003006
3007 Windows: The :data:`signal.CTRL_C_EVENT` and
3008 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
3009 only be sent to console processes which share a common console window,
3010 e.g., some subprocesses. Any other value for *sig* will cause the process
3011 to be unconditionally killed by the TerminateProcess API, and the exit code
3012 will be set to *sig*. The Windows version of :func:`kill` additionally takes
3013 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00003014
Victor Stinnerb3e72192011-05-08 01:46:11 +02003015 See also :func:`signal.pthread_kill`.
3016
Georg Brandl67b21b72010-08-17 15:07:14 +00003017 .. versionadded:: 3.2
3018 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00003019
Georg Brandl116aa622007-08-15 14:28:22 +00003020
3021.. function:: killpg(pgid, sig)
3022
3023 .. index::
3024 single: process; killing
3025 single: process; signalling
3026
Benjamin Petersonf650e462010-05-06 23:03:05 +00003027 Send the signal *sig* to the process group *pgid*.
3028
3029 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003030
Georg Brandl116aa622007-08-15 14:28:22 +00003031
3032.. function:: nice(increment)
3033
3034 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003035
Georg Brandlc575c902008-09-13 17:46:05 +00003036 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003037
3038
3039.. function:: plock(op)
3040
3041 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00003042 ``<sys/lock.h>``) determines which segments are locked.
3043
3044 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003045
3046
Martin Panterbf19d162015-09-09 01:01:13 +00003047.. function:: popen(cmd, mode='r', buffering=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00003048
Martin Panterbf19d162015-09-09 01:01:13 +00003049 Open a pipe to or from command *cmd*.
3050 The return value is an open file object
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003051 connected to the pipe, which can be read or written depending on whether *mode*
3052 is ``'r'`` (default) or ``'w'``. The *buffering* argument has the same meaning as
3053 the corresponding argument to the built-in :func:`open` function. The
3054 returned file object reads or writes text strings rather than bytes.
3055
3056 The ``close`` method returns :const:`None` if the subprocess exited
3057 successfully, or the subprocess's return code if there was an
3058 error. On POSIX systems, if the return code is positive it
3059 represents the return value of the process left-shifted by one
3060 byte. If the return code is negative, the process was terminated
3061 by the signal given by the negated value of the return code. (For
3062 example, the return value might be ``- signal.SIGKILL`` if the
3063 subprocess was killed.) On Windows systems, the return value
3064 contains the signed integer return code from the child process.
3065
3066 This is implemented using :class:`subprocess.Popen`; see that class's
3067 documentation for more powerful ways to manage and communicate with
3068 subprocesses.
Georg Brandl116aa622007-08-15 14:28:22 +00003069
3070
3071.. function:: spawnl(mode, path, ...)
3072 spawnle(mode, path, ..., env)
3073 spawnlp(mode, file, ...)
3074 spawnlpe(mode, file, ..., env)
3075 spawnv(mode, path, args)
3076 spawnve(mode, path, args, env)
3077 spawnvp(mode, file, args)
3078 spawnvpe(mode, file, args, env)
3079
3080 Execute the program *path* in a new process.
3081
3082 (Note that the :mod:`subprocess` module provides more powerful facilities for
3083 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00003084 preferable to using these functions. Check especially the
3085 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00003086
Christian Heimesfaf2f632008-01-06 16:59:19 +00003087 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00003088 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
3089 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00003090 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00003091 be used with the :func:`waitpid` function.
3092
Serhiy Storchakadab83542013-10-13 20:12:43 +03003093 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00003094 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00003095 to work with if the number of parameters is fixed when the code is written; the
3096 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00003097 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00003098 parameters is variable, with the arguments being passed in a list or tuple as
3099 the *args* parameter. In either case, the arguments to the child process must
3100 start with the name of the command being run.
3101
Christian Heimesfaf2f632008-01-06 16:59:19 +00003102 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00003103 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
3104 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03003105 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00003106 discussed in the next paragraph), the new environment is used as the source of
3107 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
3108 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
3109 :envvar:`PATH` variable to locate the executable; *path* must contain an
3110 appropriate absolute or relative path.
3111
3112 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00003113 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00003114 which is used to define the environment variables for the new process (they are
3115 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00003116 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00003117 the new process to inherit the environment of the current process. Note that
3118 keys and values in the *env* dictionary must be strings; invalid keys or
3119 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00003120
3121 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
3122 equivalent::
3123
3124 import os
3125 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
3126
3127 L = ['cp', 'index.html', '/dev/null']
3128 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
3129
3130 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02003131 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
3132 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
3133 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00003134
Georg Brandl116aa622007-08-15 14:28:22 +00003135
3136.. data:: P_NOWAIT
3137 P_NOWAITO
3138
Serhiy Storchakadab83542013-10-13 20:12:43 +03003139 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003140 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00003141 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00003142 the return value.
3143
3144 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003145
Georg Brandl116aa622007-08-15 14:28:22 +00003146
3147.. data:: P_WAIT
3148
Serhiy Storchakadab83542013-10-13 20:12:43 +03003149 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003150 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
3151 return until the new process has run to completion and will return the exit code
3152 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003153 process.
3154
3155 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003156
Georg Brandl116aa622007-08-15 14:28:22 +00003157
3158.. data:: P_DETACH
3159 P_OVERLAY
3160
Serhiy Storchakadab83542013-10-13 20:12:43 +03003161 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003162 functions. These are less portable than those listed above. :const:`P_DETACH`
3163 is similar to :const:`P_NOWAIT`, but the new process is detached from the
3164 console of the calling process. If :const:`P_OVERLAY` is used, the current
Serhiy Storchakadab83542013-10-13 20:12:43 +03003165 process will be replaced; the :func:`spawn\* <spawnl>` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003166
Georg Brandl116aa622007-08-15 14:28:22 +00003167 Availability: Windows.
3168
Georg Brandl116aa622007-08-15 14:28:22 +00003169
3170.. function:: startfile(path[, operation])
3171
3172 Start a file with its associated application.
3173
3174 When *operation* is not specified or ``'open'``, this acts like double-clicking
3175 the file in Windows Explorer, or giving the file name as an argument to the
3176 :program:`start` command from the interactive command shell: the file is opened
3177 with whatever application (if any) its extension is associated.
3178
3179 When another *operation* is given, it must be a "command verb" that specifies
3180 what should be done with the file. Common verbs documented by Microsoft are
3181 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
3182 ``'find'`` (to be used on directories).
3183
3184 :func:`startfile` returns as soon as the associated application is launched.
3185 There is no option to wait for the application to close, and no way to retrieve
3186 the application's exit status. The *path* parameter is relative to the current
3187 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00003188 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00003189 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003190 the path is properly encoded for Win32.
3191
Steve Dower7d0e0c92015-01-24 08:18:24 -08003192 To reduce interpreter startup overhead, the Win32 :c:func:`ShellExecute`
3193 function is not resolved until this function is first called. If the function
3194 cannot be resolved, :exc:`NotImplementedError` will be raised.
3195
Benjamin Petersonf650e462010-05-06 23:03:05 +00003196 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003197
Georg Brandl116aa622007-08-15 14:28:22 +00003198
3199.. function:: system(command)
3200
3201 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00003202 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00003203 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
3204 the executed command. If *command* generates any output, it will be sent to
3205 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00003206
3207 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00003208 format specified for :func:`wait`. Note that POSIX does not specify the
3209 meaning of the return value of the C :c:func:`system` function, so the return
3210 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00003211
Georg Brandl8f7b4272010-10-14 06:35:53 +00003212 On Windows, the return value is that returned by the system shell after
3213 running *command*. The shell is given by the Windows environment variable
3214 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
3215 status of the command run; on systems using a non-native shell, consult your
3216 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00003217
Georg Brandl8f7b4272010-10-14 06:35:53 +00003218 The :mod:`subprocess` module provides more powerful facilities for spawning
3219 new processes and retrieving their results; using that module is preferable
3220 to using this function. See the :ref:`subprocess-replacements` section in
3221 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00003222
Benjamin Petersonf650e462010-05-06 23:03:05 +00003223 Availability: Unix, Windows.
3224
Georg Brandl116aa622007-08-15 14:28:22 +00003225
3226.. function:: times()
3227
Larry Hastings605a62d2012-06-24 04:33:36 -07003228 Returns the current global process times.
3229 The return value is an object with five attributes:
3230
3231 * :attr:`user` - user time
3232 * :attr:`system` - system time
3233 * :attr:`children_user` - user time of all child processes
3234 * :attr:`children_system` - system time of all child processes
3235 * :attr:`elapsed` - elapsed real time since a fixed point in the past
3236
3237 For backwards compatibility, this object also behaves like a five-tuple
3238 containing :attr:`user`, :attr:`system`, :attr:`children_user`,
3239 :attr:`children_system`, and :attr:`elapsed` in that order.
3240
3241 See the Unix manual page
Benjamin Petersonf650e462010-05-06 23:03:05 +00003242 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
Larry Hastings605a62d2012-06-24 04:33:36 -07003243 On Windows, only :attr:`user` and :attr:`system` are known; the other
3244 attributes are zero.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003245
Georg Brandl8a5555f2012-06-24 13:29:09 +02003246 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003247
Larry Hastings605a62d2012-06-24 04:33:36 -07003248 .. versionchanged:: 3.3
3249 Return type changed from a tuple to a tuple-like object
3250 with named attributes.
3251
Georg Brandl116aa622007-08-15 14:28:22 +00003252
3253.. function:: wait()
3254
3255 Wait for completion of a child process, and return a tuple containing its pid
3256 and exit status indication: a 16-bit number, whose low byte is the signal number
3257 that killed the process, and whose high byte is the exit status (if the signal
3258 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003259 produced.
3260
3261 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003262
Ross Lagerwall7807c352011-03-17 20:20:30 +02003263.. function:: waitid(idtype, id, options)
3264
3265 Wait for the completion of one or more child processes.
3266 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
3267 *id* specifies the pid to wait on.
3268 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
3269 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
3270 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
3271 representing the data contained in the :c:type:`siginfo_t` structure, namely:
3272 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
3273 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
3274 children in a waitable state.
3275
3276 Availability: Unix.
3277
3278 .. versionadded:: 3.3
3279
3280.. data:: P_PID
3281 P_PGID
3282 P_ALL
3283
3284 These are the possible values for *idtype* in :func:`waitid`. They affect
3285 how *id* is interpreted.
3286
3287 Availability: Unix.
3288
3289 .. versionadded:: 3.3
3290
3291.. data:: WEXITED
3292 WSTOPPED
3293 WNOWAIT
3294
3295 Flags that can be used in *options* in :func:`waitid` that specify what
3296 child signal to wait for.
3297
3298 Availability: Unix.
3299
3300 .. versionadded:: 3.3
3301
3302
3303.. data:: CLD_EXITED
3304 CLD_DUMPED
3305 CLD_TRAPPED
3306 CLD_CONTINUED
3307
3308 These are the possible values for :attr:`si_code` in the result returned by
3309 :func:`waitid`.
3310
3311 Availability: Unix.
3312
3313 .. versionadded:: 3.3
3314
Georg Brandl116aa622007-08-15 14:28:22 +00003315
3316.. function:: waitpid(pid, options)
3317
3318 The details of this function differ on Unix and Windows.
3319
3320 On Unix: Wait for completion of a child process given by process id *pid*, and
3321 return a tuple containing its process id and exit status indication (encoded as
3322 for :func:`wait`). The semantics of the call are affected by the value of the
3323 integer *options*, which should be ``0`` for normal operation.
3324
3325 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
3326 that specific process. If *pid* is ``0``, the request is for the status of any
3327 child in the process group of the current process. If *pid* is ``-1``, the
3328 request pertains to any child of the current process. If *pid* is less than
3329 ``-1``, status is requested for any process in the process group ``-pid`` (the
3330 absolute value of *pid*).
3331
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00003332 An :exc:`OSError` is raised with the value of errno when the syscall
3333 returns -1.
3334
Georg Brandl116aa622007-08-15 14:28:22 +00003335 On Windows: Wait for completion of a process given by process handle *pid*, and
3336 return a tuple containing *pid*, and its exit status shifted left by 8 bits
3337 (shifting makes cross-platform use of the function easier). A *pid* less than or
3338 equal to ``0`` has no special meaning on Windows, and raises an exception. The
3339 value of integer *options* has no effect. *pid* can refer to any process whose
Serhiy Storchakadab83542013-10-13 20:12:43 +03003340 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
3341 functions called with :const:`P_NOWAIT` return suitable process handles.
Georg Brandl116aa622007-08-15 14:28:22 +00003342
Victor Stinnera766ddf2015-03-26 23:50:57 +01003343 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02003344 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01003345 exception, the function now retries the system call instead of raising an
3346 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
3347
Georg Brandl116aa622007-08-15 14:28:22 +00003348
Ezio Melottiba4d8ed2012-11-23 19:45:52 +02003349.. function:: wait3(options)
Georg Brandl116aa622007-08-15 14:28:22 +00003350
3351 Similar to :func:`waitpid`, except no process id argument is given and a
3352 3-element tuple containing the child's process id, exit status indication, and
3353 resource usage information is returned. Refer to :mod:`resource`.\
Serhiy Storchakadab83542013-10-13 20:12:43 +03003354 :func:`~resource.getrusage` for details on resource usage information. The
3355 option argument is the same as that provided to :func:`waitpid` and
3356 :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003357
Georg Brandl116aa622007-08-15 14:28:22 +00003358 Availability: Unix.
3359
Georg Brandl116aa622007-08-15 14:28:22 +00003360
Victor Stinner4195b5c2012-02-08 23:03:19 +01003361.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00003362
3363 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
3364 process id, exit status indication, and resource usage information is returned.
Serhiy Storchakadab83542013-10-13 20:12:43 +03003365 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
3366 resource usage information. The arguments to :func:`wait4` are the same
3367 as those provided to :func:`waitpid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003368
3369 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003370
Georg Brandl116aa622007-08-15 14:28:22 +00003371
3372.. data:: WNOHANG
3373
3374 The option for :func:`waitpid` to return immediately if no child process status
3375 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003376
Georg Brandlc575c902008-09-13 17:46:05 +00003377 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003378
3379
3380.. data:: WCONTINUED
3381
3382 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00003383 from a job control stop since their status was last reported.
3384
Georg Brandl8a5555f2012-06-24 13:29:09 +02003385 Availability: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00003386
Georg Brandl116aa622007-08-15 14:28:22 +00003387
3388.. data:: WUNTRACED
3389
3390 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00003391 their current state has not been reported since they were stopped.
3392
3393 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003394
Georg Brandl116aa622007-08-15 14:28:22 +00003395
3396The following functions take a process status code as returned by
3397:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
3398used to determine the disposition of a process.
3399
Georg Brandl116aa622007-08-15 14:28:22 +00003400.. function:: WCOREDUMP(status)
3401
Christian Heimesfaf2f632008-01-06 16:59:19 +00003402 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00003403 return ``False``.
3404
3405 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003406
Georg Brandl116aa622007-08-15 14:28:22 +00003407
3408.. function:: WIFCONTINUED(status)
3409
Christian Heimesfaf2f632008-01-06 16:59:19 +00003410 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003411 otherwise return ``False``.
3412
3413 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003414
Georg Brandl116aa622007-08-15 14:28:22 +00003415
3416.. function:: WIFSTOPPED(status)
3417
Christian Heimesfaf2f632008-01-06 16:59:19 +00003418 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003419 ``False``.
3420
3421 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003422
3423
3424.. function:: WIFSIGNALED(status)
3425
Christian Heimesfaf2f632008-01-06 16:59:19 +00003426 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003427 ``False``.
3428
3429 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003430
3431
3432.. function:: WIFEXITED(status)
3433
Christian Heimesfaf2f632008-01-06 16:59:19 +00003434 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003435 otherwise return ``False``.
3436
3437 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003438
3439
3440.. function:: WEXITSTATUS(status)
3441
3442 If ``WIFEXITED(status)`` is true, return the integer parameter to the
3443 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003444
Georg Brandlc575c902008-09-13 17:46:05 +00003445 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003446
3447
3448.. function:: WSTOPSIG(status)
3449
Benjamin Petersonf650e462010-05-06 23:03:05 +00003450 Return the signal which caused the process to stop.
3451
3452 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003453
3454
3455.. function:: WTERMSIG(status)
3456
Benjamin Petersonf650e462010-05-06 23:03:05 +00003457 Return the signal which caused the process to exit.
3458
3459 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003460
3461
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003462Interface to the scheduler
3463--------------------------
3464
3465These functions control how a process is allocated CPU time by the operating
3466system. They are only available on some Unix platforms. For more detailed
3467information, consult your Unix manpages.
3468
3469.. versionadded:: 3.3
3470
Andrew Kuchling4921a082013-06-21 11:49:57 -04003471The following scheduling policies are exposed if they are supported by the
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003472operating system.
3473
3474.. data:: SCHED_OTHER
3475
3476 The default scheduling policy.
3477
3478.. data:: SCHED_BATCH
3479
3480 Scheduling policy for CPU-intensive processes that tries to preserve
3481 interactivity on the rest of the computer.
3482
3483.. data:: SCHED_IDLE
3484
3485 Scheduling policy for extremely low priority background tasks.
3486
3487.. data:: SCHED_SPORADIC
3488
3489 Scheduling policy for sporadic server programs.
3490
3491.. data:: SCHED_FIFO
3492
3493 A First In First Out scheduling policy.
3494
3495.. data:: SCHED_RR
3496
3497 A round-robin scheduling policy.
3498
3499.. data:: SCHED_RESET_ON_FORK
3500
Martin Panter8d56c022016-05-29 04:13:35 +00003501 This flag can be OR'ed with any other scheduling policy. When a process with
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003502 this flag set forks, its child's scheduling policy and priority are reset to
3503 the default.
3504
3505
3506.. class:: sched_param(sched_priority)
3507
3508 This class represents tunable scheduling parameters used in
3509 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3510 :func:`sched_getparam`. It is immutable.
3511
3512 At the moment, there is only one possible parameter:
3513
3514 .. attribute:: sched_priority
3515
3516 The scheduling priority for a scheduling policy.
3517
3518
3519.. function:: sched_get_priority_min(policy)
3520
3521 Get the minimum priority value for *policy*. *policy* is one of the
3522 scheduling policy constants above.
3523
3524
3525.. function:: sched_get_priority_max(policy)
3526
3527 Get the maximum priority value for *policy*. *policy* is one of the
3528 scheduling policy constants above.
3529
3530
3531.. function:: sched_setscheduler(pid, policy, param)
3532
3533 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3534 the calling process. *policy* is one of the scheduling policy constants
3535 above. *param* is a :class:`sched_param` instance.
3536
3537
3538.. function:: sched_getscheduler(pid)
3539
3540 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3541 means the calling process. The result is one of the scheduling policy
3542 constants above.
3543
3544
3545.. function:: sched_setparam(pid, param)
3546
3547 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3548 the calling process. *param* is a :class:`sched_param` instance.
3549
3550
3551.. function:: sched_getparam(pid)
3552
3553 Return the scheduling parameters as a :class:`sched_param` instance for the
3554 process with PID *pid*. A *pid* of 0 means the calling process.
3555
3556
3557.. function:: sched_rr_get_interval(pid)
3558
3559 Return the round-robin quantum in seconds for the process with PID *pid*. A
3560 *pid* of 0 means the calling process.
3561
3562
3563.. function:: sched_yield()
3564
3565 Voluntarily relinquish the CPU.
3566
3567
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003568.. function:: sched_setaffinity(pid, mask)
3569
Antoine Pitrou84869872012-08-04 16:16:35 +02003570 Restrict the process with PID *pid* (or the current process if zero) to a
3571 set of CPUs. *mask* is an iterable of integers representing the set of
3572 CPUs to which the process should be restricted.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003573
3574
Antoine Pitrou84869872012-08-04 16:16:35 +02003575.. function:: sched_getaffinity(pid)
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003576
Antoine Pitrou84869872012-08-04 16:16:35 +02003577 Return the set of CPUs the process with PID *pid* (or the current process
3578 if zero) is restricted to.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003579
3580
Georg Brandl116aa622007-08-15 14:28:22 +00003581.. _os-path:
3582
3583Miscellaneous System Information
3584--------------------------------
3585
3586
3587.. function:: confstr(name)
3588
3589 Return string-valued system configuration values. *name* specifies the
3590 configuration value to retrieve; it may be a string which is the name of a
3591 defined system value; these names are specified in a number of standards (POSIX,
3592 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3593 The names known to the host operating system are given as the keys of the
3594 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003595 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003596
3597 If the configuration value specified by *name* isn't defined, ``None`` is
3598 returned.
3599
3600 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3601 specific value for *name* is not supported by the host system, even if it is
3602 included in ``confstr_names``, an :exc:`OSError` is raised with
3603 :const:`errno.EINVAL` for the error number.
3604
Georg Brandl8a5555f2012-06-24 13:29:09 +02003605 Availability: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003606
Georg Brandl116aa622007-08-15 14:28:22 +00003607
3608.. data:: confstr_names
3609
3610 Dictionary mapping names accepted by :func:`confstr` to the integer values
3611 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003612 determine the set of names known to the system.
3613
3614 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003615
3616
Charles-Francois Natali44feda32013-05-20 14:40:46 +02003617.. function:: cpu_count()
3618
3619 Return the number of CPUs in the system. Returns None if undetermined.
3620
3621 .. versionadded:: 3.4
3622
3623
Georg Brandl116aa622007-08-15 14:28:22 +00003624.. function:: getloadavg()
3625
Christian Heimesa62da1d2008-01-12 19:39:10 +00003626 Return the number of processes in the system run queue averaged over the last
3627 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003628 unobtainable.
3629
3630 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003631
Georg Brandl116aa622007-08-15 14:28:22 +00003632
3633.. function:: sysconf(name)
3634
3635 Return integer-valued system configuration values. If the configuration value
3636 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3637 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3638 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003639
Georg Brandlc575c902008-09-13 17:46:05 +00003640 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003641
3642
3643.. data:: sysconf_names
3644
3645 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3646 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003647 determine the set of names known to the system.
3648
3649 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003650
Christian Heimesfaf2f632008-01-06 16:59:19 +00003651The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003652are defined for all platforms.
3653
3654Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3655
3656
3657.. data:: curdir
3658
3659 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003660 directory. This is ``'.'`` for Windows and POSIX. Also available via
3661 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003662
3663
3664.. data:: pardir
3665
3666 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003667 directory. This is ``'..'`` for Windows and POSIX. Also available via
3668 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003669
3670
3671.. data:: sep
3672
Georg Brandlc575c902008-09-13 17:46:05 +00003673 The character used by the operating system to separate pathname components.
3674 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3675 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003676 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3677 useful. Also available via :mod:`os.path`.
3678
3679
3680.. data:: altsep
3681
3682 An alternative character used by the operating system to separate pathname
3683 components, or ``None`` if only one separator character exists. This is set to
3684 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3685 :mod:`os.path`.
3686
3687
3688.. data:: extsep
3689
3690 The character which separates the base filename from the extension; for example,
3691 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3692
Georg Brandl116aa622007-08-15 14:28:22 +00003693
3694.. data:: pathsep
3695
3696 The character conventionally used by the operating system to separate search
3697 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3698 Windows. Also available via :mod:`os.path`.
3699
3700
3701.. data:: defpath
3702
Serhiy Storchakadab83542013-10-13 20:12:43 +03003703 The default search path used by :func:`exec\*p\* <execl>` and
3704 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
3705 key. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003706
3707
3708.. data:: linesep
3709
3710 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003711 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3712 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3713 *os.linesep* as a line terminator when writing files opened in text mode (the
3714 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003715
3716
3717.. data:: devnull
3718
Georg Brandl850a9902010-05-21 22:04:32 +00003719 The file path of the null device. For example: ``'/dev/null'`` for
3720 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003721
Andrew Kuchling4921a082013-06-21 11:49:57 -04003722.. data:: RTLD_LAZY
3723 RTLD_NOW
3724 RTLD_GLOBAL
3725 RTLD_LOCAL
3726 RTLD_NODELETE
3727 RTLD_NOLOAD
3728 RTLD_DEEPBIND
3729
3730 Flags for use with the :func:`~sys.setdlopenflags` and
3731 :func:`~sys.getdlopenflags` functions. See the Unix manual page
3732 :manpage:`dlopen(3)` for what the different flags mean.
3733
3734 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +00003735
3736.. _os-miscfunc:
3737
3738Miscellaneous Functions
3739-----------------------
3740
3741
3742.. function:: urandom(n)
3743
3744 Return a string of *n* random bytes suitable for cryptographic use.
3745
3746 This function returns random bytes from an OS-specific randomness source. The
3747 returned data should be unpredictable enough for cryptographic applications,
Victor Stinnerdddf4842016-06-07 11:21:42 +02003748 though its exact quality depends on the OS implementation.
3749
3750 On Linux, ``getrandom()`` syscall is used if available and the urandom
3751 entropy pool is initialized (``getrandom()`` does not block).
3752 On a Unix-like system this will query ``/dev/urandom``. On Windows, it
3753 will use ``CryptGenRandom()``. If a randomness source is not found,
Georg Brandlc6a2c9b2013-10-06 18:43:19 +02003754 :exc:`NotImplementedError` will be raised.
Andrew Svetlov03cb99c2012-10-16 13:15:06 +03003755
Andrew Svetlov2bfe3862012-10-16 13:52:25 +03003756 For an easy-to-use interface to the random number generator
3757 provided by your platform, please see :class:`random.SystemRandom`.
Victor Stinnerace88482015-07-29 02:28:32 +02003758
Victor Stinnerdddf4842016-06-07 11:21:42 +02003759 .. versionchanged:: 3.5.2
3760 On Linux, if ``getrandom()`` blocks (the urandom entropy pool is not
3761 initialized yet), fall back on reading ``/dev/urandom``.
3762
Victor Stinnerace88482015-07-29 02:28:32 +02003763 .. versionchanged:: 3.5
3764 On Linux 3.17 and newer, the ``getrandom()`` syscall is now used
3765 when available. On OpenBSD 5.6 and newer, the C ``getentropy()``
3766 function is now used. These functions avoid the usage of an internal file
3767 descriptor.