blob: 7b26953ade5a68529e4122af252e8cce94a1fb9c [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`.
1903 On both sytems, the type of the :attr:`~DirEntry.name` and
1904 :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
2056 particular, the ``name`` and ``path`` attributes have the same
2057 meaning, as do the ``is_dir()``, ``is_file()``, ``is_symlink()``
2058 and ``stat()`` methods.
2059
Victor Stinner6036e442015-03-08 01:58:04 +01002060 .. versionadded:: 3.5
2061
2062
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002063.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002064
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002065 Get the status of a file or a file descriptor. Perform the equivalent of a
2066 :c:func:`stat` system call on the given path. *path* may be specified as
2067 either a string or as an open file descriptor. Return a :class:`stat_result`
2068 object.
Georg Brandl116aa622007-08-15 14:28:22 +00002069
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002070 This function normally follows symlinks; to stat a symlink add the argument
2071 ``follow_symlinks=False``, or use :func:`lstat`.
R. David Murray7b1aae92011-01-24 19:34:58 +00002072
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002073 This function can support :ref:`specifying a file descriptor <path_fd>` and
2074 :ref:`not following symlinks <follow_symlinks>`.
Georg Brandl116aa622007-08-15 14:28:22 +00002075
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002076 .. index:: module: stat
R. David Murray7b1aae92011-01-24 19:34:58 +00002077
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002078 Example::
Georg Brandl116aa622007-08-15 14:28:22 +00002079
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002080 >>> import os
2081 >>> statinfo = os.stat('somefile.txt')
2082 >>> statinfo
2083 os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2084 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2085 st_mtime=1297230027, st_ctime=1297230027)
2086 >>> statinfo.st_size
2087 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002088
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002089 .. seealso::
Zachary Ware63f277b2014-06-19 09:46:37 -05002090
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002091 :func:`fstat` and :func:`lstat` functions.
2092
2093 .. versionadded:: 3.3
2094 Added the *dir_fd* and *follow_symlinks* arguments, specifying a file
2095 descriptor instead of a path.
2096
2097
2098.. class:: stat_result
2099
2100 Object whose attributes correspond roughly to the members of the
2101 :c:type:`stat` structure. It is used for the result of :func:`os.stat`,
2102 :func:`os.fstat` and :func:`os.lstat`.
2103
2104 Attributes:
2105
2106 .. attribute:: st_mode
2107
2108 File mode: file type and file mode bits (permissions).
2109
2110 .. attribute:: st_ino
2111
2112 Inode number.
2113
2114 .. attribute:: st_dev
2115
2116 Identifier of the device on which this file resides.
2117
2118 .. attribute:: st_nlink
2119
2120 Number of hard links.
2121
2122 .. attribute:: st_uid
2123
2124 User identifier of the file owner.
2125
2126 .. attribute:: st_gid
2127
2128 Group identifier of the file owner.
2129
2130 .. attribute:: st_size
2131
2132 Size of the file in bytes, if it is a regular file or a symbolic link.
2133 The size of a symbolic link is the length of the pathname it contains,
2134 without a terminating null byte.
2135
2136 Timestamps:
2137
2138 .. attribute:: st_atime
2139
2140 Time of most recent access expressed in seconds.
2141
2142 .. attribute:: st_mtime
2143
2144 Time of most recent content modification expressed in seconds.
2145
2146 .. attribute:: st_ctime
2147
2148 Platform dependent:
2149
2150 * the time of most recent metadata change on Unix,
2151 * the time of creation on Windows, expressed in seconds.
2152
2153 .. attribute:: st_atime_ns
2154
2155 Time of most recent access expressed in nanoseconds as an integer.
2156
2157 .. attribute:: st_mtime_ns
2158
2159 Time of most recent content modification expressed in nanoseconds as an
2160 integer.
2161
2162 .. attribute:: st_ctime_ns
2163
2164 Platform dependent:
2165
2166 * the time of most recent metadata change on Unix,
2167 * the time of creation on Windows, expressed in nanoseconds as an
2168 integer.
2169
2170 See also the :func:`stat_float_times` function.
Zachary Ware63f277b2014-06-19 09:46:37 -05002171
Georg Brandl116aa622007-08-15 14:28:22 +00002172 .. note::
2173
Senthil Kumaran3aac1792011-07-04 11:43:51 -07002174 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07002175 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
2176 system and the file system. For example, on Windows systems using the FAT
2177 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
2178 :attr:`st_atime` has only 1-day resolution. See your operating system
2179 documentation for details.
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002180
Larry Hastings6fe20b32012-04-19 15:07:49 -07002181 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
2182 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
2183 systems do not provide nanosecond precision. On systems that do
2184 provide nanosecond precision, the floating-point object used to
2185 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
2186 cannot preserve all of it, and as such will be slightly inexact.
2187 If you need the exact timestamps you should always use
2188 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00002189
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002190 On some Unix systems (such as Linux), the following attributes may also be
2191 available:
2192
2193 .. attribute:: st_blocks
2194
2195 Number of 512-byte blocks allocated for file.
2196 This may be smaller than :attr:`st_size`/512 when the file has holes.
2197
2198 .. attribute:: st_blksize
2199
2200 "Preferred" blocksize for efficient file system I/O. Writing to a file in
2201 smaller chunks may cause an inefficient read-modify-rewrite.
2202
2203 .. attribute:: st_rdev
2204
2205 Type of device if an inode device.
2206
2207 .. attribute:: st_flags
2208
2209 User defined flags for file.
2210
2211 On other Unix systems (such as FreeBSD), the following attributes may be
2212 available (but may be only filled out if root tries to use them):
2213
2214 .. attribute:: st_gen
2215
2216 File generation number.
2217
2218 .. attribute:: st_birthtime
2219
2220 Time of file creation.
2221
2222 On Mac OS systems, the following attributes may also be available:
2223
2224 .. attribute:: st_rsize
2225
2226 Real size of the file.
2227
2228 .. attribute:: st_creator
2229
2230 Creator of the file.
2231
2232 .. attribute:: st_type
2233
2234 File type.
2235
Victor Stinnere1d24f72014-07-24 12:44:07 +02002236 On Windows systems, the following attribute is also available:
2237
2238 .. attribute:: st_file_attributes
2239
2240 Windows file attributes: ``dwFileAttributes`` member of the
2241 ``BY_HANDLE_FILE_INFORMATION`` structure returned by
2242 :c:func:`GetFileInformationByHandle`. See the ``FILE_ATTRIBUTE_*``
2243 constants in the :mod:`stat` module.
2244
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002245 The standard module :mod:`stat` defines functions and constants that are
2246 useful for extracting information from a :c:type:`stat` structure. (On
2247 Windows, some items are filled with dummy values.)
2248
2249 For backward compatibility, a :class:`stat_result` instance is also
Georg Brandl50c40002012-06-24 11:45:20 +02002250 accessible as a tuple of at least 10 integers giving the most important (and
2251 portable) members of the :c:type:`stat` structure, in the order
2252 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
2253 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
2254 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002255 some implementations. For compatibility with older Python versions,
2256 accessing :class:`stat_result` as a tuple always returns integers.
Georg Brandl116aa622007-08-15 14:28:22 +00002257
Larry Hastings6fe20b32012-04-19 15:07:49 -07002258 .. versionadded:: 3.3
Victor Stinner6d4f4fe2014-07-24 12:42:16 +02002259 Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and
2260 :attr:`st_ctime_ns` members.
Larry Hastings6fe20b32012-04-19 15:07:49 -07002261
Zachary Ware63f277b2014-06-19 09:46:37 -05002262 .. versionadded:: 3.5
2263 Added the :attr:`st_file_attributes` member on Windows.
2264
Georg Brandl116aa622007-08-15 14:28:22 +00002265
2266.. function:: stat_float_times([newvalue])
2267
2268 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00002269 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00002270 ``False``, future calls return ints. If *newvalue* is omitted, return the
2271 current setting.
2272
2273 For compatibility with older Python versions, accessing :class:`stat_result` as
2274 a tuple always returns integers.
2275
Georg Brandl55ac8f02007-09-01 13:51:09 +00002276 Python now returns float values by default. Applications which do not work
2277 correctly with floating point time stamps can use this function to restore the
2278 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00002279
2280 The resolution of the timestamps (that is the smallest possible fraction)
2281 depends on the system. Some systems only support second resolution; on these
2282 systems, the fraction will always be zero.
2283
2284 It is recommended that this setting is only changed at program startup time in
2285 the *__main__* module; libraries should never change this setting. If an
2286 application uses a library that works incorrectly if floating point time stamps
2287 are processed, this application should turn the feature off until the library
2288 has been corrected.
2289
Victor Stinner034d0aa2012-06-05 01:22:15 +02002290 .. deprecated:: 3.3
2291
Georg Brandl116aa622007-08-15 14:28:22 +00002292
2293.. function:: statvfs(path)
2294
Georg Brandl60203b42010-10-06 10:11:56 +00002295 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002296 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002297 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002298 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2299 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002300 :attr:`f_flag`, :attr:`f_namemax`.
2301
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002302 Two module-level constants are defined for the :attr:`f_flag` attribute's
2303 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2304 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2305 setuid/setgid bits are disabled or not supported.
2306
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002307 Additional module-level constants are defined for GNU/glibc based systems.
2308 These are :const:`ST_NODEV` (disallow access to device special files),
2309 :const:`ST_NOEXEC` (disallow program execution), :const:`ST_SYNCHRONOUS`
2310 (writes are synced at once), :const:`ST_MANDLOCK` (allow mandatory locks on an FS),
2311 :const:`ST_WRITE` (write on file/directory/symlink), :const:`ST_APPEND`
2312 (append-only file), :const:`ST_IMMUTABLE` (immutable file), :const:`ST_NOATIME`
2313 (do not update access times), :const:`ST_NODIRATIME` (do not update directory access
2314 times), :const:`ST_RELATIME` (update atime relative to mtime/ctime).
2315
Georg Brandl50c40002012-06-24 11:45:20 +02002316 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002317
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002318 .. versionchanged:: 3.2
2319 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2320
doko@ubuntu.comca616a22013-12-08 15:23:07 +01002321 .. versionchanged:: 3.4
2322 The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`,
2323 :const:`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`,
2324 :const:`ST_IMMUTABLE`, :const:`ST_NOATIME`, :const:`ST_NODIRATIME`,
2325 and :const:`ST_RELATIME` constants were added.
2326
Benjamin Petersonf650e462010-05-06 23:03:05 +00002327 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002328
Larry Hastings9cf065c2012-06-22 16:30:09 -07002329 .. versionadded:: 3.3
2330 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00002331
Larry Hastings9cf065c2012-06-22 16:30:09 -07002332
2333.. data:: supports_dir_fd
2334
Serhiy Storchakadab83542013-10-13 20:12:43 +03002335 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002336 :mod:`os` module permit use of their *dir_fd* parameter. Different platforms
Larry Hastings9cf065c2012-06-22 16:30:09 -07002337 provide different functionality, and an option that might work on one might
2338 be unsupported on another. For consistency's sakes, functions that support
Andrew Svetlov5b898402012-12-18 21:26:36 +02002339 *dir_fd* always allow specifying the parameter, but will raise an exception
Larry Hastings9cf065c2012-06-22 16:30:09 -07002340 if the functionality is not actually available.
2341
2342 To check whether a particular function permits use of its *dir_fd*
2343 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
2344 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
2345 is locally available::
2346
2347 os.stat in os.supports_dir_fd
2348
Georg Brandlf62445a2012-06-24 13:31:20 +02002349 Currently *dir_fd* parameters only work on Unix platforms; none of them work
2350 on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002351
2352 .. versionadded:: 3.3
2353
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002354
Larry Hastings9cf065c2012-06-22 16:30:09 -07002355.. data:: supports_effective_ids
2356
Serhiy Storchakadab83542013-10-13 20:12:43 +03002357 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002358 :mod:`os` module permit use of the *effective_ids* parameter for
2359 :func:`os.access`. If the local platform supports it, the collection will
2360 contain :func:`os.access`, otherwise it will be empty.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002361
Georg Brandl50c40002012-06-24 11:45:20 +02002362 To check whether you can use the *effective_ids* parameter for
Berker Peksag4d6c6062015-02-16 03:36:10 +02002363 :func:`os.access`, use the ``in`` operator on ``supports_effective_ids``,
2364 like so::
Larry Hastings9cf065c2012-06-22 16:30:09 -07002365
2366 os.access in os.supports_effective_ids
2367
Georg Brandl50c40002012-06-24 11:45:20 +02002368 Currently *effective_ids* only works on Unix platforms; it does not work on
2369 Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002370
2371 .. versionadded:: 3.3
2372
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002373
Larry Hastings9cf065c2012-06-22 16:30:09 -07002374.. data:: supports_fd
2375
Serhiy Storchakadab83542013-10-13 20:12:43 +03002376 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002377 :mod:`os` module permit specifying their *path* parameter as an open file
Larry Hastings9cf065c2012-06-22 16:30:09 -07002378 descriptor. Different platforms provide different functionality, and an
2379 option that might work on one might be unsupported on another. For
2380 consistency's sakes, functions that support *fd* always allow specifying
Andrew Svetlov5b898402012-12-18 21:26:36 +02002381 the parameter, but will raise an exception if the functionality is not
Larry Hastings9cf065c2012-06-22 16:30:09 -07002382 actually available.
2383
2384 To check whether a particular function permits specifying an open file
2385 descriptor for its *path* parameter, use the ``in`` operator on
2386 ``supports_fd``. As an example, this expression determines whether
2387 :func:`os.chdir` accepts open file descriptors when called on your local
2388 platform::
2389
2390 os.chdir in os.supports_fd
2391
2392 .. versionadded:: 3.3
2393
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002394
Larry Hastings9cf065c2012-06-22 16:30:09 -07002395.. data:: supports_follow_symlinks
2396
Serhiy Storchakadab83542013-10-13 20:12:43 +03002397 A :class:`~collections.abc.Set` object indicating which functions in the
Georg Brandlaceaf902012-06-25 08:33:56 +02002398 :mod:`os` module permit use of their *follow_symlinks* parameter. Different
Larry Hastings9cf065c2012-06-22 16:30:09 -07002399 platforms provide different functionality, and an option that might work on
2400 one might be unsupported on another. For consistency's sakes, functions that
2401 support *follow_symlinks* always allow specifying the parameter, but will
Andrew Svetlov5b898402012-12-18 21:26:36 +02002402 raise an exception if the functionality is not actually available.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002403
2404 To check whether a particular function permits use of its *follow_symlinks*
2405 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2406 example, this expression determines whether the *follow_symlinks* parameter
2407 of :func:`os.stat` is locally available::
2408
2409 os.stat in os.supports_follow_symlinks
2410
2411 .. versionadded:: 3.3
2412
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002413
Martin Panterbf19d162015-09-09 01:01:13 +00002414.. function:: symlink(src, dst, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002415
Martin Panterbf19d162015-09-09 01:01:13 +00002416 Create a symbolic link pointing to *src* named *dst*.
Brian Curtinc7395692010-07-09 15:15:09 +00002417
Larry Hastings9cf065c2012-06-22 16:30:09 -07002418 On Windows, a symlink represents either a file or a directory, and does not
Jason R. Coombs3a092862013-05-27 23:21:28 -04002419 morph to the target dynamically. If the target is present, the type of the
2420 symlink will be created to match. Otherwise, the symlink will be created
2421 as a directory if *target_is_directory* is ``True`` or a file symlink (the
2422 default) otherwise. On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002423
Georg Brandl64a41ed2010-10-06 08:52:48 +00002424 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2425 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002426
Georg Brandl50c40002012-06-24 11:45:20 +02002427 This function can support :ref:`paths relative to directory descriptors
2428 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002429
Brian Curtin52173d42010-12-02 18:29:18 +00002430 .. note::
2431
Larry Hastings9cf065c2012-06-22 16:30:09 -07002432 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2433 successfully create symlinks. This privilege is not typically granted to
2434 regular users but is available to accounts which can escalate privileges
2435 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002436 application as an administrator are ways to successfully create symlinks.
2437
Jason R. Coombs3a092862013-05-27 23:21:28 -04002438
Brian Curtin96245592010-12-28 17:08:22 +00002439 :exc:`OSError` is raised when the function is called by an unprivileged
2440 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002441
Georg Brandl64a41ed2010-10-06 08:52:48 +00002442 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002443
Georg Brandlb3823372010-07-10 08:58:37 +00002444 .. versionchanged:: 3.2
2445 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002446
Larry Hastings9cf065c2012-06-22 16:30:09 -07002447 .. versionadded:: 3.3
2448 Added the *dir_fd* argument, and now allow *target_is_directory*
2449 on non-Windows platforms.
2450
Georg Brandl116aa622007-08-15 14:28:22 +00002451
Ross Lagerwall7807c352011-03-17 20:20:30 +02002452.. function:: sync()
2453
2454 Force write of everything to disk.
2455
2456 Availability: Unix.
2457
2458 .. versionadded:: 3.3
2459
2460
2461.. function:: truncate(path, length)
2462
2463 Truncate the file corresponding to *path*, so that it is at most
2464 *length* bytes in size.
2465
Georg Brandl306336b2012-06-24 12:55:33 +02002466 This function can support :ref:`specifying a file descriptor <path_fd>`.
2467
Steve Dowerfe0a41a2015-03-20 19:50:46 -07002468 Availability: Unix, Windows.
Ross Lagerwall7807c352011-03-17 20:20:30 +02002469
2470 .. versionadded:: 3.3
2471
Steve Dowerfe0a41a2015-03-20 19:50:46 -07002472 .. versionchanged:: 3.5
2473 Added support for Windows
Ross Lagerwall7807c352011-03-17 20:20:30 +02002474
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002475.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002476
Brett Cannon01f7ac32015-12-28 17:30:32 -08002477 Remove (delete) the file *path*. This function is semantically
2478 identical to :func:`remove`; the ``unlink`` name is its
2479 traditional Unix name. Please see the documentation for
2480 :func:`remove` for further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002481
Larry Hastings9cf065c2012-06-22 16:30:09 -07002482 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002483 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002484
Larry Hastings9cf065c2012-06-22 16:30:09 -07002485
Martin Panterbf19d162015-09-09 01:01:13 +00002486.. function:: utime(path, times=None, *[, ns], dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002487
Larry Hastings76ad59b2012-05-03 00:30:07 -07002488 Set the access and modified times of the file specified by *path*.
2489
2490 :func:`utime` takes two optional parameters, *times* and *ns*.
2491 These specify the times set on *path* and are used as follows:
2492
Martin Panterbf19d162015-09-09 01:01:13 +00002493 - If *ns* is specified,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002494 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2495 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002496 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002497 it must be a 2-tuple of the form ``(atime, mtime)``
2498 where each member is an int or float expressing seconds.
Martin Panterbf19d162015-09-09 01:01:13 +00002499 - If *times* is ``None`` and *ns* is unspecified,
Larry Hastings9cf065c2012-06-22 16:30:09 -07002500 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002501 where both times are the current time.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002502
Larry Hastings9cf065c2012-06-22 16:30:09 -07002503 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002504
2505 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002506 depends on whether the operating system implements directories as files
2507 (for example, Windows does not). Note that the exact times you set here may
2508 not be returned by a subsequent :func:`~os.stat` call, depending on the
2509 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002510 times; see :func:`~os.stat`. The best way to preserve exact times is to
2511 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2512 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002513
Georg Brandl50c40002012-06-24 11:45:20 +02002514 This function can support :ref:`specifying a file descriptor <path_fd>`,
2515 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
2516 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002517
Larry Hastings76ad59b2012-05-03 00:30:07 -07002518 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002519 Added support for specifying an open file descriptor for *path*,
2520 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002521
Georg Brandl116aa622007-08-15 14:28:22 +00002522
Georg Brandl18244152009-09-02 20:34:52 +00002523.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002524
2525 .. index::
2526 single: directory; walking
2527 single: directory; traversal
2528
Christian Heimesfaf2f632008-01-06 16:59:19 +00002529 Generate the file names in a directory tree by walking the tree
2530 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002531 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2532 filenames)``.
2533
2534 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2535 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2536 *filenames* is a list of the names of the non-directory files in *dirpath*.
2537 Note that the names in the lists contain no path components. To get a full path
2538 (which begins with *top*) to a file or directory in *dirpath*, do
2539 ``os.path.join(dirpath, name)``.
2540
Christian Heimesfaf2f632008-01-06 16:59:19 +00002541 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002542 directory is generated before the triples for any of its subdirectories
Benjamin Petersone58e0c72014-06-15 20:51:12 -07002543 (directories are generated top-down). If *topdown* is ``False``, the triple
2544 for a directory is generated after the triples for all of its subdirectories
2545 (directories are generated bottom-up). No matter the value of *topdown*, the
2546 list of subdirectories is retrieved before the tuples for the directory and
2547 its subdirectories are generated.
Georg Brandl116aa622007-08-15 14:28:22 +00002548
Christian Heimesfaf2f632008-01-06 16:59:19 +00002549 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002550 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2551 recurse into the subdirectories whose names remain in *dirnames*; this can be
2552 used to prune the search, impose a specific order of visiting, or even to inform
2553 :func:`walk` about directories the caller creates or renames before it resumes
Victor Stinner0e316f62015-10-23 12:38:11 +02002554 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` has
2555 no effect on the behavior of the walk, because in bottom-up mode the directories
2556 in *dirnames* are generated before *dirpath* itself is generated.
Georg Brandl116aa622007-08-15 14:28:22 +00002557
Ezio Melotti67494f22011-10-18 12:59:39 +03002558 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002559 argument *onerror* is specified, it should be a function; it will be called with
2560 one argument, an :exc:`OSError` instance. It can report the error to continue
2561 with the walk, or raise the exception to abort the walk. Note that the filename
2562 is available as the ``filename`` attribute of the exception object.
2563
2564 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002565 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002566 symlinks, on systems that support them.
2567
Georg Brandl116aa622007-08-15 14:28:22 +00002568 .. note::
2569
Georg Brandl50c40002012-06-24 11:45:20 +02002570 Be aware that setting *followlinks* to ``True`` can lead to infinite
2571 recursion if a link points to a parent directory of itself. :func:`walk`
2572 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00002573
2574 .. note::
2575
2576 If you pass a relative pathname, don't change the current working directory
2577 between resumptions of :func:`walk`. :func:`walk` never changes the current
2578 directory, and assumes that its caller doesn't either.
2579
2580 This example displays the number of bytes taken by non-directory files in each
2581 directory under the starting directory, except that it doesn't look under any
2582 CVS subdirectory::
2583
2584 import os
2585 from os.path import join, getsize
2586 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002587 print(root, "consumes", end=" ")
2588 print(sum(getsize(join(root, name)) for name in files), end=" ")
2589 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002590 if 'CVS' in dirs:
2591 dirs.remove('CVS') # don't visit CVS directories
2592
Victor Stinner47c41b42015-03-10 13:31:47 +01002593 In the next example (simple implementation of :func:`shutil.rmtree`),
2594 walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
2595 deleting a directory before the directory is empty::
Georg Brandl116aa622007-08-15 14:28:22 +00002596
Christian Heimesfaf2f632008-01-06 16:59:19 +00002597 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002598 # assuming there are no symbolic links.
2599 # CAUTION: This is dangerous! For example, if top == '/', it
2600 # could delete all your disk files.
2601 import os
2602 for root, dirs, files in os.walk(top, topdown=False):
2603 for name in files:
2604 os.remove(os.path.join(root, name))
2605 for name in dirs:
2606 os.rmdir(os.path.join(root, name))
2607
Victor Stinner524a5ba2015-03-10 13:20:34 +01002608 .. versionchanged:: 3.5
Victor Stinner51b58322015-05-15 09:12:58 +02002609 This function now calls :func:`os.scandir` instead of :func:`os.listdir`,
2610 making it faster by reducing the number of calls to :func:`os.stat`.
Victor Stinner524a5ba2015-03-10 13:20:34 +01002611
Georg Brandl116aa622007-08-15 14:28:22 +00002612
Larry Hastingsb4038062012-07-15 10:57:38 -07002613.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)
Charles-François Natali7372b062012-02-05 15:15:38 +01002614
2615 .. index::
2616 single: directory; walking
2617 single: directory; traversal
2618
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002619 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
Larry Hastingsc48fe982012-06-25 04:49:05 -07002620 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002621
2622 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2623 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2624
Larry Hastingsc48fe982012-06-25 04:49:05 -07002625 This function always supports :ref:`paths relative to directory descriptors
Larry Hastingsb4038062012-07-15 10:57:38 -07002626 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however
Larry Hastings950b76a2012-07-15 17:32:36 -07002627 that, unlike other functions, the :func:`fwalk` default value for
Larry Hastingsb4038062012-07-15 10:57:38 -07002628 *follow_symlinks* is ``False``.
Larry Hastingsc48fe982012-06-25 04:49:05 -07002629
Charles-François Natali7372b062012-02-05 15:15:38 +01002630 .. note::
2631
2632 Since :func:`fwalk` yields file descriptors, those are only valid until
2633 the next iteration step, so you should duplicate them (e.g. with
2634 :func:`dup`) if you want to keep them longer.
2635
2636 This example displays the number of bytes taken by non-directory files in each
2637 directory under the starting directory, except that it doesn't look under any
2638 CVS subdirectory::
2639
2640 import os
2641 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2642 print(root, "consumes", end="")
Hynek Schlawack1729b8f2012-06-24 16:11:08 +02002643 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
Charles-François Natali7372b062012-02-05 15:15:38 +01002644 end="")
2645 print("bytes in", len(files), "non-directory files")
2646 if 'CVS' in dirs:
2647 dirs.remove('CVS') # don't visit CVS directories
2648
2649 In the next example, walking the tree bottom-up is essential:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002650 :func:`rmdir` doesn't allow deleting a directory before the directory is
Charles-François Natali7372b062012-02-05 15:15:38 +01002651 empty::
2652
2653 # Delete everything reachable from the directory named in "top",
2654 # assuming there are no symbolic links.
2655 # CAUTION: This is dangerous! For example, if top == '/', it
2656 # could delete all your disk files.
2657 import os
2658 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2659 for name in files:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002660 os.unlink(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01002661 for name in dirs:
Victor Stinner69a6ca52012-08-05 15:18:02 +02002662 os.rmdir(name, dir_fd=rootfd)
Charles-François Natali7372b062012-02-05 15:15:38 +01002663
2664 Availability: Unix.
2665
2666 .. versionadded:: 3.3
2667
2668
Georg Brandlb9831ab2012-06-24 11:57:07 +02002669Linux extended attributes
2670~~~~~~~~~~~~~~~~~~~~~~~~~
2671
2672.. versionadded:: 3.3
2673
2674These functions are all available on Linux only.
2675
2676.. function:: getxattr(path, attribute, *, follow_symlinks=True)
2677
2678 Return the value of the extended filesystem attribute *attribute* for
2679 *path*. *attribute* can be bytes or str. If it is str, it is encoded
2680 with the filesystem encoding.
2681
2682 This function can support :ref:`specifying a file descriptor <path_fd>` and
2683 :ref:`not following symlinks <follow_symlinks>`.
2684
2685
2686.. function:: listxattr(path=None, *, follow_symlinks=True)
2687
2688 Return a list of the extended filesystem attributes on *path*. The
2689 attributes in the list are represented as strings decoded with the filesystem
2690 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
2691 directory.
2692
2693 This function can support :ref:`specifying a file descriptor <path_fd>` and
2694 :ref:`not following symlinks <follow_symlinks>`.
2695
2696
2697.. function:: removexattr(path, attribute, *, follow_symlinks=True)
2698
2699 Removes the extended filesystem attribute *attribute* from *path*.
2700 *attribute* should be bytes or str. If it is a string, it is encoded
2701 with the filesystem encoding.
2702
2703 This function can support :ref:`specifying a file descriptor <path_fd>` and
2704 :ref:`not following symlinks <follow_symlinks>`.
2705
2706
2707.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
2708
2709 Set the extended filesystem attribute *attribute* on *path* to *value*.
2710 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
2711 it is encoded with the filesystem encoding. *flags* may be
2712 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
2713 given and the attribute does not exist, ``EEXISTS`` will be raised.
2714 If :data:`XATTR_CREATE` is given and the attribute already exists, the
2715 attribute will not be created and ``ENODATA`` will be raised.
2716
2717 This function can support :ref:`specifying a file descriptor <path_fd>` and
2718 :ref:`not following symlinks <follow_symlinks>`.
2719
2720 .. note::
2721
2722 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
2723 to be ignored on some filesystems.
2724
2725
2726.. data:: XATTR_SIZE_MAX
2727
2728 The maximum size the value of an extended attribute can be. Currently, this
Serhiy Storchakaf8def282013-02-16 17:29:56 +02002729 is 64 KiB on Linux.
Georg Brandlb9831ab2012-06-24 11:57:07 +02002730
2731
2732.. data:: XATTR_CREATE
2733
2734 This is a possible value for the flags argument in :func:`setxattr`. It
2735 indicates the operation must create an attribute.
2736
2737
2738.. data:: XATTR_REPLACE
2739
2740 This is a possible value for the flags argument in :func:`setxattr`. It
2741 indicates the operation must replace an existing attribute.
2742
2743
Georg Brandl116aa622007-08-15 14:28:22 +00002744.. _os-process:
2745
2746Process Management
2747------------------
2748
2749These functions may be used to create and manage processes.
2750
Serhiy Storchakadab83542013-10-13 20:12:43 +03002751The various :func:`exec\* <execl>` functions take a list of arguments for the new
Georg Brandl116aa622007-08-15 14:28:22 +00002752program loaded into the process. In each case, the first of these arguments is
2753passed to the new program as its own name rather than as an argument a user may
2754have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002755passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002756['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2757to be ignored.
2758
2759
2760.. function:: abort()
2761
2762 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2763 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002764 an exit code of ``3``. Be aware that calling this function will not call the
2765 Python signal handler registered for :const:`SIGABRT` with
2766 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002767
Georg Brandl116aa622007-08-15 14:28:22 +00002768
2769.. function:: execl(path, arg0, arg1, ...)
2770 execle(path, arg0, arg1, ..., env)
2771 execlp(file, arg0, arg1, ...)
2772 execlpe(file, arg0, arg1, ..., env)
2773 execv(path, args)
2774 execve(path, args, env)
2775 execvp(file, args)
2776 execvpe(file, args, env)
2777
2778 These functions all execute a new program, replacing the current process; they
2779 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002780 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002781 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002782
2783 The current process is replaced immediately. Open file objects and
2784 descriptors are not flushed, so if there may be data buffered
2785 on these open files, you should flush them using
2786 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
Serhiy Storchakadab83542013-10-13 20:12:43 +03002787 :func:`exec\* <execl>` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002788
Serhiy Storchakadab83542013-10-13 20:12:43 +03002789 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00002790 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002791 to work with if the number of parameters is fixed when the code is written; the
2792 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002793 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002794 variable, with the arguments being passed in a list or tuple as the *args*
2795 parameter. In either case, the arguments to the child process should start with
2796 the name of the command being run, but this is not enforced.
2797
Christian Heimesfaf2f632008-01-06 16:59:19 +00002798 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002799 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2800 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03002801 environment is being replaced (using one of the :func:`exec\*e <execl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00002802 discussed in the next paragraph), the new environment is used as the source of
2803 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2804 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2805 locate the executable; *path* must contain an appropriate absolute or relative
2806 path.
2807
2808 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002809 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002810 used to define the environment variables for the new process (these are used
2811 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002812 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002813 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002814
Larry Hastings9cf065c2012-06-22 16:30:09 -07002815 For :func:`execve` on some platforms, *path* may also be specified as an open
2816 file descriptor. This functionality may not be supported on your platform;
2817 you can check whether or not it is available using :data:`os.supports_fd`.
2818 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2819
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002820 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002821
Larry Hastings9cf065c2012-06-22 16:30:09 -07002822 .. versionadded:: 3.3
2823 Added support for specifying an open file descriptor for *path*
2824 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002825
2826.. function:: _exit(n)
2827
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002828 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002829 stdio buffers, etc.
2830
Georg Brandl116aa622007-08-15 14:28:22 +00002831 .. note::
2832
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002833 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2834 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002835
Christian Heimesfaf2f632008-01-06 16:59:19 +00002836The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002837although they are not required. These are typically used for system programs
2838written in Python, such as a mail server's external command delivery program.
2839
2840.. note::
2841
2842 Some of these may not be available on all Unix platforms, since there is some
2843 variation. These constants are defined where they are defined by the underlying
2844 platform.
2845
2846
2847.. data:: EX_OK
2848
Benjamin Petersonf650e462010-05-06 23:03:05 +00002849 Exit code that means no error occurred.
2850
2851 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002852
Georg Brandl116aa622007-08-15 14:28:22 +00002853
2854.. data:: EX_USAGE
2855
2856 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002857 number of arguments are given.
2858
2859 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002860
Georg Brandl116aa622007-08-15 14:28:22 +00002861
2862.. data:: EX_DATAERR
2863
Benjamin Petersonf650e462010-05-06 23:03:05 +00002864 Exit code that means the input data was incorrect.
2865
2866 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002867
Georg Brandl116aa622007-08-15 14:28:22 +00002868
2869.. data:: EX_NOINPUT
2870
2871 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002872
Georg Brandlc575c902008-09-13 17:46:05 +00002873 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002874
Georg Brandl116aa622007-08-15 14:28:22 +00002875
2876.. data:: EX_NOUSER
2877
Benjamin Petersonf650e462010-05-06 23:03:05 +00002878 Exit code that means a specified user did not exist.
2879
2880 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002881
Georg Brandl116aa622007-08-15 14:28:22 +00002882
2883.. data:: EX_NOHOST
2884
Benjamin Petersonf650e462010-05-06 23:03:05 +00002885 Exit code that means a specified host did not exist.
2886
2887 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002888
Georg Brandl116aa622007-08-15 14:28:22 +00002889
2890.. data:: EX_UNAVAILABLE
2891
Benjamin Petersonf650e462010-05-06 23:03:05 +00002892 Exit code that means that a required service is unavailable.
2893
2894 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002895
Georg Brandl116aa622007-08-15 14:28:22 +00002896
2897.. data:: EX_SOFTWARE
2898
Benjamin Petersonf650e462010-05-06 23:03:05 +00002899 Exit code that means an internal software error was detected.
2900
2901 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002902
Georg Brandl116aa622007-08-15 14:28:22 +00002903
2904.. data:: EX_OSERR
2905
2906 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002907 inability to fork or create a pipe.
2908
2909 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002910
Georg Brandl116aa622007-08-15 14:28:22 +00002911
2912.. data:: EX_OSFILE
2913
2914 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002915 some other kind of error.
2916
2917 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002918
Georg Brandl116aa622007-08-15 14:28:22 +00002919
2920.. data:: EX_CANTCREAT
2921
2922 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002923
Georg Brandlc575c902008-09-13 17:46:05 +00002924 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002925
Georg Brandl116aa622007-08-15 14:28:22 +00002926
2927.. data:: EX_IOERR
2928
2929 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002930
Georg Brandlc575c902008-09-13 17:46:05 +00002931 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002932
Georg Brandl116aa622007-08-15 14:28:22 +00002933
2934.. data:: EX_TEMPFAIL
2935
2936 Exit code that means a temporary failure occurred. This indicates something
2937 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002938 made during a retryable operation.
2939
2940 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002941
Georg Brandl116aa622007-08-15 14:28:22 +00002942
2943.. data:: EX_PROTOCOL
2944
2945 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002946 understood.
2947
2948 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002949
Georg Brandl116aa622007-08-15 14:28:22 +00002950
2951.. data:: EX_NOPERM
2952
2953 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002954 operation (but not intended for file system problems).
2955
2956 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002957
Georg Brandl116aa622007-08-15 14:28:22 +00002958
2959.. data:: EX_CONFIG
2960
2961 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002962
Georg Brandlc575c902008-09-13 17:46:05 +00002963 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002964
Georg Brandl116aa622007-08-15 14:28:22 +00002965
2966.. data:: EX_NOTFOUND
2967
Benjamin Petersonf650e462010-05-06 23:03:05 +00002968 Exit code that means something like "an entry was not found".
2969
2970 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002971
Georg Brandl116aa622007-08-15 14:28:22 +00002972
2973.. function:: fork()
2974
Christian Heimesfaf2f632008-01-06 16:59:19 +00002975 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002976 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002977
Larry Hastings3732ed22014-03-15 21:13:56 -07002978 Note that some platforms including FreeBSD <= 6.3 and Cygwin have
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002979 known issues when using fork() from a thread.
2980
Christian Heimes3046fe42013-10-29 21:08:56 +01002981 .. warning::
2982
2983 See :mod:`ssl` for applications that use the SSL module with fork().
2984
Georg Brandlc575c902008-09-13 17:46:05 +00002985 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002986
2987
2988.. function:: forkpty()
2989
2990 Fork a child process, using a new pseudo-terminal as the child's controlling
2991 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2992 new child's process id in the parent, and *fd* is the file descriptor of the
2993 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002994 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002995
Georg Brandlc575c902008-09-13 17:46:05 +00002996 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002997
2998
2999.. function:: kill(pid, sig)
3000
3001 .. index::
3002 single: process; killing
3003 single: process; signalling
3004
3005 Send signal *sig* to the process *pid*. Constants for the specific signals
3006 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00003007
3008 Windows: The :data:`signal.CTRL_C_EVENT` and
3009 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
3010 only be sent to console processes which share a common console window,
3011 e.g., some subprocesses. Any other value for *sig* will cause the process
3012 to be unconditionally killed by the TerminateProcess API, and the exit code
3013 will be set to *sig*. The Windows version of :func:`kill` additionally takes
3014 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00003015
Victor Stinnerb3e72192011-05-08 01:46:11 +02003016 See also :func:`signal.pthread_kill`.
3017
Georg Brandl67b21b72010-08-17 15:07:14 +00003018 .. versionadded:: 3.2
3019 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00003020
Georg Brandl116aa622007-08-15 14:28:22 +00003021
3022.. function:: killpg(pgid, sig)
3023
3024 .. index::
3025 single: process; killing
3026 single: process; signalling
3027
Benjamin Petersonf650e462010-05-06 23:03:05 +00003028 Send the signal *sig* to the process group *pgid*.
3029
3030 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003031
Georg Brandl116aa622007-08-15 14:28:22 +00003032
3033.. function:: nice(increment)
3034
3035 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003036
Georg Brandlc575c902008-09-13 17:46:05 +00003037 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003038
3039
3040.. function:: plock(op)
3041
3042 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00003043 ``<sys/lock.h>``) determines which segments are locked.
3044
3045 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003046
3047
Martin Panterbf19d162015-09-09 01:01:13 +00003048.. function:: popen(cmd, mode='r', buffering=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00003049
Martin Panterbf19d162015-09-09 01:01:13 +00003050 Open a pipe to or from command *cmd*.
3051 The return value is an open file object
Andrew Kuchlingf5a42922014-04-16 09:10:53 -04003052 connected to the pipe, which can be read or written depending on whether *mode*
3053 is ``'r'`` (default) or ``'w'``. The *buffering* argument has the same meaning as
3054 the corresponding argument to the built-in :func:`open` function. The
3055 returned file object reads or writes text strings rather than bytes.
3056
3057 The ``close`` method returns :const:`None` if the subprocess exited
3058 successfully, or the subprocess's return code if there was an
3059 error. On POSIX systems, if the return code is positive it
3060 represents the return value of the process left-shifted by one
3061 byte. If the return code is negative, the process was terminated
3062 by the signal given by the negated value of the return code. (For
3063 example, the return value might be ``- signal.SIGKILL`` if the
3064 subprocess was killed.) On Windows systems, the return value
3065 contains the signed integer return code from the child process.
3066
3067 This is implemented using :class:`subprocess.Popen`; see that class's
3068 documentation for more powerful ways to manage and communicate with
3069 subprocesses.
Georg Brandl116aa622007-08-15 14:28:22 +00003070
3071
3072.. function:: spawnl(mode, path, ...)
3073 spawnle(mode, path, ..., env)
3074 spawnlp(mode, file, ...)
3075 spawnlpe(mode, file, ..., env)
3076 spawnv(mode, path, args)
3077 spawnve(mode, path, args, env)
3078 spawnvp(mode, file, args)
3079 spawnvpe(mode, file, args, env)
3080
3081 Execute the program *path* in a new process.
3082
3083 (Note that the :mod:`subprocess` module provides more powerful facilities for
3084 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00003085 preferable to using these functions. Check especially the
3086 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00003087
Christian Heimesfaf2f632008-01-06 16:59:19 +00003088 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00003089 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
3090 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00003091 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00003092 be used with the :func:`waitpid` function.
3093
Serhiy Storchakadab83542013-10-13 20:12:43 +03003094 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how
Christian Heimesfaf2f632008-01-06 16:59:19 +00003095 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00003096 to work with if the number of parameters is fixed when the code is written; the
3097 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00003098 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00003099 parameters is variable, with the arguments being passed in a list or tuple as
3100 the *args* parameter. In either case, the arguments to the child process must
3101 start with the name of the command being run.
3102
Christian Heimesfaf2f632008-01-06 16:59:19 +00003103 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00003104 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
3105 :envvar:`PATH` environment variable to locate the program *file*. When the
Serhiy Storchakadab83542013-10-13 20:12:43 +03003106 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants,
Georg Brandl116aa622007-08-15 14:28:22 +00003107 discussed in the next paragraph), the new environment is used as the source of
3108 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
3109 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
3110 :envvar:`PATH` variable to locate the executable; *path* must contain an
3111 appropriate absolute or relative path.
3112
3113 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00003114 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00003115 which is used to define the environment variables for the new process (they are
3116 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00003117 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00003118 the new process to inherit the environment of the current process. Note that
3119 keys and values in the *env* dictionary must be strings; invalid keys or
3120 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00003121
3122 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
3123 equivalent::
3124
3125 import os
3126 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
3127
3128 L = ['cp', 'index.html', '/dev/null']
3129 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
3130
3131 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02003132 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
3133 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
3134 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00003135
Georg Brandl116aa622007-08-15 14:28:22 +00003136
3137.. data:: P_NOWAIT
3138 P_NOWAITO
3139
Serhiy Storchakadab83542013-10-13 20:12:43 +03003140 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003141 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00003142 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00003143 the return value.
3144
3145 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003146
Georg Brandl116aa622007-08-15 14:28:22 +00003147
3148.. data:: P_WAIT
3149
Serhiy Storchakadab83542013-10-13 20:12:43 +03003150 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003151 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
3152 return until the new process has run to completion and will return the exit code
3153 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00003154 process.
3155
3156 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003157
Georg Brandl116aa622007-08-15 14:28:22 +00003158
3159.. data:: P_DETACH
3160 P_OVERLAY
3161
Serhiy Storchakadab83542013-10-13 20:12:43 +03003162 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of
Georg Brandl116aa622007-08-15 14:28:22 +00003163 functions. These are less portable than those listed above. :const:`P_DETACH`
3164 is similar to :const:`P_NOWAIT`, but the new process is detached from the
3165 console of the calling process. If :const:`P_OVERLAY` is used, the current
Serhiy Storchakadab83542013-10-13 20:12:43 +03003166 process will be replaced; the :func:`spawn\* <spawnl>` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003167
Georg Brandl116aa622007-08-15 14:28:22 +00003168 Availability: Windows.
3169
Georg Brandl116aa622007-08-15 14:28:22 +00003170
3171.. function:: startfile(path[, operation])
3172
3173 Start a file with its associated application.
3174
3175 When *operation* is not specified or ``'open'``, this acts like double-clicking
3176 the file in Windows Explorer, or giving the file name as an argument to the
3177 :program:`start` command from the interactive command shell: the file is opened
3178 with whatever application (if any) its extension is associated.
3179
3180 When another *operation* is given, it must be a "command verb" that specifies
3181 what should be done with the file. Common verbs documented by Microsoft are
3182 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
3183 ``'find'`` (to be used on directories).
3184
3185 :func:`startfile` returns as soon as the associated application is launched.
3186 There is no option to wait for the application to close, and no way to retrieve
3187 the application's exit status. The *path* parameter is relative to the current
3188 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00003189 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00003190 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003191 the path is properly encoded for Win32.
3192
Steve Dower7d0e0c92015-01-24 08:18:24 -08003193 To reduce interpreter startup overhead, the Win32 :c:func:`ShellExecute`
3194 function is not resolved until this function is first called. If the function
3195 cannot be resolved, :exc:`NotImplementedError` will be raised.
3196
Benjamin Petersonf650e462010-05-06 23:03:05 +00003197 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003198
Georg Brandl116aa622007-08-15 14:28:22 +00003199
3200.. function:: system(command)
3201
3202 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00003203 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00003204 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
3205 the executed command. If *command* generates any output, it will be sent to
3206 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00003207
3208 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00003209 format specified for :func:`wait`. Note that POSIX does not specify the
3210 meaning of the return value of the C :c:func:`system` function, so the return
3211 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00003212
Georg Brandl8f7b4272010-10-14 06:35:53 +00003213 On Windows, the return value is that returned by the system shell after
3214 running *command*. The shell is given by the Windows environment variable
3215 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
3216 status of the command run; on systems using a non-native shell, consult your
3217 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00003218
Georg Brandl8f7b4272010-10-14 06:35:53 +00003219 The :mod:`subprocess` module provides more powerful facilities for spawning
3220 new processes and retrieving their results; using that module is preferable
3221 to using this function. See the :ref:`subprocess-replacements` section in
3222 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00003223
Benjamin Petersonf650e462010-05-06 23:03:05 +00003224 Availability: Unix, Windows.
3225
Georg Brandl116aa622007-08-15 14:28:22 +00003226
3227.. function:: times()
3228
Larry Hastings605a62d2012-06-24 04:33:36 -07003229 Returns the current global process times.
3230 The return value is an object with five attributes:
3231
3232 * :attr:`user` - user time
3233 * :attr:`system` - system time
3234 * :attr:`children_user` - user time of all child processes
3235 * :attr:`children_system` - system time of all child processes
3236 * :attr:`elapsed` - elapsed real time since a fixed point in the past
3237
3238 For backwards compatibility, this object also behaves like a five-tuple
3239 containing :attr:`user`, :attr:`system`, :attr:`children_user`,
3240 :attr:`children_system`, and :attr:`elapsed` in that order.
3241
3242 See the Unix manual page
Benjamin Petersonf650e462010-05-06 23:03:05 +00003243 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
Larry Hastings605a62d2012-06-24 04:33:36 -07003244 On Windows, only :attr:`user` and :attr:`system` are known; the other
3245 attributes are zero.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003246
Georg Brandl8a5555f2012-06-24 13:29:09 +02003247 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00003248
Larry Hastings605a62d2012-06-24 04:33:36 -07003249 .. versionchanged:: 3.3
3250 Return type changed from a tuple to a tuple-like object
3251 with named attributes.
3252
Georg Brandl116aa622007-08-15 14:28:22 +00003253
3254.. function:: wait()
3255
3256 Wait for completion of a child process, and return a tuple containing its pid
3257 and exit status indication: a 16-bit number, whose low byte is the signal number
3258 that killed the process, and whose high byte is the exit status (if the signal
3259 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003260 produced.
3261
3262 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003263
Ross Lagerwall7807c352011-03-17 20:20:30 +02003264.. function:: waitid(idtype, id, options)
3265
3266 Wait for the completion of one or more child processes.
3267 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
3268 *id* specifies the pid to wait on.
3269 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
3270 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
3271 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
3272 representing the data contained in the :c:type:`siginfo_t` structure, namely:
3273 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
3274 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
3275 children in a waitable state.
3276
3277 Availability: Unix.
3278
3279 .. versionadded:: 3.3
3280
3281.. data:: P_PID
3282 P_PGID
3283 P_ALL
3284
3285 These are the possible values for *idtype* in :func:`waitid`. They affect
3286 how *id* is interpreted.
3287
3288 Availability: Unix.
3289
3290 .. versionadded:: 3.3
3291
3292.. data:: WEXITED
3293 WSTOPPED
3294 WNOWAIT
3295
3296 Flags that can be used in *options* in :func:`waitid` that specify what
3297 child signal to wait for.
3298
3299 Availability: Unix.
3300
3301 .. versionadded:: 3.3
3302
3303
3304.. data:: CLD_EXITED
3305 CLD_DUMPED
3306 CLD_TRAPPED
3307 CLD_CONTINUED
3308
3309 These are the possible values for :attr:`si_code` in the result returned by
3310 :func:`waitid`.
3311
3312 Availability: Unix.
3313
3314 .. versionadded:: 3.3
3315
Georg Brandl116aa622007-08-15 14:28:22 +00003316
3317.. function:: waitpid(pid, options)
3318
3319 The details of this function differ on Unix and Windows.
3320
3321 On Unix: Wait for completion of a child process given by process id *pid*, and
3322 return a tuple containing its process id and exit status indication (encoded as
3323 for :func:`wait`). The semantics of the call are affected by the value of the
3324 integer *options*, which should be ``0`` for normal operation.
3325
3326 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
3327 that specific process. If *pid* is ``0``, the request is for the status of any
3328 child in the process group of the current process. If *pid* is ``-1``, the
3329 request pertains to any child of the current process. If *pid* is less than
3330 ``-1``, status is requested for any process in the process group ``-pid`` (the
3331 absolute value of *pid*).
3332
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00003333 An :exc:`OSError` is raised with the value of errno when the syscall
3334 returns -1.
3335
Georg Brandl116aa622007-08-15 14:28:22 +00003336 On Windows: Wait for completion of a process given by process handle *pid*, and
3337 return a tuple containing *pid*, and its exit status shifted left by 8 bits
3338 (shifting makes cross-platform use of the function easier). A *pid* less than or
3339 equal to ``0`` has no special meaning on Windows, and raises an exception. The
3340 value of integer *options* has no effect. *pid* can refer to any process whose
Serhiy Storchakadab83542013-10-13 20:12:43 +03003341 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>`
3342 functions called with :const:`P_NOWAIT` return suitable process handles.
Georg Brandl116aa622007-08-15 14:28:22 +00003343
Victor Stinnera766ddf2015-03-26 23:50:57 +01003344 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02003345 If the system call is interrupted and the signal handler does not raise an
Victor Stinnera766ddf2015-03-26 23:50:57 +01003346 exception, the function now retries the system call instead of raising an
3347 :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
3348
Georg Brandl116aa622007-08-15 14:28:22 +00003349
Ezio Melottiba4d8ed2012-11-23 19:45:52 +02003350.. function:: wait3(options)
Georg Brandl116aa622007-08-15 14:28:22 +00003351
3352 Similar to :func:`waitpid`, except no process id argument is given and a
3353 3-element tuple containing the child's process id, exit status indication, and
3354 resource usage information is returned. Refer to :mod:`resource`.\
Serhiy Storchakadab83542013-10-13 20:12:43 +03003355 :func:`~resource.getrusage` for details on resource usage information. The
3356 option argument is the same as that provided to :func:`waitpid` and
3357 :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003358
Georg Brandl116aa622007-08-15 14:28:22 +00003359 Availability: Unix.
3360
Georg Brandl116aa622007-08-15 14:28:22 +00003361
Victor Stinner4195b5c2012-02-08 23:03:19 +01003362.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00003363
3364 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
3365 process id, exit status indication, and resource usage information is returned.
Serhiy Storchakadab83542013-10-13 20:12:43 +03003366 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on
3367 resource usage information. The arguments to :func:`wait4` are the same
3368 as those provided to :func:`waitpid`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003369
3370 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003371
Georg Brandl116aa622007-08-15 14:28:22 +00003372
3373.. data:: WNOHANG
3374
3375 The option for :func:`waitpid` to return immediately if no child process status
3376 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003377
Georg Brandlc575c902008-09-13 17:46:05 +00003378 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003379
3380
3381.. data:: WCONTINUED
3382
3383 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00003384 from a job control stop since their status was last reported.
3385
Georg Brandl8a5555f2012-06-24 13:29:09 +02003386 Availability: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00003387
Georg Brandl116aa622007-08-15 14:28:22 +00003388
3389.. data:: WUNTRACED
3390
3391 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00003392 their current state has not been reported since they were stopped.
3393
3394 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003395
Georg Brandl116aa622007-08-15 14:28:22 +00003396
3397The following functions take a process status code as returned by
3398:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
3399used to determine the disposition of a process.
3400
Georg Brandl116aa622007-08-15 14:28:22 +00003401.. function:: WCOREDUMP(status)
3402
Christian Heimesfaf2f632008-01-06 16:59:19 +00003403 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00003404 return ``False``.
3405
3406 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003407
Georg Brandl116aa622007-08-15 14:28:22 +00003408
3409.. function:: WIFCONTINUED(status)
3410
Christian Heimesfaf2f632008-01-06 16:59:19 +00003411 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003412 otherwise return ``False``.
3413
3414 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003415
Georg Brandl116aa622007-08-15 14:28:22 +00003416
3417.. function:: WIFSTOPPED(status)
3418
Christian Heimesfaf2f632008-01-06 16:59:19 +00003419 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003420 ``False``.
3421
3422 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003423
3424
3425.. function:: WIFSIGNALED(status)
3426
Christian Heimesfaf2f632008-01-06 16:59:19 +00003427 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003428 ``False``.
3429
3430 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003431
3432
3433.. function:: WIFEXITED(status)
3434
Christian Heimesfaf2f632008-01-06 16:59:19 +00003435 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003436 otherwise return ``False``.
3437
3438 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003439
3440
3441.. function:: WEXITSTATUS(status)
3442
3443 If ``WIFEXITED(status)`` is true, return the integer parameter to the
3444 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003445
Georg Brandlc575c902008-09-13 17:46:05 +00003446 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003447
3448
3449.. function:: WSTOPSIG(status)
3450
Benjamin Petersonf650e462010-05-06 23:03:05 +00003451 Return the signal which caused the process to stop.
3452
3453 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003454
3455
3456.. function:: WTERMSIG(status)
3457
Benjamin Petersonf650e462010-05-06 23:03:05 +00003458 Return the signal which caused the process to exit.
3459
3460 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003461
3462
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003463Interface to the scheduler
3464--------------------------
3465
3466These functions control how a process is allocated CPU time by the operating
3467system. They are only available on some Unix platforms. For more detailed
3468information, consult your Unix manpages.
3469
3470.. versionadded:: 3.3
3471
Andrew Kuchling4921a082013-06-21 11:49:57 -04003472The following scheduling policies are exposed if they are supported by the
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003473operating system.
3474
3475.. data:: SCHED_OTHER
3476
3477 The default scheduling policy.
3478
3479.. data:: SCHED_BATCH
3480
3481 Scheduling policy for CPU-intensive processes that tries to preserve
3482 interactivity on the rest of the computer.
3483
3484.. data:: SCHED_IDLE
3485
3486 Scheduling policy for extremely low priority background tasks.
3487
3488.. data:: SCHED_SPORADIC
3489
3490 Scheduling policy for sporadic server programs.
3491
3492.. data:: SCHED_FIFO
3493
3494 A First In First Out scheduling policy.
3495
3496.. data:: SCHED_RR
3497
3498 A round-robin scheduling policy.
3499
3500.. data:: SCHED_RESET_ON_FORK
3501
Martin Panter8d56c022016-05-29 04:13:35 +00003502 This flag can be OR'ed with any other scheduling policy. When a process with
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003503 this flag set forks, its child's scheduling policy and priority are reset to
3504 the default.
3505
3506
3507.. class:: sched_param(sched_priority)
3508
3509 This class represents tunable scheduling parameters used in
3510 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3511 :func:`sched_getparam`. It is immutable.
3512
3513 At the moment, there is only one possible parameter:
3514
3515 .. attribute:: sched_priority
3516
3517 The scheduling priority for a scheduling policy.
3518
3519
3520.. function:: sched_get_priority_min(policy)
3521
3522 Get the minimum priority value for *policy*. *policy* is one of the
3523 scheduling policy constants above.
3524
3525
3526.. function:: sched_get_priority_max(policy)
3527
3528 Get the maximum priority value for *policy*. *policy* is one of the
3529 scheduling policy constants above.
3530
3531
3532.. function:: sched_setscheduler(pid, policy, param)
3533
3534 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3535 the calling process. *policy* is one of the scheduling policy constants
3536 above. *param* is a :class:`sched_param` instance.
3537
3538
3539.. function:: sched_getscheduler(pid)
3540
3541 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3542 means the calling process. The result is one of the scheduling policy
3543 constants above.
3544
3545
3546.. function:: sched_setparam(pid, param)
3547
3548 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3549 the calling process. *param* is a :class:`sched_param` instance.
3550
3551
3552.. function:: sched_getparam(pid)
3553
3554 Return the scheduling parameters as a :class:`sched_param` instance for the
3555 process with PID *pid*. A *pid* of 0 means the calling process.
3556
3557
3558.. function:: sched_rr_get_interval(pid)
3559
3560 Return the round-robin quantum in seconds for the process with PID *pid*. A
3561 *pid* of 0 means the calling process.
3562
3563
3564.. function:: sched_yield()
3565
3566 Voluntarily relinquish the CPU.
3567
3568
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003569.. function:: sched_setaffinity(pid, mask)
3570
Antoine Pitrou84869872012-08-04 16:16:35 +02003571 Restrict the process with PID *pid* (or the current process if zero) to a
3572 set of CPUs. *mask* is an iterable of integers representing the set of
3573 CPUs to which the process should be restricted.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003574
3575
Antoine Pitrou84869872012-08-04 16:16:35 +02003576.. function:: sched_getaffinity(pid)
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003577
Antoine Pitrou84869872012-08-04 16:16:35 +02003578 Return the set of CPUs the process with PID *pid* (or the current process
3579 if zero) is restricted to.
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003580
3581
Georg Brandl116aa622007-08-15 14:28:22 +00003582.. _os-path:
3583
3584Miscellaneous System Information
3585--------------------------------
3586
3587
3588.. function:: confstr(name)
3589
3590 Return string-valued system configuration values. *name* specifies the
3591 configuration value to retrieve; it may be a string which is the name of a
3592 defined system value; these names are specified in a number of standards (POSIX,
3593 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3594 The names known to the host operating system are given as the keys of the
3595 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003596 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003597
3598 If the configuration value specified by *name* isn't defined, ``None`` is
3599 returned.
3600
3601 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3602 specific value for *name* is not supported by the host system, even if it is
3603 included in ``confstr_names``, an :exc:`OSError` is raised with
3604 :const:`errno.EINVAL` for the error number.
3605
Georg Brandl8a5555f2012-06-24 13:29:09 +02003606 Availability: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003607
Georg Brandl116aa622007-08-15 14:28:22 +00003608
3609.. data:: confstr_names
3610
3611 Dictionary mapping names accepted by :func:`confstr` to the integer values
3612 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003613 determine the set of names known to the system.
3614
3615 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003616
3617
Charles-Francois Natali44feda32013-05-20 14:40:46 +02003618.. function:: cpu_count()
3619
3620 Return the number of CPUs in the system. Returns None if undetermined.
3621
3622 .. versionadded:: 3.4
3623
3624
Georg Brandl116aa622007-08-15 14:28:22 +00003625.. function:: getloadavg()
3626
Christian Heimesa62da1d2008-01-12 19:39:10 +00003627 Return the number of processes in the system run queue averaged over the last
3628 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003629 unobtainable.
3630
3631 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003632
Georg Brandl116aa622007-08-15 14:28:22 +00003633
3634.. function:: sysconf(name)
3635
3636 Return integer-valued system configuration values. If the configuration value
3637 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3638 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3639 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003640
Georg Brandlc575c902008-09-13 17:46:05 +00003641 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003642
3643
3644.. data:: sysconf_names
3645
3646 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3647 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003648 determine the set of names known to the system.
3649
3650 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003651
Christian Heimesfaf2f632008-01-06 16:59:19 +00003652The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003653are defined for all platforms.
3654
3655Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3656
3657
3658.. data:: curdir
3659
3660 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003661 directory. This is ``'.'`` for Windows and POSIX. Also available via
3662 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003663
3664
3665.. data:: pardir
3666
3667 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003668 directory. This is ``'..'`` for Windows and POSIX. Also available via
3669 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003670
3671
3672.. data:: sep
3673
Georg Brandlc575c902008-09-13 17:46:05 +00003674 The character used by the operating system to separate pathname components.
3675 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3676 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003677 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3678 useful. Also available via :mod:`os.path`.
3679
3680
3681.. data:: altsep
3682
3683 An alternative character used by the operating system to separate pathname
3684 components, or ``None`` if only one separator character exists. This is set to
3685 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3686 :mod:`os.path`.
3687
3688
3689.. data:: extsep
3690
3691 The character which separates the base filename from the extension; for example,
3692 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3693
Georg Brandl116aa622007-08-15 14:28:22 +00003694
3695.. data:: pathsep
3696
3697 The character conventionally used by the operating system to separate search
3698 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3699 Windows. Also available via :mod:`os.path`.
3700
3701
3702.. data:: defpath
3703
Serhiy Storchakadab83542013-10-13 20:12:43 +03003704 The default search path used by :func:`exec\*p\* <execl>` and
3705 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'``
3706 key. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003707
3708
3709.. data:: linesep
3710
3711 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003712 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3713 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3714 *os.linesep* as a line terminator when writing files opened in text mode (the
3715 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003716
3717
3718.. data:: devnull
3719
Georg Brandl850a9902010-05-21 22:04:32 +00003720 The file path of the null device. For example: ``'/dev/null'`` for
3721 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003722
Andrew Kuchling4921a082013-06-21 11:49:57 -04003723.. data:: RTLD_LAZY
3724 RTLD_NOW
3725 RTLD_GLOBAL
3726 RTLD_LOCAL
3727 RTLD_NODELETE
3728 RTLD_NOLOAD
3729 RTLD_DEEPBIND
3730
3731 Flags for use with the :func:`~sys.setdlopenflags` and
3732 :func:`~sys.getdlopenflags` functions. See the Unix manual page
3733 :manpage:`dlopen(3)` for what the different flags mean.
3734
3735 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +00003736
3737.. _os-miscfunc:
3738
3739Miscellaneous Functions
3740-----------------------
3741
3742
3743.. function:: urandom(n)
3744
3745 Return a string of *n* random bytes suitable for cryptographic use.
3746
3747 This function returns random bytes from an OS-specific randomness source. The
3748 returned data should be unpredictable enough for cryptographic applications,
Victor Stinnerdddf4842016-06-07 11:21:42 +02003749 though its exact quality depends on the OS implementation.
3750
3751 On Linux, ``getrandom()`` syscall is used if available and the urandom
3752 entropy pool is initialized (``getrandom()`` does not block).
3753 On a Unix-like system this will query ``/dev/urandom``. On Windows, it
3754 will use ``CryptGenRandom()``. If a randomness source is not found,
Georg Brandlc6a2c9b2013-10-06 18:43:19 +02003755 :exc:`NotImplementedError` will be raised.
Andrew Svetlov03cb99c2012-10-16 13:15:06 +03003756
Andrew Svetlov2bfe3862012-10-16 13:52:25 +03003757 For an easy-to-use interface to the random number generator
3758 provided by your platform, please see :class:`random.SystemRandom`.
Victor Stinnerace88482015-07-29 02:28:32 +02003759
Victor Stinnerdddf4842016-06-07 11:21:42 +02003760 .. versionchanged:: 3.5.2
3761 On Linux, if ``getrandom()`` blocks (the urandom entropy pool is not
3762 initialized yet), fall back on reading ``/dev/urandom``.
3763
Victor Stinnerace88482015-07-29 02:28:32 +02003764 .. versionchanged:: 3.5
3765 On Linux 3.17 and newer, the ``getrandom()`` syscall is now used
3766 when available. On OpenBSD 5.6 and newer, the C ``getentropy()``
3767 function is now used. These functions avoid the usage of an internal file
3768 descriptor.