blob: 3b3bd3dd332e224f66d4f456aeec749d6b3df7a6 [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
7
Christian Heimesa62da1d2008-01-12 19:39:10 +00008This module provides a portable way of using operating system dependent
9functionality. If you just want to read or write a file see :func:`open`, if
10you want to manipulate paths, see the :mod:`os.path` module, and if you want to
11read all the lines in all the files on the command line see the :mod:`fileinput`
12module. For creating temporary files and directories see the :mod:`tempfile`
13module, and for high-level file and directory handling see the :mod:`shutil`
14module.
Georg Brandl116aa622007-08-15 14:28:22 +000015
Benjamin Peterson1baf4652009-12-31 03:11:23 +000016Notes on the availability of these functions:
Georg Brandl116aa622007-08-15 14:28:22 +000017
Benjamin Peterson1baf4652009-12-31 03:11:23 +000018* The design of all built-in operating system dependent modules of Python is
19 such that as long as the same functionality is available, it uses the same
20 interface; for example, the function ``os.stat(path)`` returns stat
21 information about *path* in the same format (which happens to have originated
22 with the POSIX interface).
Georg Brandl116aa622007-08-15 14:28:22 +000023
Benjamin Peterson1baf4652009-12-31 03:11:23 +000024* Extensions peculiar to a particular operating system are also available
25 through the :mod:`os` module, but using them is of course a threat to
26 portability.
Georg Brandl116aa622007-08-15 14:28:22 +000027
Benjamin Peterson1baf4652009-12-31 03:11:23 +000028* All functions accepting path or file names accept both bytes and string
29 objects, and result in an object of the same type, if a path or file name is
30 returned.
Georg Brandl76e55382008-10-08 16:34:57 +000031
Benjamin Peterson1baf4652009-12-31 03:11:23 +000032* An "Availability: Unix" note means that this function is commonly found on
33 Unix systems. It does not make any claims about its existence on a specific
34 operating system.
35
36* If not separately noted, all functions that claim "Availability: Unix" are
37 supported on Mac OS X, which builds on a Unix core.
38
Benjamin Petersonf650e462010-05-06 23:03:05 +000039.. Availability notes get their own line and occur at the end of the function
40.. documentation.
41
Georg Brandlc575c902008-09-13 17:46:05 +000042.. note::
43
Christian Heimesa62da1d2008-01-12 19:39:10 +000044 All functions in this module raise :exc:`OSError` in the case of invalid or
45 inaccessible file names and paths, or other arguments that have the correct
46 type, but are not accepted by the operating system.
Georg Brandl116aa622007-08-15 14:28:22 +000047
Georg Brandl116aa622007-08-15 14:28:22 +000048.. exception:: error
49
Christian Heimesa62da1d2008-01-12 19:39:10 +000050 An alias for the built-in :exc:`OSError` exception.
Georg Brandl116aa622007-08-15 14:28:22 +000051
52
53.. data:: name
54
Benjamin Peterson1baf4652009-12-31 03:11:23 +000055 The name of the operating system dependent module imported. The following
56 names have currently been registered: ``'posix'``, ``'nt'``, ``'mac'``,
57 ``'os2'``, ``'ce'``, ``'java'``.
Georg Brandl116aa622007-08-15 14:28:22 +000058
Antoine Pitroua83cdaa2011-07-09 15:54:23 +020059 .. seealso::
60 :attr:`sys.platform` has a finer granularity. :func:`os.uname` gives
61 system-dependent version information.
62
63 The :mod:`platform` module provides detailed checks for the
64 system's identity.
65
Georg Brandl116aa622007-08-15 14:28:22 +000066
Martin v. Löwis011e8422009-05-05 04:43:17 +000067.. _os-filenames:
68
69File Names, Command Line Arguments, and Environment Variables
70-------------------------------------------------------------
71
Georg Brandl67b21b72010-08-17 15:07:14 +000072In Python, file names, command line arguments, and environment variables are
73represented using the string type. On some systems, decoding these strings to
74and from bytes is necessary before passing them to the operating system. Python
75uses the file system encoding to perform this conversion (see
76:func:`sys.getfilesystemencoding`).
Martin v. Löwis011e8422009-05-05 04:43:17 +000077
78.. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +000079 On some systems, conversion using the file system encoding may fail. In this
80 case, Python uses the ``surrogateescape`` encoding error handler, which means
81 that undecodable bytes are replaced by a Unicode character U+DCxx on
82 decoding, and these are again translated to the original byte on encoding.
Martin v. Löwis011e8422009-05-05 04:43:17 +000083
84
Georg Brandl67b21b72010-08-17 15:07:14 +000085The file system encoding must guarantee to successfully decode all bytes
86below 128. If the file system encoding fails to provide this guarantee, API
87functions may raise UnicodeErrors.
Martin v. Löwis011e8422009-05-05 04:43:17 +000088
89
Georg Brandl116aa622007-08-15 14:28:22 +000090.. _os-procinfo:
91
92Process Parameters
93------------------
94
95These functions and data items provide information and operate on the current
96process and user.
97
98
99.. data:: environ
100
101 A mapping object representing the string environment. For example,
102 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
103 and is equivalent to ``getenv("HOME")`` in C.
104
105 This mapping is captured the first time the :mod:`os` module is imported,
106 typically during Python startup as part of processing :file:`site.py`. Changes
107 to the environment made after this time are not reflected in ``os.environ``,
108 except for changes made by modifying ``os.environ`` directly.
109
110 If the platform supports the :func:`putenv` function, this mapping may be used
111 to modify the environment as well as query the environment. :func:`putenv` will
112 be called automatically when the mapping is modified.
113
Victor Stinner84ae1182010-05-06 22:05:07 +0000114 On Unix, keys and values use :func:`sys.getfilesystemencoding` and
115 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like
116 to use a different encoding.
117
Georg Brandl116aa622007-08-15 14:28:22 +0000118 .. note::
119
120 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
121 to modify ``os.environ``.
122
123 .. note::
124
Georg Brandlc575c902008-09-13 17:46:05 +0000125 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
126 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000127 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000128
129 If :func:`putenv` is not provided, a modified copy of this mapping may be
130 passed to the appropriate process-creation functions to cause child processes
131 to use a modified environment.
132
Georg Brandl9afde1c2007-11-01 20:32:30 +0000133 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000134 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000135 automatically when an item is deleted from ``os.environ``, and when
136 one of the :meth:`pop` or :meth:`clear` methods is called.
137
Georg Brandl116aa622007-08-15 14:28:22 +0000138
Victor Stinner84ae1182010-05-06 22:05:07 +0000139.. data:: environb
140
141 Bytes version of :data:`environ`: a mapping object representing the
142 environment as byte strings. :data:`environ` and :data:`environb` are
143 synchronized (modify :data:`environb` updates :data:`environ`, and vice
144 versa).
145
Victor Stinnerb745a742010-05-18 17:17:23 +0000146 :data:`environb` is only available if :data:`supports_bytes_environ` is
147 True.
Victor Stinner84ae1182010-05-06 22:05:07 +0000148
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000149 .. versionadded:: 3.2
150
Victor Stinner84ae1182010-05-06 22:05:07 +0000151
Georg Brandl116aa622007-08-15 14:28:22 +0000152.. function:: chdir(path)
153 fchdir(fd)
154 getcwd()
155 :noindex:
156
157 These functions are described in :ref:`os-file-dir`.
158
159
Victor Stinnere8d51452010-08-19 01:05:19 +0000160.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000161
Victor Stinnere8d51452010-08-19 01:05:19 +0000162 Encode *filename* to the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000163 error handler, or ``'strict'`` on Windows; return :class:`bytes` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000164
Antoine Pitroua305ca72010-09-25 22:12:00 +0000165 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000166
167 .. versionadded:: 3.2
168
169
170.. function:: fsdecode(filename)
171
172 Decode *filename* from the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000173 error handler, or ``'strict'`` on Windows; return :class:`str` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000174
175 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000176
177 .. versionadded:: 3.2
178
179
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000180.. function:: get_exec_path(env=None)
181
182 Returns the list of directories that will be searched for a named
183 executable, similar to a shell, when launching a process.
184 *env*, when specified, should be an environment variable dictionary
185 to lookup the PATH in.
186 By default, when *env* is None, :data:`environ` is used.
187
188 .. versionadded:: 3.2
189
190
Georg Brandl116aa622007-08-15 14:28:22 +0000191.. function:: ctermid()
192
193 Return the filename corresponding to the controlling terminal of the process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000194
Georg Brandl116aa622007-08-15 14:28:22 +0000195 Availability: Unix.
196
197
198.. function:: getegid()
199
200 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000201 "set id" bit on the file being executed in the current process.
202
203 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000204
205
206.. function:: geteuid()
207
208 .. index:: single: user; effective id
209
Benjamin Petersonf650e462010-05-06 23:03:05 +0000210 Return the current process's effective user id.
211
212 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000213
214
215.. function:: getgid()
216
217 .. index:: single: process; group
218
Benjamin Petersonf650e462010-05-06 23:03:05 +0000219 Return the real group id of the current process.
220
221 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000222
223
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200224.. function:: getgrouplist(user, group)
225
226 Return list of group ids that *user* belongs to. If *group* is not in the
227 list, it is included; typically, *group* is specified as the group ID
228 field from the password record for *user*.
229
230 Availability: Unix.
231
232 .. versionadded:: 3.3
233
234
Georg Brandl116aa622007-08-15 14:28:22 +0000235.. function:: getgroups()
236
237 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000238
Georg Brandl116aa622007-08-15 14:28:22 +0000239 Availability: Unix.
240
Ned Deily2e209682012-04-30 11:14:02 -0700241 .. note:: On Mac OS X, :func:`getgroups` behavior differs somewhat from
242 other Unix platforms. If the Python interpreter was built with a
243 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
244 the list of effective group ids associated with the current user process;
245 this list is limited to a system-defined number of entries, typically 16,
246 and may be modified by calls to :func:`setgroups` if suitably privileged.
247 If built with a deployment target greater than :const:`10.5`,
248 :func:`getgroups` returns the current group access list for the user
249 associated with the effective user id of the process; the group access
250 list may change over the lifetime of the process, it is not affected by
251 calls to :func:`setgroups`, and its length is not limited to 16. The
252 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
253 obtained with :func:`sysconfig.get_config_var`.
254
Georg Brandl116aa622007-08-15 14:28:22 +0000255
Antoine Pitroub7572f02009-12-02 20:46:48 +0000256.. function:: initgroups(username, gid)
257
258 Call the system initgroups() to initialize the group access list with all of
259 the groups of which the specified username is a member, plus the specified
Benjamin Petersonf650e462010-05-06 23:03:05 +0000260 group id.
261
262 Availability: Unix.
Antoine Pitroub7572f02009-12-02 20:46:48 +0000263
264 .. versionadded:: 3.2
265
266
Georg Brandl116aa622007-08-15 14:28:22 +0000267.. function:: getlogin()
268
269 Return the name of the user logged in on the controlling terminal of the
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000270 process. For most purposes, it is more useful to use the environment variables
271 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, or
Georg Brandl116aa622007-08-15 14:28:22 +0000272 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently
Benjamin Petersonf650e462010-05-06 23:03:05 +0000273 effective user id.
274
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000275 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000276
277
278.. function:: getpgid(pid)
279
280 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000281 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000282
Benjamin Petersonf650e462010-05-06 23:03:05 +0000283 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000284
285.. function:: getpgrp()
286
287 .. index:: single: process; group
288
Benjamin Petersonf650e462010-05-06 23:03:05 +0000289 Return the id of the current process group.
290
291 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000292
293
294.. function:: getpid()
295
296 .. index:: single: process; id
297
Benjamin Petersonf650e462010-05-06 23:03:05 +0000298 Return the current process id.
299
300 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000301
302
303.. function:: getppid()
304
305 .. index:: single: process; id of parent
306
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000307 Return the parent's process id. When the parent process has exited, on Unix
308 the id returned is the one of the init process (1), on Windows it is still
309 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000310
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000311 Availability: Unix, Windows
Georg Brandl116aa622007-08-15 14:28:22 +0000312
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000313 .. versionchanged:: 3.2
314 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000315
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000316.. function:: getpriority(which, who)
317
318 .. index:: single: process; scheduling priority
319
320 Get program scheduling priority. The value *which* is one of
321 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
322 is interpreted relative to *which* (a process identifier for
323 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
324 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
325 (respectively) the calling process, the process group of the calling process,
326 or the real user ID of the calling process.
327
328 Availability: Unix
329
330 .. versionadded:: 3.3
331
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000332.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000333
334 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000335 real, effective, and saved user ids.
336
337 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000338
Georg Brandl1b83a452009-11-28 11:12:26 +0000339 .. versionadded:: 3.2
340
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000341
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000342.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000343
344 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000345 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000346
347 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000348
Georg Brandl1b83a452009-11-28 11:12:26 +0000349 .. versionadded:: 3.2
350
Georg Brandl116aa622007-08-15 14:28:22 +0000351
352.. function:: getuid()
353
354 .. index:: single: user; id
355
Benjamin Petersonf650e462010-05-06 23:03:05 +0000356 Return the current process's user id.
357
358 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000359
360
Georg Brandl18244152009-09-02 20:34:52 +0000361.. function:: getenv(key, default=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000362
Georg Brandl18244152009-09-02 20:34:52 +0000363 Return the value of the environment variable *key* if it exists, or
Victor Stinner84ae1182010-05-06 22:05:07 +0000364 *default* if it doesn't. *key*, *default* and the result are str.
Victor Stinner84ae1182010-05-06 22:05:07 +0000365
366 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
367 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
368 would like to use a different encoding.
369
Benjamin Petersonf650e462010-05-06 23:03:05 +0000370 Availability: most flavors of Unix, Windows.
371
Victor Stinner84ae1182010-05-06 22:05:07 +0000372
373.. function:: getenvb(key, default=None)
374
375 Return the value of the environment variable *key* if it exists, or
376 *default* if it doesn't. *key*, *default* and the result are bytes.
Benjamin Peterson0d6fe512010-05-06 22:13:11 +0000377
Victor Stinner84ae1182010-05-06 22:05:07 +0000378 Availability: most flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000379
Benjamin Peterson0d6fe512010-05-06 22:13:11 +0000380 .. versionadded:: 3.2
381
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000382.. data:: PRIO_PROCESS
383 PRIO_PGRP
384 PRIO_USER
385
386 Parameters for :func:`getpriority` and :func:`setpriority` functions.
387
388 Availability: Unix.
389
390 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +0000391
Georg Brandl18244152009-09-02 20:34:52 +0000392.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000393
394 .. index:: single: environment variables; setting
395
Georg Brandl18244152009-09-02 20:34:52 +0000396 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000397 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000398 :func:`popen` or :func:`fork` and :func:`execv`.
399
400 Availability: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000401
402 .. note::
403
Georg Brandlc575c902008-09-13 17:46:05 +0000404 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
405 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000406
407 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
408 automatically translated into corresponding calls to :func:`putenv`; however,
409 calls to :func:`putenv` don't update ``os.environ``, so it is actually
410 preferable to assign to items of ``os.environ``.
411
412
413.. function:: setegid(egid)
414
Benjamin Petersonf650e462010-05-06 23:03:05 +0000415 Set the current process's effective group id.
416
417 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000418
419
420.. function:: seteuid(euid)
421
Benjamin Petersonf650e462010-05-06 23:03:05 +0000422 Set the current process's effective user id.
423
424 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000425
426
427.. function:: setgid(gid)
428
Benjamin Petersonf650e462010-05-06 23:03:05 +0000429 Set the current process' group id.
430
431 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000432
433
434.. function:: setgroups(groups)
435
436 Set the list of supplemental group ids associated with the current process to
437 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000438 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000439
Georg Brandl116aa622007-08-15 14:28:22 +0000440 Availability: Unix.
441
Ned Deily2e209682012-04-30 11:14:02 -0700442 .. note:: On Mac OS X, the length of *groups* may not exceed the
443 system-defined maximum number of effective group ids, typically 16.
444 See the documentation for :func:`getgroups` for cases where it may not
445 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000446
447.. function:: setpgrp()
448
Georg Brandl60203b42010-10-06 10:11:56 +0000449 Call the system call :c:func:`setpgrp` or :c:func:`setpgrp(0, 0)` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000450 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000451
Georg Brandl116aa622007-08-15 14:28:22 +0000452 Availability: Unix.
453
454
455.. function:: setpgid(pid, pgrp)
456
Georg Brandl60203b42010-10-06 10:11:56 +0000457 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000458 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000459 for the semantics.
460
461 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000462
463
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000464.. function:: setpriority(which, who, priority)
465
466 .. index:: single: process; scheduling priority
467
468 Set program scheduling priority. The value *which* is one of
469 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
470 is interpreted relative to *which* (a process identifier for
471 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
472 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
473 (respectively) the calling process, the process group of the calling process,
474 or the real user ID of the calling process.
475 *priority* is a value in the range -20 to 19. The default priority is 0;
476 lower priorities cause more favorable scheduling.
477
478 Availability: Unix
479
480 .. versionadded:: 3.3
481
482
Georg Brandl116aa622007-08-15 14:28:22 +0000483.. function:: setregid(rgid, egid)
484
Benjamin Petersonf650e462010-05-06 23:03:05 +0000485 Set the current process's real and effective group ids.
486
487 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000488
Georg Brandl1b83a452009-11-28 11:12:26 +0000489
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000490.. function:: setresgid(rgid, egid, sgid)
491
492 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000493
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000494 Availability: Unix.
495
Georg Brandl1b83a452009-11-28 11:12:26 +0000496 .. versionadded:: 3.2
497
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000498
499.. function:: setresuid(ruid, euid, suid)
500
501 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000502
Georg Brandl6faee4e2010-09-21 14:48:28 +0000503 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000504
Georg Brandl1b83a452009-11-28 11:12:26 +0000505 .. versionadded:: 3.2
506
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000507
508.. function:: setreuid(ruid, euid)
509
Benjamin Petersonf650e462010-05-06 23:03:05 +0000510 Set the current process's real and effective user ids.
511
512 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000513
Georg Brandl116aa622007-08-15 14:28:22 +0000514
515.. function:: getsid(pid)
516
Georg Brandl60203b42010-10-06 10:11:56 +0000517 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000518
Georg Brandl116aa622007-08-15 14:28:22 +0000519 Availability: Unix.
520
Georg Brandl116aa622007-08-15 14:28:22 +0000521
522.. function:: setsid()
523
Georg Brandl60203b42010-10-06 10:11:56 +0000524 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000525
Georg Brandl116aa622007-08-15 14:28:22 +0000526 Availability: Unix.
527
528
529.. function:: setuid(uid)
530
531 .. index:: single: user; id, setting
532
Benjamin Petersonf650e462010-05-06 23:03:05 +0000533 Set the current process's user id.
534
535 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000536
Georg Brandl116aa622007-08-15 14:28:22 +0000537
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000538.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000539.. function:: strerror(code)
540
541 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000542 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000543 error number, :exc:`ValueError` is raised.
544
545 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000546
547
Victor Stinnerb745a742010-05-18 17:17:23 +0000548.. data:: supports_bytes_environ
549
550 True if the native OS type of the environment is bytes (eg. False on
551 Windows).
552
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000553 .. versionadded:: 3.2
554
Victor Stinnerb745a742010-05-18 17:17:23 +0000555
Georg Brandl116aa622007-08-15 14:28:22 +0000556.. function:: umask(mask)
557
Benjamin Petersonf650e462010-05-06 23:03:05 +0000558 Set the current numeric umask and return the previous umask.
559
560 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562
563.. function:: uname()
564
565 .. index::
566 single: gethostname() (in module socket)
567 single: gethostbyaddr() (in module socket)
568
569 Return a 5-tuple containing information identifying the current operating
570 system. The tuple contains 5 strings: ``(sysname, nodename, release, version,
571 machine)``. Some systems truncate the nodename to 8 characters or to the
572 leading component; a better way to get the hostname is
573 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000574 ``socket.gethostbyaddr(socket.gethostname())``.
575
576 Availability: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
578
Georg Brandl18244152009-09-02 20:34:52 +0000579.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000580
581 .. index:: single: environment variables; deleting
582
Georg Brandl18244152009-09-02 20:34:52 +0000583 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000584 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000585 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000586
587 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
588 automatically translated into a corresponding call to :func:`unsetenv`; however,
589 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
590 preferable to delete items of ``os.environ``.
591
Benjamin Petersonf650e462010-05-06 23:03:05 +0000592 Availability: most flavors of Unix, Windows.
593
Georg Brandl116aa622007-08-15 14:28:22 +0000594
595.. _os-newstreams:
596
597File Object Creation
598--------------------
599
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000600These functions create new :term:`file objects <file object>`. (See also :func:`open`.)
Georg Brandl116aa622007-08-15 14:28:22 +0000601
602
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300603.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000604
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300605 Return an open file object connected to the file descriptor *fd*.
606 This is an alias of :func:`open` and accepts the same arguments.
607 The only difference is that the first argument of :func:`fdopen`
608 must always be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000609
Georg Brandl116aa622007-08-15 14:28:22 +0000610
Georg Brandl116aa622007-08-15 14:28:22 +0000611.. _os-fd-ops:
612
613File Descriptor Operations
614--------------------------
615
616These functions operate on I/O streams referenced using file descriptors.
617
618File descriptors are small integers corresponding to a file that has been opened
619by the current process. For example, standard input is usually file descriptor
6200, standard output is 1, and standard error is 2. Further files opened by a
621process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
622is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
623by file descriptors.
624
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000625The :meth:`~file.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000626associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000627descriptor directly will bypass the file object methods, ignoring aspects such
628as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000629
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000630
Georg Brandl116aa622007-08-15 14:28:22 +0000631.. function:: close(fd)
632
Benjamin Petersonf650e462010-05-06 23:03:05 +0000633 Close file descriptor *fd*.
634
635 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000636
637 .. note::
638
639 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000640 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000641 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000642 :func:`fdopen`, use its :meth:`~file.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000643
644
Christian Heimesfdab48e2008-01-20 09:06:41 +0000645.. function:: closerange(fd_low, fd_high)
646
647 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Benjamin Petersonf650e462010-05-06 23:03:05 +0000648 ignoring errors. Equivalent to::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000649
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000650 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000651 try:
652 os.close(fd)
653 except OSError:
654 pass
655
Benjamin Petersonf650e462010-05-06 23:03:05 +0000656 Availability: Unix, Windows.
657
Christian Heimesfdab48e2008-01-20 09:06:41 +0000658
Georg Brandl81f11302007-12-21 08:45:42 +0000659.. function:: device_encoding(fd)
660
661 Return a string describing the encoding of the device associated with *fd*
662 if it is connected to a terminal; else return :const:`None`.
663
664
Georg Brandl116aa622007-08-15 14:28:22 +0000665.. function:: dup(fd)
666
Benjamin Petersonf650e462010-05-06 23:03:05 +0000667 Return a duplicate of file descriptor *fd*.
668
669 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000670
671
672.. function:: dup2(fd, fd2)
673
674 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000675
Georg Brandlc575c902008-09-13 17:46:05 +0000676 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000677
678
Christian Heimes4e30a842007-11-30 22:12:06 +0000679.. function:: fchmod(fd, mode)
680
681 Change the mode of the file given by *fd* to the numeric *mode*. See the docs
Benjamin Petersonf650e462010-05-06 23:03:05 +0000682 for :func:`chmod` for possible values of *mode*.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700683 Equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000684
685 Availability: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000686
687
688.. function:: fchown(fd, uid, gid)
689
690 Change the owner and group id of the file given by *fd* to the numeric *uid*
Larry Hastings9cf065c2012-06-22 16:30:09 -0700691 and *gid*. To leave one of the ids unchanged, set it to -1. Equivalent
692 to ``os.chown(fd, uid, gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000693
Christian Heimes4e30a842007-11-30 22:12:06 +0000694 Availability: Unix.
695
696
Georg Brandl116aa622007-08-15 14:28:22 +0000697.. function:: fdatasync(fd)
698
699 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000700 metadata.
701
702 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000703
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000704 .. note::
705 This function is not available on MacOS.
706
Georg Brandl116aa622007-08-15 14:28:22 +0000707
708.. function:: fpathconf(fd, name)
709
710 Return system configuration information relevant to an open file. *name*
711 specifies the configuration value to retrieve; it may be a string which is the
712 name of a defined system value; these names are specified in a number of
713 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
714 additional names as well. The names known to the host operating system are
715 given in the ``pathconf_names`` dictionary. For configuration variables not
716 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000717
718 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
719 specific value for *name* is not supported by the host system, even if it is
720 included in ``pathconf_names``, an :exc:`OSError` is raised with
721 :const:`errno.EINVAL` for the error number.
722
Benjamin Petersonf650e462010-05-06 23:03:05 +0000723 Availability: Unix.
724
Georg Brandl116aa622007-08-15 14:28:22 +0000725
Victor Stinner4195b5c2012-02-08 23:03:19 +0100726.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000727
R. David Murray7b1aae92011-01-24 19:34:58 +0000728 Return status for file descriptor *fd*, like :func:`~os.stat`.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000729
730 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000731
Georg Brandl116aa622007-08-15 14:28:22 +0000732.. function:: fstatvfs(fd)
733
734 Return information about the filesystem containing the file associated with file
Benjamin Petersonf650e462010-05-06 23:03:05 +0000735 descriptor *fd*, like :func:`statvfs`.
736
737 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000738
739
740.. function:: fsync(fd)
741
742 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000743 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000744
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000745 If you're starting with a buffered Python :term:`file object` *f*, first do
746 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
747 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000748
749 Availability: Unix, and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000750
751
752.. function:: ftruncate(fd, length)
753
754 Truncate the file corresponding to file descriptor *fd*, so that it is at most
Benjamin Petersonf650e462010-05-06 23:03:05 +0000755 *length* bytes in size.
756
757 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000758
759
760.. function:: isatty(fd)
761
762 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000763 tty(-like) device, else ``False``.
764
765 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000766
767
Ross Lagerwall7807c352011-03-17 20:20:30 +0200768.. function:: lockf(fd, cmd, len)
769
770 Apply, test or remove a POSIX lock on an open file descriptor.
771 *fd* is an open file descriptor.
772 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
773 :data:`F_ULOCK` or :data:`F_TEST`.
774 *len* specifies the section of the file to lock.
775
776 Availability: Unix.
777
778 .. versionadded:: 3.3
779
780
781.. data:: F_LOCK
782 F_TLOCK
783 F_ULOCK
784 F_TEST
785
786 Flags that specify what action :func:`lockf` will take.
787
788 Availability: Unix.
789
790 .. versionadded:: 3.3
791
Georg Brandl116aa622007-08-15 14:28:22 +0000792.. function:: lseek(fd, pos, how)
793
Christian Heimesfaf2f632008-01-06 16:59:19 +0000794 Set the current position of file descriptor *fd* to position *pos*, modified
795 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
796 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
797 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100798 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000799
800 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000801
802
Georg Brandl8569e582010-05-19 20:57:08 +0000803.. data:: SEEK_SET
804 SEEK_CUR
805 SEEK_END
806
807 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
808 respectively. Availability: Windows, Unix.
809
Jesus Cea94363612012-06-22 18:32:07 +0200810 .. versionadded:: 3.3
811 Some operating systems could support additional values, like
812 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
813
Georg Brandl8569e582010-05-19 20:57:08 +0000814
Larry Hastings9cf065c2012-06-22 16:30:09 -0700815.. function:: open(file, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000816
Georg Brandlf4a41232008-05-26 17:55:52 +0000817 Open the file *file* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700818 its mode according to *mode*. When computing *mode*, the current umask value
819 is first masked out. Return the file descriptor for the newly opened file.
Georg Brandl116aa622007-08-15 14:28:22 +0000820
821 For a description of the flag and mode values, see the C run-time documentation;
822 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Georg Brandl8569e582010-05-19 20:57:08 +0000823 this module too (see :ref:`open-constants`). In particular, on Windows adding
824 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000825
Larry Hastings9cf065c2012-06-22 16:30:09 -0700826 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
827 directory, and *path* should be relative; path will then be relative to
828 that directory. (If *path* is absolute, *dir_fd* is ignored.)
829 *dir_fd* may not be supported on your platform;
830 you can check whether or not it is available using
831 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
832 a :exc:`NotImplementedError`.
833
Benjamin Petersonf650e462010-05-06 23:03:05 +0000834 Availability: Unix, Windows.
835
Georg Brandl116aa622007-08-15 14:28:22 +0000836 .. note::
837
Georg Brandl502d9a52009-07-26 15:02:41 +0000838 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000839 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bc2010-07-13 14:47:01 +0000840 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000841 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000842
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000843 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700844 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000845
846
Georg Brandl116aa622007-08-15 14:28:22 +0000847.. function:: openpty()
848
849 .. index:: module: pty
850
851 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
852 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Benjamin Petersonf650e462010-05-06 23:03:05 +0000853 approach, use the :mod:`pty` module.
854
855 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000856
857
858.. function:: pipe()
859
860 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Benjamin Petersonf650e462010-05-06 23:03:05 +0000861 and writing, respectively.
862
863 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000864
865
Charles-François Natali368f34b2011-06-06 19:49:47 +0200866.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200867
868 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +0200869 *flags* can be constructed by ORing together one or more of these values:
870 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200871 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
872 respectively.
873
874 Availability: some flavors of Unix.
875
876 .. versionadded:: 3.3
877
878
Ross Lagerwall7807c352011-03-17 20:20:30 +0200879.. function:: posix_fallocate(fd, offset, len)
880
881 Ensures that enough disk space is allocated for the file specified by *fd*
882 starting from *offset* and continuing for *len* bytes.
883
884 Availability: Unix.
885
886 .. versionadded:: 3.3
887
888
889.. function:: posix_fadvise(fd, offset, len, advice)
890
891 Announces an intention to access data in a specific pattern thus allowing
892 the kernel to make optimizations.
893 The advice applies to the region of the file specified by *fd* starting at
894 *offset* and continuing for *len* bytes.
895 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
896 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
897 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
898
899 Availability: Unix.
900
901 .. versionadded:: 3.3
902
903
904.. data:: POSIX_FADV_NORMAL
905 POSIX_FADV_SEQUENTIAL
906 POSIX_FADV_RANDOM
907 POSIX_FADV_NOREUSE
908 POSIX_FADV_WILLNEED
909 POSIX_FADV_DONTNEED
910
911 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
912 the access pattern that is likely to be used.
913
914 Availability: Unix.
915
916 .. versionadded:: 3.3
917
918
919.. function:: pread(fd, buffersize, offset)
920
921 Read from a file descriptor, *fd*, at a position of *offset*. It will read up
922 to *buffersize* number of bytes. The file offset remains unchanged.
923
924 Availability: Unix.
925
926 .. versionadded:: 3.3
927
928
929.. function:: pwrite(fd, string, offset)
930
931 Write *string* to a file descriptor, *fd*, from *offset*, leaving the file
932 offset unchanged.
933
934 Availability: Unix.
935
936 .. versionadded:: 3.3
937
938
Georg Brandl116aa622007-08-15 14:28:22 +0000939.. function:: read(fd, n)
940
Georg Brandlb90be692009-07-29 16:14:16 +0000941 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +0000942 bytes read. If the end of the file referred to by *fd* has been reached, an
Benjamin Petersonf650e462010-05-06 23:03:05 +0000943 empty bytes object is returned.
944
945 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000946
947 .. note::
948
949 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000950 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a "file object"
Georg Brandl116aa622007-08-15 14:28:22 +0000951 returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000952 :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
953 :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000954
955
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000956.. function:: sendfile(out, in, offset, nbytes)
957 sendfile(out, in, offset, nbytes, headers=None, trailers=None, flags=0)
958
959 Copy *nbytes* bytes from file descriptor *in* to file descriptor *out*
960 starting at *offset*.
961 Return the number of bytes sent. When EOF is reached return 0.
962
963 The first function notation is supported by all platforms that define
964 :func:`sendfile`.
965
966 On Linux, if *offset* is given as ``None``, the bytes are read from the
967 current position of *in* and the position of *in* is updated.
968
969 The second case may be used on Mac OS X and FreeBSD where *headers* and
970 *trailers* are arbitrary sequences of buffers that are written before and
971 after the data from *in* is written. It returns the same as the first case.
972
973 On Mac OS X and FreeBSD, a value of 0 for *nbytes* specifies to send until
974 the end of *in* is reached.
975
976 On Solaris, *out* may be the file descriptor of a regular file or the file
977 descriptor of a socket. On all other platforms, *out* must be the file
978 descriptor of an open socket.
979
980 Availability: Unix.
981
982 .. versionadded:: 3.3
983
984
985.. data:: SF_NODISKIO
986 SF_MNOWAIT
987 SF_SYNC
988
989 Parameters to the :func:`sendfile` function, if the implementation supports
990 them.
991
992 Availability: Unix.
993
994 .. versionadded:: 3.3
995
996
Ross Lagerwall7807c352011-03-17 20:20:30 +0200997.. function:: readv(fd, buffers)
998
999 Read from a file descriptor into a number of writable buffers. *buffers* is
1000 an arbitrary sequence of writable buffers. Returns the total number of bytes
1001 read.
1002
1003 Availability: Unix.
1004
1005 .. versionadded:: 3.3
1006
1007
Georg Brandl116aa622007-08-15 14:28:22 +00001008.. function:: tcgetpgrp(fd)
1009
1010 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001011 file descriptor as returned by :func:`os.open`).
1012
1013 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001014
1015
1016.. function:: tcsetpgrp(fd, pg)
1017
1018 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001019 descriptor as returned by :func:`os.open`) to *pg*.
1020
1021 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001022
1023
1024.. function:: ttyname(fd)
1025
1026 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001027 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001028 exception is raised.
1029
1030 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001031
1032
1033.. function:: write(fd, str)
1034
Georg Brandlb90be692009-07-29 16:14:16 +00001035 Write the bytestring in *str* to file descriptor *fd*. Return the number of
Benjamin Petersonf650e462010-05-06 23:03:05 +00001036 bytes actually written.
1037
1038 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001039
1040 .. note::
1041
1042 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001043 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001044 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001045 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1046 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001047
Georg Brandl8569e582010-05-19 20:57:08 +00001048
Ross Lagerwall7807c352011-03-17 20:20:30 +02001049.. function:: writev(fd, buffers)
1050
Ezio Melottif1064492011-10-19 11:06:26 +03001051 Write the contents of *buffers* to file descriptor *fd*, where *buffers*
Ross Lagerwall7807c352011-03-17 20:20:30 +02001052 is an arbitrary sequence of buffers.
1053 Returns the total number of bytes written.
1054
1055 Availability: Unix.
1056
1057 .. versionadded:: 3.3
1058
1059
Georg Brandl8569e582010-05-19 20:57:08 +00001060.. _open-constants:
1061
1062``open()`` flag constants
1063~~~~~~~~~~~~~~~~~~~~~~~~~
1064
Georg Brandlaf265f42008-12-07 15:06:20 +00001065The following constants are options for the *flags* parameter to the
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001066:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandlaf265f42008-12-07 15:06:20 +00001067``|``. Some of them are not available on all platforms. For descriptions of
1068their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmanneb097fc2009-09-20 20:56:56 +00001069or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001070
1071
1072.. data:: O_RDONLY
1073 O_WRONLY
1074 O_RDWR
1075 O_APPEND
1076 O_CREAT
1077 O_EXCL
1078 O_TRUNC
1079
Georg Brandlaf265f42008-12-07 15:06:20 +00001080 These constants are available on Unix and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001081
1082
1083.. data:: O_DSYNC
1084 O_RSYNC
1085 O_SYNC
1086 O_NDELAY
1087 O_NONBLOCK
1088 O_NOCTTY
1089 O_SHLOCK
1090 O_EXLOCK
Charles-François Natali1e045b12011-05-22 20:42:32 +02001091 O_CLOEXEC
Georg Brandl116aa622007-08-15 14:28:22 +00001092
Georg Brandlaf265f42008-12-07 15:06:20 +00001093 These constants are only available on Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001094
Victor Stinnere3455c02011-10-20 00:46:21 +02001095 .. versionchanged:: 3.3
1096 Add :data:`O_CLOEXEC` constant.
Georg Brandl116aa622007-08-15 14:28:22 +00001097
1098.. data:: O_BINARY
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001099 O_NOINHERIT
Georg Brandl116aa622007-08-15 14:28:22 +00001100 O_SHORT_LIVED
1101 O_TEMPORARY
1102 O_RANDOM
1103 O_SEQUENTIAL
1104 O_TEXT
1105
Georg Brandlaf265f42008-12-07 15:06:20 +00001106 These constants are only available on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001107
1108
Alexandre Vassalottibee32532008-05-16 18:15:12 +00001109.. data:: O_ASYNC
1110 O_DIRECT
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001111 O_DIRECTORY
1112 O_NOFOLLOW
1113 O_NOATIME
1114
Georg Brandlaf265f42008-12-07 15:06:20 +00001115 These constants are GNU extensions and not present if they are not defined by
1116 the C library.
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001117
1118
Victor Stinner8b905bd2011-10-25 13:34:04 +02001119.. data:: RTLD_LAZY
1120 RTLD_NOW
1121 RTLD_GLOBAL
1122 RTLD_LOCAL
1123 RTLD_NODELETE
1124 RTLD_NOLOAD
1125 RTLD_DEEPBIND
1126
1127 See the Unix manual page :manpage:`dlopen(3)`.
1128
1129 .. versionadded:: 3.3
1130
1131
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001132.. _terminal-size:
1133
1134Querying the size of a terminal
1135~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1136
1137.. versionadded:: 3.3
1138
1139.. function:: get_terminal_size(fd=STDOUT_FILENO)
1140
1141 Return the size of the terminal window as ``(columns, lines)``,
1142 tuple of type :class:`terminal_size`.
1143
1144 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1145 output) specifies which file descriptor should be queried.
1146
1147 If the file descriptor is not connected to a terminal, an :exc:`OSError`
1148 is thrown.
1149
1150 :func:`shutil.get_terminal_size` is the high-level function which
1151 should normally be used, ``os.get_terminal_size`` is the low-level
1152 implementation.
1153
1154 Availability: Unix, Windows.
1155
1156.. class:: terminal_size(tuple)
1157
1158 A tuple of ``(columns, lines)`` for holding terminal window size.
1159
1160 .. attribute:: columns
1161
1162 Width of the terminal window in characters.
1163
1164 .. attribute:: lines
1165
1166 Height of the terminal window in characters.
1167
1168
Georg Brandl116aa622007-08-15 14:28:22 +00001169.. _os-file-dir:
1170
1171Files and Directories
1172---------------------
1173
Larry Hastings9cf065c2012-06-22 16:30:09 -07001174.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001175
1176 Use the real uid/gid to test for access to *path*. Note that most operations
1177 will use the effective uid/gid, therefore this routine can be used in a
1178 suid/sgid environment to test if the invoking user has the specified access to
1179 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1180 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1181 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1182 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001183 information.
1184
Larry Hastings9cf065c2012-06-22 16:30:09 -07001185 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1186 directory, and *path* should be relative; path will then be relative to
1187 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1188 *dir_fd* may not be supported on your platform;
1189 you can check whether or not it is available using
1190 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1191 a :exc:`NotImplementedError`.
1192
1193 If *effective_ids* is ``True``, :func:`access` will perform its access
1194 checks using the effective uid/gid instead of the real uid/gid.
1195 *effective_ids* may not be supported on your platform; you can check whether
1196 or not it is available using :data:`os.supports_effective_ids`. If it is
1197 unavailable, using it will raise a :exc:`NotImplementedError`.
1198
1199 If *follow_symlinks* is ``False``, and the last element of the path is a
1200 symbolic link, :func:`access` will examine the symbolic link itself instead
1201 of the file the link points to. *follow_symlinks* may not be supported
1202 on your platform; you can check whether or not it is available using
1203 :data:`os.supports_follow_symlinks`. If it is unavailable,
1204 using it will raise a :exc:`NotImplementedError`.
1205
Benjamin Petersonf650e462010-05-06 23:03:05 +00001206 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001207
1208 .. note::
1209
Georg Brandl502d9a52009-07-26 15:02:41 +00001210 Using :func:`access` to check if a user is authorized to e.g. open a file
1211 before actually doing so using :func:`open` creates a security hole,
1212 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001213 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1214 techniques. For example::
1215
1216 if os.access("myfile", os.R_OK):
1217 with open("myfile") as fp:
1218 return fp.read()
1219 return "some default data"
1220
1221 is better written as::
1222
1223 try:
1224 fp = open("myfile")
Antoine Pitrou62ab10a2011-10-12 20:10:51 +02001225 except PermissionError:
1226 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001227 else:
1228 with fp:
1229 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001230
1231 .. note::
1232
1233 I/O operations may fail even when :func:`access` indicates that they would
1234 succeed, particularly for operations on network filesystems which may have
1235 permissions semantics beyond the usual POSIX permission-bit model.
1236
Larry Hastings9cf065c2012-06-22 16:30:09 -07001237 .. versionchanged:: 3.3
1238 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1239
Georg Brandl116aa622007-08-15 14:28:22 +00001240
1241.. data:: F_OK
1242
1243 Value to pass as the *mode* parameter of :func:`access` to test the existence of
1244 *path*.
1245
1246
1247.. data:: R_OK
1248
1249 Value to include in the *mode* parameter of :func:`access` to test the
1250 readability of *path*.
1251
1252
1253.. data:: W_OK
1254
1255 Value to include in the *mode* parameter of :func:`access` to test the
1256 writability of *path*.
1257
1258
1259.. data:: X_OK
1260
1261 Value to include in the *mode* parameter of :func:`access` to determine if
1262 *path* can be executed.
1263
1264
1265.. function:: chdir(path)
1266
1267 .. index:: single: directory; changing
1268
Benjamin Petersonf650e462010-05-06 23:03:05 +00001269 Change the current working directory to *path*.
1270
Larry Hastings9cf065c2012-06-22 16:30:09 -07001271 On some platforms, *path* may also be specified as an open file descriptor.
1272 This functionality may not be supported on your platform; you can check
1273 whether or not it is available using :data:`os.supports_fd`. If it is
1274 unavailable, using it will raise a :exc:`NotImplementedError`.
1275
Benjamin Petersonf650e462010-05-06 23:03:05 +00001276 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001277
Larry Hastings9cf065c2012-06-22 16:30:09 -07001278 .. versionadded:: 3.3
1279 Added support for specifying *path* as a file descriptor
1280 on some platforms, and the *dir_fd*, *effective_ids*, and
1281 *follow_symlinks* parameters.
1282
Georg Brandl116aa622007-08-15 14:28:22 +00001283
1284.. function:: fchdir(fd)
1285
1286 Change the current working directory to the directory represented by the file
1287 descriptor *fd*. The descriptor must refer to an opened directory, not an open
Larry Hastings9cf065c2012-06-22 16:30:09 -07001288 file. Equivalent to ``os.chdir(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001289
1290 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001291
Georg Brandl116aa622007-08-15 14:28:22 +00001292
1293.. function:: getcwd()
1294
Martin v. Löwis011e8422009-05-05 04:43:17 +00001295 Return a string representing the current working directory.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001296
Martin v. Löwis011e8422009-05-05 04:43:17 +00001297 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001298
Benjamin Petersonf650e462010-05-06 23:03:05 +00001299
Martin v. Löwisa731b992008-10-07 06:36:31 +00001300.. function:: getcwdb()
Georg Brandl116aa622007-08-15 14:28:22 +00001301
Georg Brandl76e55382008-10-08 16:34:57 +00001302 Return a bytestring representing the current working directory.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001303
Georg Brandlc575c902008-09-13 17:46:05 +00001304 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001305
Georg Brandl116aa622007-08-15 14:28:22 +00001306
Larry Hastings9cf065c2012-06-22 16:30:09 -07001307.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001308
1309 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1310 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1311
R David Murray30178062011-03-10 17:18:33 -05001312 * :data:`stat.UF_NODUMP`
1313 * :data:`stat.UF_IMMUTABLE`
1314 * :data:`stat.UF_APPEND`
1315 * :data:`stat.UF_OPAQUE`
1316 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001317 * :data:`stat.UF_COMPRESSED`
1318 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001319 * :data:`stat.SF_ARCHIVED`
1320 * :data:`stat.SF_IMMUTABLE`
1321 * :data:`stat.SF_APPEND`
1322 * :data:`stat.SF_NOUNLINK`
1323 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001324
Larry Hastings9cf065c2012-06-22 16:30:09 -07001325 If *follow_symlinks* is ``False``, and the last element of the path is a
1326 symbolic link, :func:`follow_symlinks` will examine the symbolic link itself
1327 instead of the file the link points to. *follow_symlinks* may not be
1328 supported on your platform; you can check whether or not it is available
1329 using :data:`os.supports_follow_symlinks`. If it is unavailable,
1330 using it will raise a :exc:`NotImplementedError`.
1331
Georg Brandlc575c902008-09-13 17:46:05 +00001332 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001333
Larry Hastings9cf065c2012-06-22 16:30:09 -07001334 .. versionadded:: 3.3
1335 The *follow_symlinks* argument.
1336
Georg Brandl116aa622007-08-15 14:28:22 +00001337
1338.. function:: chroot(path)
1339
1340 Change the root directory of the current process to *path*. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001341 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001342
Georg Brandl116aa622007-08-15 14:28:22 +00001343
Larry Hastings9cf065c2012-06-22 16:30:09 -07001344.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001345
1346 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001347 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001348 combinations of them:
1349
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001350 * :data:`stat.S_ISUID`
1351 * :data:`stat.S_ISGID`
1352 * :data:`stat.S_ENFMT`
1353 * :data:`stat.S_ISVTX`
1354 * :data:`stat.S_IREAD`
1355 * :data:`stat.S_IWRITE`
1356 * :data:`stat.S_IEXEC`
1357 * :data:`stat.S_IRWXU`
1358 * :data:`stat.S_IRUSR`
1359 * :data:`stat.S_IWUSR`
1360 * :data:`stat.S_IXUSR`
1361 * :data:`stat.S_IRWXG`
1362 * :data:`stat.S_IRGRP`
1363 * :data:`stat.S_IWGRP`
1364 * :data:`stat.S_IXGRP`
1365 * :data:`stat.S_IRWXO`
1366 * :data:`stat.S_IROTH`
1367 * :data:`stat.S_IWOTH`
1368 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001369
Larry Hastings9cf065c2012-06-22 16:30:09 -07001370 On some platforms, *path* may also be specified as an open file descriptor.
1371 This functionality may not be supported on your platform; you can check
1372 whether or not it is available using :data:`os.supports_fd`. If it is
1373 unavailable, using it will raise a :exc:`NotImplementedError`.
1374
1375 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1376 directory, and *path* should be relative; path will then be relative to
1377 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1378 *dir_fd* may not be supported on your platform;
1379 you can check whether or not it is available using
1380 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1381 a :exc:`NotImplementedError`.
1382
1383 If *follow_symlinks* is ``False``, and the last element of the path is a
1384 symbolic link, :func:`chmod` will examine the symbolic link itself instead
1385 of the file the link points to. *follow_symlinks* may not be supported
1386 on your platform; you can check whether or not it is available using
1387 :data:`os.supports_follow_symlinks`. If it is unavailable,
1388 using it will raise a :exc:`NotImplementedError`.
1389
1390 It is an error to use *dir_fd* or *follow_symlinks* when specifying
1391 *path* as an open file descriptor.
1392
Georg Brandlc575c902008-09-13 17:46:05 +00001393 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
1395 .. note::
1396
1397 Although Windows supports :func:`chmod`, you can only set the file's read-only
1398 flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1399 constants or a corresponding integer value). All other bits are
1400 ignored.
1401
Larry Hastings9cf065c2012-06-22 16:30:09 -07001402 .. versionadded:: 3.3
1403 Added support for specifying *path* as an open file descriptor,
1404 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001405
Larry Hastings9cf065c2012-06-22 16:30:09 -07001406
1407.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001408
1409 Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave
Benjamin Petersonf650e462010-05-06 23:03:05 +00001410 one of the ids unchanged, set it to -1.
1411
Larry Hastings9cf065c2012-06-22 16:30:09 -07001412 On some platforms, *path* may also be specified as an open file descriptor.
1413 This functionality may not be supported on your platform; you can check
1414 whether or not it is available using :data:`os.supports_fd`. If it is
1415 unavailable, using it will raise a :exc:`NotImplementedError`.
1416
1417 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1418 directory, and *path* should be relative; path will then be relative to
1419 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1420 *dir_fd* may not be supported on your platform;
1421 you can check whether or not it is available using
1422 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1423 a :exc:`NotImplementedError`.
1424
1425 If *follow_symlinks* is ``False``, and the last element of the path is a
1426 symbolic link, :func:`chown` will examine the symbolic link itself instead
1427 of the file the link points to. *follow_symlinks* may not be supported
1428 on your platform; you can check whether or not it is available using
1429 :data:`os.supports_follow_symlinks`. If it is unavailable,
1430 using it will raise a :exc:`NotImplementedError`.
1431
1432 It is an error to use *dir_fd* or *follow_symlinks* when specifying
1433 *path* as an open file descriptor.
1434
Sandro Tosid902a142011-08-22 23:28:27 +02001435 See :func:`shutil.chown` for a higher-level function that accepts names in
1436 addition to numeric ids.
1437
Benjamin Petersonf650e462010-05-06 23:03:05 +00001438 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001439
Larry Hastings9cf065c2012-06-22 16:30:09 -07001440 .. versionadded:: 3.3
1441 Added support for specifying an open file descriptor for *path*,
1442 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001443
Benjamin Peterson799bd802011-08-31 22:15:17 -04001444
Larry Hastings9cf065c2012-06-22 16:30:09 -07001445.. function:: getxattr(path, attribute, *, follow_symlinks=True)
1446
1447 Return the value of the extended filesystem attribute *attribute* for
1448 *path*. *attribute* can be bytes or str. If it is str, it is encoded
1449 with the filesystem encoding.
1450
1451 *path* may be specified as either a string or an open file descriptor.
1452
1453 If *follow_symlinks* is ``False``, and the last element of the path is a
1454 symbolic link, :func:`setxattr` will examine the symbolic link itself
1455 instead of the file the link points to. It is an error to use
1456 *follow_symlinks* when specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001457
1458 Availability: Linux
1459
1460 .. versionadded:: 3.3
1461
1462
Georg Brandl116aa622007-08-15 14:28:22 +00001463.. function:: lchflags(path, flags)
1464
1465 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do not
Benjamin Petersonf650e462010-05-06 23:03:05 +00001466 follow symbolic links.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001467 Equivalent to ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001468
1469 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001470
Georg Brandl116aa622007-08-15 14:28:22 +00001471
Christian Heimes93852662007-12-01 12:22:32 +00001472.. function:: lchmod(path, mode)
1473
1474 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
1475 affects the symlink rather than the target. See the docs for :func:`chmod`
Benjamin Petersonf650e462010-05-06 23:03:05 +00001476 for possible values of *mode*.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001477 Equivalent to ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001478
1479 Availability: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001480
Christian Heimes93852662007-12-01 12:22:32 +00001481
Georg Brandl116aa622007-08-15 14:28:22 +00001482.. function:: lchown(path, uid, gid)
1483
Christian Heimesfaf2f632008-01-06 16:59:19 +00001484 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Benjamin Petersonf650e462010-05-06 23:03:05 +00001485 function will not follow symbolic links.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001486 Equivalent to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001487
1488 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001489
Georg Brandl116aa622007-08-15 14:28:22 +00001490
Larry Hastings9cf065c2012-06-22 16:30:09 -07001491.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001492
Larry Hastings9cf065c2012-06-22 16:30:09 -07001493 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001494
Larry Hastings9cf065c2012-06-22 16:30:09 -07001495 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1496 file descriptor referring to a directory, and the corresponding path
1497 (*src* or *dst*) should be relative; that path will then be relative to
1498 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1499 goes for *dst* and *dst_dir_fd*.)
1500 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1501 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1502 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001503
Larry Hastings9cf065c2012-06-22 16:30:09 -07001504 If *follow_symlinks* is ``False``, and the last element of *src* is a
1505 symbolic link, :func:`link` will use the symbolic link itself instead
1506 of the file the link points to. *follow_symlinks* may not be supported
1507 on your platform; you can check whether or not it is available using
1508 :data:`os.supports_follow_symlinks`. If it is unavailable,
1509 using it will raise a :exc:`NotImplementedError`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001510
Brian Curtin1b9df392010-11-24 20:24:31 +00001511 Availability: Unix, Windows.
1512
1513 .. versionchanged:: 3.2
1514 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001515
Larry Hastings9cf065c2012-06-22 16:30:09 -07001516 .. versionadded:: 3.3
1517 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1518
Georg Brandl116aa622007-08-15 14:28:22 +00001519
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001520.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001521
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001522 Return a list containing the names of the entries in the directory given by
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001523 *path* (default: ``'.'``). The list is in arbitrary order. It does not include the special
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001524 entries ``'.'`` and ``'..'`` even if they are present in the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001525
Martin v. Löwis011e8422009-05-05 04:43:17 +00001526 This function can be called with a bytes or string argument, and returns
1527 filenames of the same datatype.
Georg Brandl116aa622007-08-15 14:28:22 +00001528
Larry Hastings9cf065c2012-06-22 16:30:09 -07001529 On some platforms, *path* may also be specified as an open file descriptor.
1530 This functionality may not be supported on your platform; you can check
1531 whether or not it is available using :data:`os.supports_fd`. If it is
1532 unavailable, using it will raise a :exc:`NotImplementedError`.
1533
Benjamin Petersonf650e462010-05-06 23:03:05 +00001534 Availability: Unix, Windows.
1535
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001536 .. versionchanged:: 3.2
1537 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001538
Larry Hastings9cf065c2012-06-22 16:30:09 -07001539 .. versionadded:: 3.3
1540 Added support for specifying an open file descriptor for *path*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001541
Larry Hastings9cf065c2012-06-22 16:30:09 -07001542.. function:: listxattr(path=None, *, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001543
Larry Hastings9cf065c2012-06-22 16:30:09 -07001544 Return a list of the extended filesystem attributes on *path*.
1545 The attributes in the list are represented as strings decoded
1546 with the filesystem encoding.
1547
1548 *path* may be specified as either ``None``, a string, or an open file
1549 descriptor. If *path* is ``None``, :func:`listxattr` will examine the
1550 current directory.
1551
1552 If *follow_symlinks* is ``False``, and the last element of the path is a
1553 symbolic link, :func:`listxattr` will examine the symbolic link itself
1554 instead of the file the link points to. It is an error to use
1555 *follow_symlinks* when specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001556
1557 Availability: Linux
1558
1559 .. versionadded:: 3.3
1560
1561
Larry Hastings9cf065c2012-06-22 16:30:09 -07001562.. function:: lstat(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001563
R. David Murray7b1aae92011-01-24 19:34:58 +00001564 Perform the equivalent of an :c:func:`lstat` system call on the given path.
1565 Similar to :func:`~os.stat`, but does not follow symbolic links. On
1566 platforms that do not support symbolic links, this is an alias for
Larry Hastings9cf065c2012-06-22 16:30:09 -07001567 :func:`~os.stat`. (Equivalent to ``os.stat(path, follow_symlinks=False)``.)
1568
1569 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1570 directory, and *path* should be relative; path will then be relative to
1571 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1572 *dir_fd* may not be supported on your platform;
1573 you can check whether or not it is available using
1574 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1575 a :exc:`NotImplementedError`.
Brian Curtinc7395692010-07-09 15:15:09 +00001576
Georg Brandlb3823372010-07-10 08:58:37 +00001577 .. versionchanged:: 3.2
1578 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001579
Larry Hastings9cf065c2012-06-22 16:30:09 -07001580 .. versionchanged:: 3.3
1581 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001582
1583
Larry Hastings9cf065c2012-06-22 16:30:09 -07001584.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001585
Larry Hastings9cf065c2012-06-22 16:30:09 -07001586 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1587 The current umask value is first masked out from the mode.
1588
1589 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1590 directory, and *path* should be relative; path will then be relative to
1591 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1592 *dir_fd* may not be supported on your platform;
1593 you can check whether or not it is available using
1594 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1595 a :exc:`NotImplementedError`.
Georg Brandl116aa622007-08-15 14:28:22 +00001596
1597 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1598 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1599 rendezvous between "client" and "server" type processes: the server opens the
1600 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1601 doesn't open the FIFO --- it just creates the rendezvous point.
1602
Benjamin Petersonf650e462010-05-06 23:03:05 +00001603 Availability: Unix.
1604
Larry Hastings9cf065c2012-06-22 16:30:09 -07001605 .. versionadded:: 3.3
1606 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001607
Larry Hastings9cf065c2012-06-22 16:30:09 -07001608
1609.. function:: mknod(filename, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001610
1611 Create a filesystem node (file, device special file or named pipe) named
Georg Brandl18244152009-09-02 20:34:52 +00001612 *filename*. *mode* specifies both the permissions to use and the type of node
1613 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1614 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1615 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
1616 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00001617 :func:`os.makedev`), otherwise it is ignored.
1618
Larry Hastings9cf065c2012-06-22 16:30:09 -07001619 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1620 directory, and *path* should be relative; path will then be relative to
1621 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1622 *dir_fd* may not be supported on your platform;
1623 you can check whether or not it is available using
1624 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1625 a :exc:`NotImplementedError`.
1626
1627 .. versionadded:: 3.3
1628 The *dir_fd* argument.
1629
Georg Brandl116aa622007-08-15 14:28:22 +00001630
1631.. function:: major(device)
1632
Christian Heimesfaf2f632008-01-06 16:59:19 +00001633 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001634 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001635
Georg Brandl116aa622007-08-15 14:28:22 +00001636
1637.. function:: minor(device)
1638
Christian Heimesfaf2f632008-01-06 16:59:19 +00001639 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001640 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001641
Georg Brandl116aa622007-08-15 14:28:22 +00001642
1643.. function:: makedev(major, minor)
1644
Christian Heimesfaf2f632008-01-06 16:59:19 +00001645 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00001646
Georg Brandl116aa622007-08-15 14:28:22 +00001647
Larry Hastings9cf065c2012-06-22 16:30:09 -07001648.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001649
Larry Hastings9cf065c2012-06-22 16:30:09 -07001650 Create a directory named *path* with numeric mode *mode*.
1651
1652 On some systems, *mode* is ignored. Where it is used, the current
1653 umask value is first masked out. If the directory already
Benjamin Petersond7c3ed52010-06-27 22:32:30 +00001654 exists, :exc:`OSError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001655
Larry Hastings9cf065c2012-06-22 16:30:09 -07001656 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1657 directory, and *path* should be relative; path will then be relative to
1658 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1659 *dir_fd* may not be supported on your platform;
1660 you can check whether or not it is available using
1661 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1662 a :exc:`NotImplementedError`.
1663
Guido van Rossum2cc30da2007-11-02 23:46:40 +00001664 It is also possible to create temporary directories; see the
1665 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1666
Benjamin Petersonf650e462010-05-06 23:03:05 +00001667 Availability: Unix, Windows.
1668
Larry Hastings9cf065c2012-06-22 16:30:09 -07001669 .. versionadded:: 3.3
1670 The *dir_fd* argument.
1671
Georg Brandl116aa622007-08-15 14:28:22 +00001672
Georg Brandlc1673682010-12-02 09:06:12 +00001673.. function:: makedirs(path, mode=0o777, exist_ok=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001674
1675 .. index::
1676 single: directory; creating
1677 single: UNC paths; and os.makedirs()
1678
1679 Recursive directory creation function. Like :func:`mkdir`, but makes all
Terry Reedy5a22b652010-12-02 07:05:56 +00001680 intermediate-level directories needed to contain the leaf directory. If
Georg Brandlc1673682010-12-02 09:06:12 +00001681 the target directory with the same mode as specified already exists,
Terry Reedy5a22b652010-12-02 07:05:56 +00001682 raises an :exc:`OSError` exception if *exist_ok* is False, otherwise no
1683 exception is raised. If the directory cannot be created in other cases,
1684 raises an :exc:`OSError` exception. The default *mode* is ``0o777`` (octal).
Georg Brandlc1673682010-12-02 09:06:12 +00001685 On some systems, *mode* is ignored. Where it is used, the current umask
Terry Reedy5a22b652010-12-02 07:05:56 +00001686 value is first masked out.
Georg Brandl116aa622007-08-15 14:28:22 +00001687
1688 .. note::
1689
Georg Brandlc1673682010-12-02 09:06:12 +00001690 :func:`makedirs` will become confused if the path elements to create
1691 include :data:`pardir`.
Georg Brandl116aa622007-08-15 14:28:22 +00001692
Georg Brandl55ac8f02007-09-01 13:51:09 +00001693 This function handles UNC paths correctly.
Georg Brandl116aa622007-08-15 14:28:22 +00001694
Terry Reedy5a22b652010-12-02 07:05:56 +00001695 .. versionadded:: 3.2
1696 The *exist_ok* parameter.
1697
Georg Brandl116aa622007-08-15 14:28:22 +00001698
1699.. function:: pathconf(path, name)
1700
1701 Return system configuration information relevant to a named file. *name*
1702 specifies the configuration value to retrieve; it may be a string which is the
1703 name of a defined system value; these names are specified in a number of
1704 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1705 additional names as well. The names known to the host operating system are
1706 given in the ``pathconf_names`` dictionary. For configuration variables not
1707 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00001708
1709 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1710 specific value for *name* is not supported by the host system, even if it is
1711 included in ``pathconf_names``, an :exc:`OSError` is raised with
1712 :const:`errno.EINVAL` for the error number.
1713
Benjamin Petersonf650e462010-05-06 23:03:05 +00001714 Availability: Unix.
1715
Georg Brandl116aa622007-08-15 14:28:22 +00001716
1717.. data:: pathconf_names
1718
1719 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1720 the integer values defined for those names by the host operating system. This
1721 can be used to determine the set of names known to the system. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001722 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001723
1724
Larry Hastings9cf065c2012-06-22 16:30:09 -07001725.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001726
1727 Return a string representing the path to which the symbolic link points. The
1728 result may be either an absolute or relative pathname; if it is relative, it may
1729 be converted to an absolute pathname using ``os.path.join(os.path.dirname(path),
1730 result)``.
1731
Georg Brandl76e55382008-10-08 16:34:57 +00001732 If the *path* is a string object, the result will also be a string object,
1733 and the call may raise an UnicodeDecodeError. If the *path* is a bytes
1734 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00001735
Larry Hastings9cf065c2012-06-22 16:30:09 -07001736 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1737 directory, and *path* should be relative; path will then be relative to
1738 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1739 *dir_fd* may not be supported on your platform;
1740 you can check whether or not it is available using
1741 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1742 a :exc:`NotImplementedError`.
1743
Brian Curtinc7395692010-07-09 15:15:09 +00001744 Availability: Unix, Windows
1745
Georg Brandlb3823372010-07-10 08:58:37 +00001746 .. versionchanged:: 3.2
1747 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001748
Larry Hastings9cf065c2012-06-22 16:30:09 -07001749 .. versionadded:: 3.3
1750 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001751
Georg Brandl116aa622007-08-15 14:28:22 +00001752
Larry Hastings9cf065c2012-06-22 16:30:09 -07001753.. function:: remove(path, *, dir_fd=None, rmdir=False)
1754
1755 Remove (delete) the file *path*. This function is identical to
1756 :func:`os.unlink`.
1757
1758 Specify ``rmdir=True`` if *path* is a directory. Failing to do so
1759 will raise an exception; likewise, specifying ``rmdir=True`` when
1760 *path* is not a directory will also raise an exception.
1761
1762 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
1763 directory, and *path* should be relative; path will then be relative to
1764 that directory. (If *path* is absolute, *dir_fd* is ignored.)
1765 *dir_fd* may not be supported on your platform;
1766 you can check whether or not it is available using
1767 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
1768 a :exc:`NotImplementedError`.
1769
1770 On Windows, attempting to remove a file that is in use causes an exception to
1771 be raised; on Unix, the directory entry is removed but the storage allocated
1772 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001773
1774 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001775
Larry Hastings9cf065c2012-06-22 16:30:09 -07001776 .. versionadded:: 3.3
1777 The *dir_fd* and *rmdir* arguments.
1778
Georg Brandl116aa622007-08-15 14:28:22 +00001779
1780.. function:: removedirs(path)
1781
1782 .. index:: single: directory; deleting
1783
Christian Heimesfaf2f632008-01-06 16:59:19 +00001784 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00001785 leaf directory is successfully removed, :func:`removedirs` tries to
1786 successively remove every parent directory mentioned in *path* until an error
1787 is raised (which is ignored, because it generally means that a parent directory
1788 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1789 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1790 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1791 successfully removed.
1792
Georg Brandl116aa622007-08-15 14:28:22 +00001793
Larry Hastings9cf065c2012-06-22 16:30:09 -07001794.. function:: removexattr(path, attribute, *, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001795
Larry Hastings9cf065c2012-06-22 16:30:09 -07001796 Removes the extended filesystem attribute *attribute* from *path*.
1797 *attribute* should be bytes or str. If it is a string, it is encoded
1798 with the filesystem encoding.
1799
1800 *path* may be specified as either a string or an open file descriptor.
1801
1802 If *follow_symlinks* is ``False``, and the last element of the path is a
1803 symbolic link, :func:`removexattr` will remove the attribute from the
1804 symbolic link itself instead of the file the link points to. It is an
1805 error to use *follow_symlinks* when specifying *path* as an open file
1806 descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001807
1808 Availability: Linux
1809
1810 .. versionadded:: 3.3
1811
1812
Larry Hastings9cf065c2012-06-22 16:30:09 -07001813.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001814
1815 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1816 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001817 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001818 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1819 the renaming will be an atomic operation (this is a POSIX requirement). On
1820 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001821 file.
1822
Larry Hastings9cf065c2012-06-22 16:30:09 -07001823 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1824 file descriptor referring to a directory, and the corresponding path
1825 (*src* or *dst*) should be relative; that path will then be relative to
1826 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1827 goes for *dst* and *dst_dir_fd*.)
1828 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1829 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1830 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1831
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001832 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001833
1834 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001835
Larry Hastings9cf065c2012-06-22 16:30:09 -07001836 .. versionadded:: 3.3
1837 The *src_dir_fd* and *dst_dir_fd* arguments.
1838
Georg Brandl116aa622007-08-15 14:28:22 +00001839
1840.. function:: renames(old, new)
1841
1842 Recursive directory or file renaming function. Works like :func:`rename`, except
1843 creation of any intermediate directories needed to make the new pathname good is
1844 attempted first. After the rename, directories corresponding to rightmost path
1845 segments of the old name will be pruned away using :func:`removedirs`.
1846
Georg Brandl116aa622007-08-15 14:28:22 +00001847 .. note::
1848
1849 This function can fail with the new directory structure made if you lack
1850 permissions needed to remove the leaf directory or file.
1851
1852
Larry Hastings9cf065c2012-06-22 16:30:09 -07001853.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001854
1855 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1856 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
1857 be replaced silently if the user has permission. The operation may fail
1858 if *src* and *dst* are on different filesystems. If successful,
1859 the renaming will be an atomic operation (this is a POSIX requirement).
1860
Larry Hastings9cf065c2012-06-22 16:30:09 -07001861 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1862 file descriptor referring to a directory, and the corresponding path
1863 (*src* or *dst*) should be relative; that path will then be relative to
1864 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1865 goes for *dst* and *dst_dir_fd*.)
1866 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1867 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1868 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1869
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001870 Availability: Unix, Windows
1871
1872 .. versionadded:: 3.3
1873
1874
Georg Brandl116aa622007-08-15 14:28:22 +00001875.. function:: rmdir(path)
1876
Georg Brandla6053b42009-09-01 08:11:14 +00001877 Remove (delete) the directory *path*. Only works when the directory is
1878 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
Benjamin Petersonf650e462010-05-06 23:03:05 +00001879 directory trees, :func:`shutil.rmtree` can be used.
1880
1881 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001882
1883
Benjamin Peterson799bd802011-08-31 22:15:17 -04001884.. data:: XATTR_SIZE_MAX
1885
1886 The maximum size the value of an extended attribute can be. Currently, this
1887 is 64 kilobytes on Linux.
1888
1889
1890.. data:: XATTR_CREATE
1891
1892 This is a possible value for the flags argument in :func:`setxattr`. It
1893 indicates the operation must create an attribute.
1894
1895
1896.. data:: XATTR_REPLACE
1897
1898 This is a possible value for the flags argument in :func:`setxattr`. It
1899 indicates the operation must replace an existing attribute.
1900
1901
Larry Hastings9cf065c2012-06-22 16:30:09 -07001902.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001903
Larry Hastings9cf065c2012-06-22 16:30:09 -07001904 Set the extended filesystem attribute *attribute* on *path* to *value*.
1905 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
1906 it is encoded with the filesystem encoding. *flags* may be
1907 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
1908 given and the attribute does not exist, ``EEXISTS`` will be raised.
1909 If :data:`XATTR_CREATE` is given and the attribute already exists, the
1910 attribute will not be created and ``ENODATA`` will be raised.
1911
1912 *path* may be specified as either a string or an open file descriptor.
1913
1914 If *follow_symlinks* is ``False``, and the last element of the path is a
1915 symbolic link, :func:`setxattr` will examine the symbolic link itself
1916 instead of the file the link points to. It is an error to use
1917 *follow_symlinks* when specifying *path* as an open file descriptor.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001918
1919 Availability: Linux
1920
1921 .. note::
1922
1923 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
1924 to be ignored on some filesystems.
1925
1926 .. versionadded:: 3.3
1927
1928
Larry Hastings9cf065c2012-06-22 16:30:09 -07001929.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001930
R. David Murray7b1aae92011-01-24 19:34:58 +00001931 Perform the equivalent of a :c:func:`stat` system call on the given path.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001932 *path* may be specified as either a string or as an open file descriptor.
1933 (This function normally follows symlinks; to stat a symlink add the argument
1934 ``follow_symlinks=False``, or use :func:`lstat`.)
Georg Brandl116aa622007-08-15 14:28:22 +00001935
Larry Hastings6fe20b32012-04-19 15:07:49 -07001936 The return value is an object whose attributes correspond roughly
1937 to the members of the :c:type:`stat` structure, namely:
R. David Murray7b1aae92011-01-24 19:34:58 +00001938
1939 * :attr:`st_mode` - protection bits,
1940 * :attr:`st_ino` - inode number,
1941 * :attr:`st_dev` - device,
1942 * :attr:`st_nlink` - number of hard links,
1943 * :attr:`st_uid` - user id of owner,
1944 * :attr:`st_gid` - group id of owner,
1945 * :attr:`st_size` - size of file, in bytes,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001946 * :attr:`st_atime` - time of most recent access expressed in seconds,
1947 * :attr:`st_mtime` - time of most recent content modification
1948 expressed in seconds,
1949 * :attr:`st_ctime` - platform dependent; time of most recent metadata
1950 change on Unix, or the time of creation on Windows, expressed in seconds
1951 * :attr:`st_atime_ns` - time of most recent access
1952 expressed in nanoseconds as an integer,
1953 * :attr:`st_mtime_ns` - time of most recent content modification
1954 expressed in nanoseconds as an integer,
1955 * :attr:`st_ctime_ns` - platform dependent; time of most recent metadata
1956 change on Unix, or the time of creation on Windows,
1957 expressed in nanoseconds as an integer
Georg Brandl116aa622007-08-15 14:28:22 +00001958
1959 On some Unix systems (such as Linux), the following attributes may also be
R. David Murray7b1aae92011-01-24 19:34:58 +00001960 available:
1961
1962 * :attr:`st_blocks` - number of blocks allocated for file
1963 * :attr:`st_blksize` - filesystem blocksize
1964 * :attr:`st_rdev` - type of device if an inode device
1965 * :attr:`st_flags` - user defined flags for file
Georg Brandl116aa622007-08-15 14:28:22 +00001966
1967 On other Unix systems (such as FreeBSD), the following attributes may be
R. David Murray7b1aae92011-01-24 19:34:58 +00001968 available (but may be only filled out if root tries to use them):
1969
1970 * :attr:`st_gen` - file generation number
1971 * :attr:`st_birthtime` - time of file creation
Georg Brandl116aa622007-08-15 14:28:22 +00001972
1973 On Mac OS systems, the following attributes may also be available:
Georg Brandl116aa622007-08-15 14:28:22 +00001974
R. David Murray7b1aae92011-01-24 19:34:58 +00001975 * :attr:`st_rsize`
1976 * :attr:`st_creator`
1977 * :attr:`st_type`
Georg Brandl116aa622007-08-15 14:28:22 +00001978
1979 .. note::
1980
Senthil Kumaran3aac1792011-07-04 11:43:51 -07001981 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07001982 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
1983 system and the file system. For example, on Windows systems using the FAT
1984 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
1985 :attr:`st_atime` has only 1-day resolution. See your operating system
1986 documentation for details.
Larry Hastings6fe20b32012-04-19 15:07:49 -07001987 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
1988 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
1989 systems do not provide nanosecond precision. On systems that do
1990 provide nanosecond precision, the floating-point object used to
1991 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
1992 cannot preserve all of it, and as such will be slightly inexact.
1993 If you need the exact timestamps you should always use
1994 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00001995
R. David Murray7b1aae92011-01-24 19:34:58 +00001996 For backward compatibility, the return value of :func:`~os.stat` is also accessible
1997 as a tuple of at least 10 integers giving the most important (and portable)
1998 members of the :c:type:`stat` structure, in the order :attr:`st_mode`,
1999 :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, :attr:`st_uid`,
2000 :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, :attr:`st_mtime`,
2001 :attr:`st_ctime`. More items may be added at the end by some implementations.
2002
Larry Hastings9cf065c2012-06-22 16:30:09 -07002003 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
2004 directory, and *path* should be relative; path will then be relative to
2005 that directory. (If *path* is absolute, *dir_fd* is ignored.)
2006 *dir_fd* may not be supported on your platform;
2007 you can check whether or not it is available using
2008 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
2009 a :exc:`NotImplementedError`.
2010
2011 If *follow_symlinks* is ``False``, and the last element of the path is a
2012 symbolic link, :func:`stat` will examine the symbolic link itself instead
2013 of the file the link points to. *follow_symlinks* may not be supported
2014 on your platform; you can check whether or not it is available using
2015 :data:`os.supports_follow_symlinks`. If it is unavailable,
2016 using it will raise a :exc:`NotImplementedError`.
2017
2018 It is an error to use *dir_fd* or *follow_symlinks* when specifying
2019 *path* as an open file descriptor.
2020
R. David Murray7b1aae92011-01-24 19:34:58 +00002021 .. index:: module: stat
2022
2023 The standard module :mod:`stat` defines functions and constants that are useful
2024 for extracting information from a :c:type:`stat` structure. (On Windows, some
2025 items are filled with dummy values.)
2026
2027 Example::
2028
2029 >>> import os
2030 >>> statinfo = os.stat('somefile.txt')
2031 >>> statinfo
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00002032 posix.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
2033 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
2034 st_mtime=1297230027, st_ctime=1297230027)
R. David Murray7b1aae92011-01-24 19:34:58 +00002035 >>> statinfo.st_size
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00002036 264
R. David Murray7b1aae92011-01-24 19:34:58 +00002037
Georg Brandlc575c902008-09-13 17:46:05 +00002038 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002039
Larry Hastings6fe20b32012-04-19 15:07:49 -07002040 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002041 Added the *dir_fd* and *follow_symlinks* arguments,
2042 specifying a file descriptor instead of a path,
2043 and the :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
Larry Hastings6fe20b32012-04-19 15:07:49 -07002044 and :attr:`st_ctime_ns` members.
2045
Georg Brandl116aa622007-08-15 14:28:22 +00002046
2047.. function:: stat_float_times([newvalue])
2048
2049 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00002050 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00002051 ``False``, future calls return ints. If *newvalue* is omitted, return the
2052 current setting.
2053
2054 For compatibility with older Python versions, accessing :class:`stat_result` as
2055 a tuple always returns integers.
2056
Georg Brandl55ac8f02007-09-01 13:51:09 +00002057 Python now returns float values by default. Applications which do not work
2058 correctly with floating point time stamps can use this function to restore the
2059 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00002060
2061 The resolution of the timestamps (that is the smallest possible fraction)
2062 depends on the system. Some systems only support second resolution; on these
2063 systems, the fraction will always be zero.
2064
2065 It is recommended that this setting is only changed at program startup time in
2066 the *__main__* module; libraries should never change this setting. If an
2067 application uses a library that works incorrectly if floating point time stamps
2068 are processed, this application should turn the feature off until the library
2069 has been corrected.
2070
Victor Stinner034d0aa2012-06-05 01:22:15 +02002071 .. deprecated:: 3.3
2072
Georg Brandl116aa622007-08-15 14:28:22 +00002073
2074.. function:: statvfs(path)
2075
Georg Brandl60203b42010-10-06 10:11:56 +00002076 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00002077 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00002078 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00002079 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
2080 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002081 :attr:`f_flag`, :attr:`f_namemax`.
2082
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002083 Two module-level constants are defined for the :attr:`f_flag` attribute's
2084 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
2085 read-only, and if :const:`ST_NOSUID` is set, the semantics of
2086 setuid/setgid bits are disabled or not supported.
2087
Larry Hastings9cf065c2012-06-22 16:30:09 -07002088 On some platforms, *path* may also be specified as an open file descriptor.
2089 This functionality may not be supported on your platform; you can check
2090 whether or not it is available using :data:`os.supports_fd`. If it is
2091 unavailable, using it will raise a :exc:`NotImplementedError`.
2092
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00002093 .. versionchanged:: 3.2
2094 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
2095
Benjamin Petersonf650e462010-05-06 23:03:05 +00002096 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002097
Larry Hastings9cf065c2012-06-22 16:30:09 -07002098 .. versionadded:: 3.3
2099 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00002100
Larry Hastings9cf065c2012-06-22 16:30:09 -07002101
2102.. data:: supports_dir_fd
2103
2104 An object implementing collections.Set indicating which functions in the
2105 :mod:`os` permit use of their *dir_fd* parameter. Different platforms
2106 provide different functionality, and an option that might work on one might
2107 be unsupported on another. For consistency's sakes, functions that support
2108 *dir_fd* always allow specifying the parameter, but will throw an exception
2109 if the functionality is not actually available.
2110
2111 To check whether a particular function permits use of its *dir_fd*
2112 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
2113 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
2114 is locally available::
2115
2116 os.stat in os.supports_dir_fd
2117
2118 Currently *dir_fd* parameters only work on UNIX platforms;
2119 none of them work on Windows.
2120
2121 .. versionadded:: 3.3
2122
2123.. data:: supports_effective_ids
2124
2125 An object implementing collections.Set indicating which functions in the
2126 :mod:`os` permit use of the *effective_id* parameter for :func:`os.access`.
2127 If the local platform supports it, the collection will contain
2128 :func:`os.access`, otherwise it will be empty.
2129
2130 To check whether you can use the *effective_id* parameter for
2131 :func:`os.access`, use the ``in`` operator on ``supports_dir_fd``, like so::
2132
2133 os.access in os.supports_effective_ids
2134
2135 Currently *effective_id* only works on UNIX platforms;
2136 it does not work on Windows.
2137
2138 .. versionadded:: 3.3
2139
2140.. data:: supports_fd
2141
2142 An object implementing collections.Set indicating which functions in the
2143 :mod:`os` permit specifying their *path* parameter as an open file
2144 descriptor. Different platforms provide different functionality, and an
2145 option that might work on one might be unsupported on another. For
2146 consistency's sakes, functions that support *fd* always allow specifying
2147 the parameter, but will throw an exception if the functionality is not
2148 actually available.
2149
2150 To check whether a particular function permits specifying an open file
2151 descriptor for its *path* parameter, use the ``in`` operator on
2152 ``supports_fd``. As an example, this expression determines whether
2153 :func:`os.chdir` accepts open file descriptors when called on your local
2154 platform::
2155
2156 os.chdir in os.supports_fd
2157
2158 .. versionadded:: 3.3
2159
2160.. data:: supports_follow_symlinks
2161
2162 An object implementing collections.Set indicating which functions in the
2163 :mod:`os` permit use of their *follow_symlinks* parameter. Different
2164 platforms provide different functionality, and an option that might work on
2165 one might be unsupported on another. For consistency's sakes, functions that
2166 support *follow_symlinks* always allow specifying the parameter, but will
2167 throw an exception if the functionality is not actually available.
2168
2169 To check whether a particular function permits use of its *follow_symlinks*
2170 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2171 example, this expression determines whether the *follow_symlinks* parameter
2172 of :func:`os.stat` is locally available::
2173
2174 os.stat in os.supports_follow_symlinks
2175
2176 .. versionadded:: 3.3
2177
2178.. function:: symlink(source, link_name, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002179
Brian Curtinc7395692010-07-09 15:15:09 +00002180 Create a symbolic link pointing to *source* named *link_name*.
2181
Larry Hastings9cf065c2012-06-22 16:30:09 -07002182 On Windows, a symlink represents either a file or a directory, and does not
2183 morph to the target dynamically. If *target_is_directory* is set to ``True``,
2184 the symlink will be created as a directory symlink, otherwise as a file symlink
2185 (the default). On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002186
Georg Brandl64a41ed2010-10-06 08:52:48 +00002187 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2188 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002189
Larry Hastings9cf065c2012-06-22 16:30:09 -07002190 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
2191 directory, and *path* should be relative; path will then be relative to
2192 that directory. (If *path* is absolute, *dir_fd* is ignored.)
2193 *dir_fd* may not be supported on your platform;
2194 you can check whether or not it is available using
2195 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
2196 a :exc:`NotImplementedError`.
2197
Brian Curtin52173d42010-12-02 18:29:18 +00002198 .. note::
2199
Larry Hastings9cf065c2012-06-22 16:30:09 -07002200 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2201 successfully create symlinks. This privilege is not typically granted to
2202 regular users but is available to accounts which can escalate privileges
2203 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002204 application as an administrator are ways to successfully create symlinks.
2205
Brian Curtin96245592010-12-28 17:08:22 +00002206 :exc:`OSError` is raised when the function is called by an unprivileged
2207 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002208
Georg Brandl64a41ed2010-10-06 08:52:48 +00002209 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002210
Georg Brandlb3823372010-07-10 08:58:37 +00002211 .. versionchanged:: 3.2
2212 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002213
Larry Hastings9cf065c2012-06-22 16:30:09 -07002214 .. versionadded:: 3.3
2215 Added the *dir_fd* argument, and now allow *target_is_directory*
2216 on non-Windows platforms.
2217
Georg Brandl116aa622007-08-15 14:28:22 +00002218
Ross Lagerwall7807c352011-03-17 20:20:30 +02002219.. function:: sync()
2220
2221 Force write of everything to disk.
2222
2223 Availability: Unix.
2224
2225 .. versionadded:: 3.3
2226
2227
2228.. function:: truncate(path, length)
2229
2230 Truncate the file corresponding to *path*, so that it is at most
2231 *length* bytes in size.
2232
2233 Availability: Unix.
2234
2235 .. versionadded:: 3.3
2236
2237
Larry Hastings9cf065c2012-06-22 16:30:09 -07002238.. function:: unlink(path, *, dir_fd=None, rmdir=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002239
Georg Brandla6053b42009-09-01 08:11:14 +00002240 Remove (delete) the file *path*. This is the same function as
2241 :func:`remove`; the :func:`unlink` name is its traditional Unix
Larry Hastings9cf065c2012-06-22 16:30:09 -07002242 name. Please see the documentation for :func:`remove` for
2243 further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002244
2245 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002246
Larry Hastings9cf065c2012-06-22 16:30:09 -07002247 .. versionadded:: 3.3
2248 The *dir_fd* and *rmdir* parameters.
Georg Brandl116aa622007-08-15 14:28:22 +00002249
Larry Hastings9cf065c2012-06-22 16:30:09 -07002250
2251.. function:: utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002252
Larry Hastings76ad59b2012-05-03 00:30:07 -07002253 Set the access and modified times of the file specified by *path*.
2254
2255 :func:`utime` takes two optional parameters, *times* and *ns*.
2256 These specify the times set on *path* and are used as follows:
2257
Larry Hastings9cf065c2012-06-22 16:30:09 -07002258 - If *ns* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002259 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2260 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002261 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002262 it must be a 2-tuple of the form ``(atime, mtime)``
2263 where each member is an int or float expressing seconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002264 - If *times* and *ns* are both ``None``,
2265 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002266 where both times are the current time.
2267 (The effect is similar to running the Unix program
2268 :program:`touch` on *path*.)
Larry Hastings76ad59b2012-05-03 00:30:07 -07002269
Larry Hastings9cf065c2012-06-22 16:30:09 -07002270 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002271
2272 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002273 depends on whether the operating system implements directories as files
2274 (for example, Windows does not). Note that the exact times you set here may
2275 not be returned by a subsequent :func:`~os.stat` call, depending on the
2276 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002277 times; see :func:`~os.stat`. The best way to preserve exact times is to
2278 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2279 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002280
Larry Hastings9cf065c2012-06-22 16:30:09 -07002281 On some platforms, *path* may also be specified as an open file descriptor.
2282 This functionality may not be supported on your platform; you can check
2283 whether or not it is available using :data:`os.supports_fd`. If it is
2284 unavailable, using it will raise a :exc:`NotImplementedError`.
2285
2286 If *dir_fd* is not ``None``, it should be a file descriptor referring to a
2287 directory, and *path* should be relative; path will then be relative to
2288 that directory. (If *path* is absolute, *dir_fd* is ignored.)
2289 *dir_fd* may not be supported on your platform;
2290 you can check whether or not it is available using
2291 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise
2292 a :exc:`NotImplementedError`.
2293
2294 If *follow_symlinks* is ``False``, and the last element of the path is a
2295 symbolic link, :func:`utime` will examine the symbolic link itself instead
2296 of the file the link points to. *follow_symlinks* may not be supported
2297 on your platform; you can check whether or not it is available using
2298 :data:`os.supports_follow_symlinks`. If it is unavailable,
2299 using it will raise a :exc:`NotImplementedError`.
2300
2301 It is an error to use *dir_fd* or *follow_symlinks* when specifying
2302 *path* as an open file descriptor.
2303
Georg Brandlc575c902008-09-13 17:46:05 +00002304 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002305
Larry Hastings76ad59b2012-05-03 00:30:07 -07002306 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002307 Added support for specifying an open file descriptor for *path*,
2308 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002309
Georg Brandl116aa622007-08-15 14:28:22 +00002310
Georg Brandl18244152009-09-02 20:34:52 +00002311.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002312
2313 .. index::
2314 single: directory; walking
2315 single: directory; traversal
2316
Christian Heimesfaf2f632008-01-06 16:59:19 +00002317 Generate the file names in a directory tree by walking the tree
2318 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002319 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2320 filenames)``.
2321
2322 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2323 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2324 *filenames* is a list of the names of the non-directory files in *dirpath*.
2325 Note that the names in the lists contain no path components. To get a full path
2326 (which begins with *top*) to a file or directory in *dirpath*, do
2327 ``os.path.join(dirpath, name)``.
2328
Christian Heimesfaf2f632008-01-06 16:59:19 +00002329 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002330 directory is generated before the triples for any of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002331 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002332 directory is generated after the triples for all of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002333 (directories are generated bottom-up).
Georg Brandl116aa622007-08-15 14:28:22 +00002334
Christian Heimesfaf2f632008-01-06 16:59:19 +00002335 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002336 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2337 recurse into the subdirectories whose names remain in *dirnames*; this can be
2338 used to prune the search, impose a specific order of visiting, or even to inform
2339 :func:`walk` about directories the caller creates or renames before it resumes
Christian Heimesfaf2f632008-01-06 16:59:19 +00002340 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl116aa622007-08-15 14:28:22 +00002341 ineffective, because in bottom-up mode the directories in *dirnames* are
2342 generated before *dirpath* itself is generated.
2343
Ezio Melotti67494f22011-10-18 12:59:39 +03002344 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002345 argument *onerror* is specified, it should be a function; it will be called with
2346 one argument, an :exc:`OSError` instance. It can report the error to continue
2347 with the walk, or raise the exception to abort the walk. Note that the filename
2348 is available as the ``filename`` attribute of the exception object.
2349
2350 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002351 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002352 symlinks, on systems that support them.
2353
Georg Brandl116aa622007-08-15 14:28:22 +00002354 .. note::
2355
Christian Heimesfaf2f632008-01-06 16:59:19 +00002356 Be aware that setting *followlinks* to ``True`` can lead to infinite recursion if a
Georg Brandl116aa622007-08-15 14:28:22 +00002357 link points to a parent directory of itself. :func:`walk` does not keep track of
2358 the directories it visited already.
2359
2360 .. note::
2361
2362 If you pass a relative pathname, don't change the current working directory
2363 between resumptions of :func:`walk`. :func:`walk` never changes the current
2364 directory, and assumes that its caller doesn't either.
2365
2366 This example displays the number of bytes taken by non-directory files in each
2367 directory under the starting directory, except that it doesn't look under any
2368 CVS subdirectory::
2369
2370 import os
2371 from os.path import join, getsize
2372 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002373 print(root, "consumes", end=" ")
2374 print(sum(getsize(join(root, name)) for name in files), end=" ")
2375 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002376 if 'CVS' in dirs:
2377 dirs.remove('CVS') # don't visit CVS directories
2378
Christian Heimesfaf2f632008-01-06 16:59:19 +00002379 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl116aa622007-08-15 14:28:22 +00002380 doesn't allow deleting a directory before the directory is empty::
2381
Christian Heimesfaf2f632008-01-06 16:59:19 +00002382 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002383 # assuming there are no symbolic links.
2384 # CAUTION: This is dangerous! For example, if top == '/', it
2385 # could delete all your disk files.
2386 import os
2387 for root, dirs, files in os.walk(top, topdown=False):
2388 for name in files:
2389 os.remove(os.path.join(root, name))
2390 for name in dirs:
2391 os.rmdir(os.path.join(root, name))
2392
Georg Brandl116aa622007-08-15 14:28:22 +00002393
Charles-François Natali7372b062012-02-05 15:15:38 +01002394.. function:: fwalk(top, topdown=True, onerror=None, followlinks=False)
2395
2396 .. index::
2397 single: directory; walking
2398 single: directory; traversal
2399
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002400 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
2401 ``(dirpath, dirnames, filenames, dirfd)``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002402
2403 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2404 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2405
2406 .. note::
2407
2408 Since :func:`fwalk` yields file descriptors, those are only valid until
2409 the next iteration step, so you should duplicate them (e.g. with
2410 :func:`dup`) if you want to keep them longer.
2411
2412 This example displays the number of bytes taken by non-directory files in each
2413 directory under the starting directory, except that it doesn't look under any
2414 CVS subdirectory::
2415
2416 import os
2417 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2418 print(root, "consumes", end="")
2419 print(sum([os.fstatat(rootfd, name).st_size for name in files]),
2420 end="")
2421 print("bytes in", len(files), "non-directory files")
2422 if 'CVS' in dirs:
2423 dirs.remove('CVS') # don't visit CVS directories
2424
2425 In the next example, walking the tree bottom-up is essential:
2426 :func:`unlinkat` doesn't allow deleting a directory before the directory is
2427 empty::
2428
2429 # Delete everything reachable from the directory named in "top",
2430 # assuming there are no symbolic links.
2431 # CAUTION: This is dangerous! For example, if top == '/', it
2432 # could delete all your disk files.
2433 import os
2434 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2435 for name in files:
2436 os.unlinkat(rootfd, name)
2437 for name in dirs:
2438 os.unlinkat(rootfd, name, os.AT_REMOVEDIR)
2439
2440 Availability: Unix.
2441
2442 .. versionadded:: 3.3
2443
2444
Georg Brandl116aa622007-08-15 14:28:22 +00002445.. _os-process:
2446
2447Process Management
2448------------------
2449
2450These functions may be used to create and manage processes.
2451
2452The various :func:`exec\*` functions take a list of arguments for the new
2453program loaded into the process. In each case, the first of these arguments is
2454passed to the new program as its own name rather than as an argument a user may
2455have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002456passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002457['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2458to be ignored.
2459
2460
2461.. function:: abort()
2462
2463 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2464 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002465 an exit code of ``3``. Be aware that calling this function will not call the
2466 Python signal handler registered for :const:`SIGABRT` with
2467 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002468
Georg Brandlc575c902008-09-13 17:46:05 +00002469 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002470
2471
2472.. function:: execl(path, arg0, arg1, ...)
2473 execle(path, arg0, arg1, ..., env)
2474 execlp(file, arg0, arg1, ...)
2475 execlpe(file, arg0, arg1, ..., env)
2476 execv(path, args)
2477 execve(path, args, env)
2478 execvp(file, args)
2479 execvpe(file, args, env)
2480
2481 These functions all execute a new program, replacing the current process; they
2482 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002483 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002484 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002485
2486 The current process is replaced immediately. Open file objects and
2487 descriptors are not flushed, so if there may be data buffered
2488 on these open files, you should flush them using
2489 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
2490 :func:`exec\*` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002491
Christian Heimesfaf2f632008-01-06 16:59:19 +00002492 The "l" and "v" variants of the :func:`exec\*` functions differ in how
2493 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002494 to work with if the number of parameters is fixed when the code is written; the
2495 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002496 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002497 variable, with the arguments being passed in a list or tuple as the *args*
2498 parameter. In either case, the arguments to the child process should start with
2499 the name of the command being run, but this is not enforced.
2500
Christian Heimesfaf2f632008-01-06 16:59:19 +00002501 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002502 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2503 :envvar:`PATH` environment variable to locate the program *file*. When the
2504 environment is being replaced (using one of the :func:`exec\*e` variants,
2505 discussed in the next paragraph), the new environment is used as the source of
2506 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2507 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2508 locate the executable; *path* must contain an appropriate absolute or relative
2509 path.
2510
2511 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002512 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002513 used to define the environment variables for the new process (these are used
2514 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002515 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002516 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002517
Larry Hastings9cf065c2012-06-22 16:30:09 -07002518 For :func:`execve` on some platforms, *path* may also be specified as an open
2519 file descriptor. This functionality may not be supported on your platform;
2520 you can check whether or not it is available using :data:`os.supports_fd`.
2521 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2522
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002523 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002524
Larry Hastings9cf065c2012-06-22 16:30:09 -07002525 .. versionadded:: 3.3
2526 Added support for specifying an open file descriptor for *path*
2527 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002528
2529.. function:: _exit(n)
2530
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002531 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002532 stdio buffers, etc.
2533
2534 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002535
2536 .. note::
2537
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002538 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2539 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002540
Christian Heimesfaf2f632008-01-06 16:59:19 +00002541The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002542although they are not required. These are typically used for system programs
2543written in Python, such as a mail server's external command delivery program.
2544
2545.. note::
2546
2547 Some of these may not be available on all Unix platforms, since there is some
2548 variation. These constants are defined where they are defined by the underlying
2549 platform.
2550
2551
2552.. data:: EX_OK
2553
Benjamin Petersonf650e462010-05-06 23:03:05 +00002554 Exit code that means no error occurred.
2555
2556 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002557
Georg Brandl116aa622007-08-15 14:28:22 +00002558
2559.. data:: EX_USAGE
2560
2561 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002562 number of arguments are given.
2563
2564 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002565
Georg Brandl116aa622007-08-15 14:28:22 +00002566
2567.. data:: EX_DATAERR
2568
Benjamin Petersonf650e462010-05-06 23:03:05 +00002569 Exit code that means the input data was incorrect.
2570
2571 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002572
Georg Brandl116aa622007-08-15 14:28:22 +00002573
2574.. data:: EX_NOINPUT
2575
2576 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002577
Georg Brandlc575c902008-09-13 17:46:05 +00002578 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002579
Georg Brandl116aa622007-08-15 14:28:22 +00002580
2581.. data:: EX_NOUSER
2582
Benjamin Petersonf650e462010-05-06 23:03:05 +00002583 Exit code that means a specified user did not exist.
2584
2585 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002586
Georg Brandl116aa622007-08-15 14:28:22 +00002587
2588.. data:: EX_NOHOST
2589
Benjamin Petersonf650e462010-05-06 23:03:05 +00002590 Exit code that means a specified host did not exist.
2591
2592 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002593
Georg Brandl116aa622007-08-15 14:28:22 +00002594
2595.. data:: EX_UNAVAILABLE
2596
Benjamin Petersonf650e462010-05-06 23:03:05 +00002597 Exit code that means that a required service is unavailable.
2598
2599 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002600
Georg Brandl116aa622007-08-15 14:28:22 +00002601
2602.. data:: EX_SOFTWARE
2603
Benjamin Petersonf650e462010-05-06 23:03:05 +00002604 Exit code that means an internal software error was detected.
2605
2606 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002607
Georg Brandl116aa622007-08-15 14:28:22 +00002608
2609.. data:: EX_OSERR
2610
2611 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002612 inability to fork or create a pipe.
2613
2614 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002615
Georg Brandl116aa622007-08-15 14:28:22 +00002616
2617.. data:: EX_OSFILE
2618
2619 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002620 some other kind of error.
2621
2622 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002623
Georg Brandl116aa622007-08-15 14:28:22 +00002624
2625.. data:: EX_CANTCREAT
2626
2627 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002628
Georg Brandlc575c902008-09-13 17:46:05 +00002629 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002630
Georg Brandl116aa622007-08-15 14:28:22 +00002631
2632.. data:: EX_IOERR
2633
2634 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002635
Georg Brandlc575c902008-09-13 17:46:05 +00002636 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002637
Georg Brandl116aa622007-08-15 14:28:22 +00002638
2639.. data:: EX_TEMPFAIL
2640
2641 Exit code that means a temporary failure occurred. This indicates something
2642 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002643 made during a retryable operation.
2644
2645 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002646
Georg Brandl116aa622007-08-15 14:28:22 +00002647
2648.. data:: EX_PROTOCOL
2649
2650 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002651 understood.
2652
2653 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002654
Georg Brandl116aa622007-08-15 14:28:22 +00002655
2656.. data:: EX_NOPERM
2657
2658 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002659 operation (but not intended for file system problems).
2660
2661 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002662
Georg Brandl116aa622007-08-15 14:28:22 +00002663
2664.. data:: EX_CONFIG
2665
2666 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002667
Georg Brandlc575c902008-09-13 17:46:05 +00002668 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002669
Georg Brandl116aa622007-08-15 14:28:22 +00002670
2671.. data:: EX_NOTFOUND
2672
Benjamin Petersonf650e462010-05-06 23:03:05 +00002673 Exit code that means something like "an entry was not found".
2674
2675 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002676
Georg Brandl116aa622007-08-15 14:28:22 +00002677
2678.. function:: fork()
2679
Christian Heimesfaf2f632008-01-06 16:59:19 +00002680 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002681 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002682
2683 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
2684 known issues when using fork() from a thread.
2685
Georg Brandlc575c902008-09-13 17:46:05 +00002686 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002687
2688
2689.. function:: forkpty()
2690
2691 Fork a child process, using a new pseudo-terminal as the child's controlling
2692 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2693 new child's process id in the parent, and *fd* is the file descriptor of the
2694 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002695 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002696
Georg Brandlc575c902008-09-13 17:46:05 +00002697 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002698
2699
2700.. function:: kill(pid, sig)
2701
2702 .. index::
2703 single: process; killing
2704 single: process; signalling
2705
2706 Send signal *sig* to the process *pid*. Constants for the specific signals
2707 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00002708
2709 Windows: The :data:`signal.CTRL_C_EVENT` and
2710 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
2711 only be sent to console processes which share a common console window,
2712 e.g., some subprocesses. Any other value for *sig* will cause the process
2713 to be unconditionally killed by the TerminateProcess API, and the exit code
2714 will be set to *sig*. The Windows version of :func:`kill` additionally takes
2715 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00002716
Victor Stinnerb3e72192011-05-08 01:46:11 +02002717 See also :func:`signal.pthread_kill`.
2718
Georg Brandl67b21b72010-08-17 15:07:14 +00002719 .. versionadded:: 3.2
2720 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00002721
Georg Brandl116aa622007-08-15 14:28:22 +00002722
2723.. function:: killpg(pgid, sig)
2724
2725 .. index::
2726 single: process; killing
2727 single: process; signalling
2728
Benjamin Petersonf650e462010-05-06 23:03:05 +00002729 Send the signal *sig* to the process group *pgid*.
2730
2731 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002732
Georg Brandl116aa622007-08-15 14:28:22 +00002733
2734.. function:: nice(increment)
2735
2736 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002737
Georg Brandlc575c902008-09-13 17:46:05 +00002738 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002739
2740
2741.. function:: plock(op)
2742
2743 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00002744 ``<sys/lock.h>``) determines which segments are locked.
2745
2746 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002747
2748
2749.. function:: popen(...)
2750 :noindex:
2751
2752 Run child processes, returning opened pipes for communications. These functions
2753 are described in section :ref:`os-newstreams`.
2754
2755
2756.. function:: spawnl(mode, path, ...)
2757 spawnle(mode, path, ..., env)
2758 spawnlp(mode, file, ...)
2759 spawnlpe(mode, file, ..., env)
2760 spawnv(mode, path, args)
2761 spawnve(mode, path, args, env)
2762 spawnvp(mode, file, args)
2763 spawnvpe(mode, file, args, env)
2764
2765 Execute the program *path* in a new process.
2766
2767 (Note that the :mod:`subprocess` module provides more powerful facilities for
2768 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00002769 preferable to using these functions. Check especially the
2770 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00002771
Christian Heimesfaf2f632008-01-06 16:59:19 +00002772 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00002773 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
2774 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002775 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00002776 be used with the :func:`waitpid` function.
2777
Christian Heimesfaf2f632008-01-06 16:59:19 +00002778 The "l" and "v" variants of the :func:`spawn\*` functions differ in how
2779 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002780 to work with if the number of parameters is fixed when the code is written; the
2781 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002782 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00002783 parameters is variable, with the arguments being passed in a list or tuple as
2784 the *args* parameter. In either case, the arguments to the child process must
2785 start with the name of the command being run.
2786
Christian Heimesfaf2f632008-01-06 16:59:19 +00002787 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002788 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
2789 :envvar:`PATH` environment variable to locate the program *file*. When the
2790 environment is being replaced (using one of the :func:`spawn\*e` variants,
2791 discussed in the next paragraph), the new environment is used as the source of
2792 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
2793 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
2794 :envvar:`PATH` variable to locate the executable; *path* must contain an
2795 appropriate absolute or relative path.
2796
2797 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002798 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00002799 which is used to define the environment variables for the new process (they are
2800 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00002801 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00002802 the new process to inherit the environment of the current process. Note that
2803 keys and values in the *env* dictionary must be strings; invalid keys or
2804 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00002805
2806 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
2807 equivalent::
2808
2809 import os
2810 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
2811
2812 L = ['cp', 'index.html', '/dev/null']
2813 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
2814
2815 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02002816 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
2817 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
2818 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00002819
Georg Brandl116aa622007-08-15 14:28:22 +00002820
2821.. data:: P_NOWAIT
2822 P_NOWAITO
2823
2824 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2825 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00002826 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00002827 the return value.
2828
2829 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002830
Georg Brandl116aa622007-08-15 14:28:22 +00002831
2832.. data:: P_WAIT
2833
2834 Possible value for the *mode* parameter to the :func:`spawn\*` family of
2835 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
2836 return until the new process has run to completion and will return the exit code
2837 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002838 process.
2839
2840 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002841
Georg Brandl116aa622007-08-15 14:28:22 +00002842
2843.. data:: P_DETACH
2844 P_OVERLAY
2845
2846 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2847 functions. These are less portable than those listed above. :const:`P_DETACH`
2848 is similar to :const:`P_NOWAIT`, but the new process is detached from the
2849 console of the calling process. If :const:`P_OVERLAY` is used, the current
2850 process will be replaced; the :func:`spawn\*` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002851
Georg Brandl116aa622007-08-15 14:28:22 +00002852 Availability: Windows.
2853
Georg Brandl116aa622007-08-15 14:28:22 +00002854
2855.. function:: startfile(path[, operation])
2856
2857 Start a file with its associated application.
2858
2859 When *operation* is not specified or ``'open'``, this acts like double-clicking
2860 the file in Windows Explorer, or giving the file name as an argument to the
2861 :program:`start` command from the interactive command shell: the file is opened
2862 with whatever application (if any) its extension is associated.
2863
2864 When another *operation* is given, it must be a "command verb" that specifies
2865 what should be done with the file. Common verbs documented by Microsoft are
2866 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
2867 ``'find'`` (to be used on directories).
2868
2869 :func:`startfile` returns as soon as the associated application is launched.
2870 There is no option to wait for the application to close, and no way to retrieve
2871 the application's exit status. The *path* parameter is relative to the current
2872 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00002873 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00002874 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00002875 the path is properly encoded for Win32.
2876
2877 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002878
Georg Brandl116aa622007-08-15 14:28:22 +00002879
2880.. function:: system(command)
2881
2882 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00002883 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00002884 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
2885 the executed command. If *command* generates any output, it will be sent to
2886 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00002887
2888 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00002889 format specified for :func:`wait`. Note that POSIX does not specify the
2890 meaning of the return value of the C :c:func:`system` function, so the return
2891 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00002892
Georg Brandl8f7b4272010-10-14 06:35:53 +00002893 On Windows, the return value is that returned by the system shell after
2894 running *command*. The shell is given by the Windows environment variable
2895 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
2896 status of the command run; on systems using a non-native shell, consult your
2897 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00002898
Georg Brandl8f7b4272010-10-14 06:35:53 +00002899 The :mod:`subprocess` module provides more powerful facilities for spawning
2900 new processes and retrieving their results; using that module is preferable
2901 to using this function. See the :ref:`subprocess-replacements` section in
2902 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00002903
Benjamin Petersonf650e462010-05-06 23:03:05 +00002904 Availability: Unix, Windows.
2905
Georg Brandl116aa622007-08-15 14:28:22 +00002906
2907.. function:: times()
2908
Benjamin Petersonf650e462010-05-06 23:03:05 +00002909 Return a 5-tuple of floating point numbers indicating accumulated (processor
2910 or other) times, in seconds. The items are: user time, system time,
2911 children's user time, children's system time, and elapsed real time since a
2912 fixed point in the past, in that order. See the Unix manual page
2913 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
2914 On Windows, only the first two items are filled, the others are zero.
2915
2916 Availability: Unix, Windows
Georg Brandl116aa622007-08-15 14:28:22 +00002917
2918
2919.. function:: wait()
2920
2921 Wait for completion of a child process, and return a tuple containing its pid
2922 and exit status indication: a 16-bit number, whose low byte is the signal number
2923 that killed the process, and whose high byte is the exit status (if the signal
2924 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00002925 produced.
2926
2927 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002928
Ross Lagerwall7807c352011-03-17 20:20:30 +02002929.. function:: waitid(idtype, id, options)
2930
2931 Wait for the completion of one or more child processes.
2932 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
2933 *id* specifies the pid to wait on.
2934 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
2935 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
2936 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
2937 representing the data contained in the :c:type:`siginfo_t` structure, namely:
2938 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
2939 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
2940 children in a waitable state.
2941
2942 Availability: Unix.
2943
2944 .. versionadded:: 3.3
2945
2946.. data:: P_PID
2947 P_PGID
2948 P_ALL
2949
2950 These are the possible values for *idtype* in :func:`waitid`. They affect
2951 how *id* is interpreted.
2952
2953 Availability: Unix.
2954
2955 .. versionadded:: 3.3
2956
2957.. data:: WEXITED
2958 WSTOPPED
2959 WNOWAIT
2960
2961 Flags that can be used in *options* in :func:`waitid` that specify what
2962 child signal to wait for.
2963
2964 Availability: Unix.
2965
2966 .. versionadded:: 3.3
2967
2968
2969.. data:: CLD_EXITED
2970 CLD_DUMPED
2971 CLD_TRAPPED
2972 CLD_CONTINUED
2973
2974 These are the possible values for :attr:`si_code` in the result returned by
2975 :func:`waitid`.
2976
2977 Availability: Unix.
2978
2979 .. versionadded:: 3.3
2980
Georg Brandl116aa622007-08-15 14:28:22 +00002981
2982.. function:: waitpid(pid, options)
2983
2984 The details of this function differ on Unix and Windows.
2985
2986 On Unix: Wait for completion of a child process given by process id *pid*, and
2987 return a tuple containing its process id and exit status indication (encoded as
2988 for :func:`wait`). The semantics of the call are affected by the value of the
2989 integer *options*, which should be ``0`` for normal operation.
2990
2991 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
2992 that specific process. If *pid* is ``0``, the request is for the status of any
2993 child in the process group of the current process. If *pid* is ``-1``, the
2994 request pertains to any child of the current process. If *pid* is less than
2995 ``-1``, status is requested for any process in the process group ``-pid`` (the
2996 absolute value of *pid*).
2997
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00002998 An :exc:`OSError` is raised with the value of errno when the syscall
2999 returns -1.
3000
Georg Brandl116aa622007-08-15 14:28:22 +00003001 On Windows: Wait for completion of a process given by process handle *pid*, and
3002 return a tuple containing *pid*, and its exit status shifted left by 8 bits
3003 (shifting makes cross-platform use of the function easier). A *pid* less than or
3004 equal to ``0`` has no special meaning on Windows, and raises an exception. The
3005 value of integer *options* has no effect. *pid* can refer to any process whose
3006 id is known, not necessarily a child process. The :func:`spawn` functions called
3007 with :const:`P_NOWAIT` return suitable process handles.
3008
3009
Victor Stinner4195b5c2012-02-08 23:03:19 +01003010.. function:: wait3([options])
Georg Brandl116aa622007-08-15 14:28:22 +00003011
3012 Similar to :func:`waitpid`, except no process id argument is given and a
3013 3-element tuple containing the child's process id, exit status indication, and
3014 resource usage information is returned. Refer to :mod:`resource`.\
3015 :func:`getrusage` for details on resource usage information. The option
3016 argument is the same as that provided to :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003017
Georg Brandl116aa622007-08-15 14:28:22 +00003018 Availability: Unix.
3019
Georg Brandl116aa622007-08-15 14:28:22 +00003020
Victor Stinner4195b5c2012-02-08 23:03:19 +01003021.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00003022
3023 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
3024 process id, exit status indication, and resource usage information is returned.
3025 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage
3026 information. The arguments to :func:`wait4` are the same as those provided to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003027 :func:`waitpid`.
3028
3029 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003030
Georg Brandl116aa622007-08-15 14:28:22 +00003031
3032.. data:: WNOHANG
3033
3034 The option for :func:`waitpid` to return immediately if no child process status
3035 is available immediately. The function returns ``(0, 0)`` in this case.
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.. data:: WCONTINUED
3041
3042 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00003043 from a job control stop since their status was last reported.
3044
3045 Availability: Some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00003046
Georg Brandl116aa622007-08-15 14:28:22 +00003047
3048.. data:: WUNTRACED
3049
3050 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00003051 their current state has not been reported since they were stopped.
3052
3053 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003054
Georg Brandl116aa622007-08-15 14:28:22 +00003055
3056The following functions take a process status code as returned by
3057:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
3058used to determine the disposition of a process.
3059
Georg Brandl116aa622007-08-15 14:28:22 +00003060.. function:: WCOREDUMP(status)
3061
Christian Heimesfaf2f632008-01-06 16:59:19 +00003062 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00003063 return ``False``.
3064
3065 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003066
Georg Brandl116aa622007-08-15 14:28:22 +00003067
3068.. function:: WIFCONTINUED(status)
3069
Christian Heimesfaf2f632008-01-06 16:59:19 +00003070 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003071 otherwise return ``False``.
3072
3073 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003074
Georg Brandl116aa622007-08-15 14:28:22 +00003075
3076.. function:: WIFSTOPPED(status)
3077
Christian Heimesfaf2f632008-01-06 16:59:19 +00003078 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003079 ``False``.
3080
3081 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003082
3083
3084.. function:: WIFSIGNALED(status)
3085
Christian Heimesfaf2f632008-01-06 16:59:19 +00003086 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00003087 ``False``.
3088
3089 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003090
3091
3092.. function:: WIFEXITED(status)
3093
Christian Heimesfaf2f632008-01-06 16:59:19 +00003094 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00003095 otherwise return ``False``.
3096
3097 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003098
3099
3100.. function:: WEXITSTATUS(status)
3101
3102 If ``WIFEXITED(status)`` is true, return the integer parameter to the
3103 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003104
Georg Brandlc575c902008-09-13 17:46:05 +00003105 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003106
3107
3108.. function:: WSTOPSIG(status)
3109
Benjamin Petersonf650e462010-05-06 23:03:05 +00003110 Return the signal which caused the process to stop.
3111
3112 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003113
3114
3115.. function:: WTERMSIG(status)
3116
Benjamin Petersonf650e462010-05-06 23:03:05 +00003117 Return the signal which caused the process to exit.
3118
3119 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003120
3121
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003122Interface to the scheduler
3123--------------------------
3124
3125These functions control how a process is allocated CPU time by the operating
3126system. They are only available on some Unix platforms. For more detailed
3127information, consult your Unix manpages.
3128
3129.. versionadded:: 3.3
3130
3131The following scheduling policies are exposed if they are a supported by the
3132operating system.
3133
3134.. data:: SCHED_OTHER
3135
3136 The default scheduling policy.
3137
3138.. data:: SCHED_BATCH
3139
3140 Scheduling policy for CPU-intensive processes that tries to preserve
3141 interactivity on the rest of the computer.
3142
3143.. data:: SCHED_IDLE
3144
3145 Scheduling policy for extremely low priority background tasks.
3146
3147.. data:: SCHED_SPORADIC
3148
3149 Scheduling policy for sporadic server programs.
3150
3151.. data:: SCHED_FIFO
3152
3153 A First In First Out scheduling policy.
3154
3155.. data:: SCHED_RR
3156
3157 A round-robin scheduling policy.
3158
3159.. data:: SCHED_RESET_ON_FORK
3160
3161 This flag can OR'ed with any other scheduling policy. When a process with
3162 this flag set forks, its child's scheduling policy and priority are reset to
3163 the default.
3164
3165
3166.. class:: sched_param(sched_priority)
3167
3168 This class represents tunable scheduling parameters used in
3169 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3170 :func:`sched_getparam`. It is immutable.
3171
3172 At the moment, there is only one possible parameter:
3173
3174 .. attribute:: sched_priority
3175
3176 The scheduling priority for a scheduling policy.
3177
3178
3179.. function:: sched_get_priority_min(policy)
3180
3181 Get the minimum priority value for *policy*. *policy* is one of the
3182 scheduling policy constants above.
3183
3184
3185.. function:: sched_get_priority_max(policy)
3186
3187 Get the maximum priority value for *policy*. *policy* is one of the
3188 scheduling policy constants above.
3189
3190
3191.. function:: sched_setscheduler(pid, policy, param)
3192
3193 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3194 the calling process. *policy* is one of the scheduling policy constants
3195 above. *param* is a :class:`sched_param` instance.
3196
3197
3198.. function:: sched_getscheduler(pid)
3199
3200 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3201 means the calling process. The result is one of the scheduling policy
3202 constants above.
3203
3204
3205.. function:: sched_setparam(pid, param)
3206
3207 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3208 the calling process. *param* is a :class:`sched_param` instance.
3209
3210
3211.. function:: sched_getparam(pid)
3212
3213 Return the scheduling parameters as a :class:`sched_param` instance for the
3214 process with PID *pid*. A *pid* of 0 means the calling process.
3215
3216
3217.. function:: sched_rr_get_interval(pid)
3218
3219 Return the round-robin quantum in seconds for the process with PID *pid*. A
3220 *pid* of 0 means the calling process.
3221
3222
3223.. function:: sched_yield()
3224
3225 Voluntarily relinquish the CPU.
3226
3227
3228.. class:: cpu_set(ncpus)
3229
3230 :class:`cpu_set` represents a set of CPUs on which a process is eligible to
3231 run. *ncpus* is the number of CPUs the set should describe. Methods on
3232 :class:`cpu_set` allow CPUs to be add or removed.
3233
3234 :class:`cpu_set` supports the AND, OR, and XOR bitwise operations. For
3235 example, given two cpu_sets, ``one`` and ``two``, ``one | two`` returns a
3236 :class:`cpu_set` containing the cpus enabled both in ``one`` and ``two``.
3237
3238 .. method:: set(i)
3239
3240 Enable CPU *i*.
3241
3242 .. method:: clear(i)
3243
3244 Remove CPU *i*.
3245
3246 .. method:: isset(i)
3247
3248 Return ``True`` if CPU *i* is enabled in the set.
3249
3250 .. method:: count()
3251
3252 Return the number of enabled CPUs in the set.
3253
3254 .. method:: zero()
3255
3256 Clear the set completely.
3257
3258
3259.. function:: sched_setaffinity(pid, mask)
3260
3261 Restrict the process with PID *pid* to a set of CPUs. *mask* is a
3262 :class:`cpu_set` instance.
3263
3264
3265.. function:: sched_getaffinity(pid, size)
3266
3267 Return the :class:`cpu_set` the process with PID *pid* is restricted to. The
3268 result will contain *size* CPUs.
3269
3270
Georg Brandl116aa622007-08-15 14:28:22 +00003271.. _os-path:
3272
3273Miscellaneous System Information
3274--------------------------------
3275
3276
3277.. function:: confstr(name)
3278
3279 Return string-valued system configuration values. *name* specifies the
3280 configuration value to retrieve; it may be a string which is the name of a
3281 defined system value; these names are specified in a number of standards (POSIX,
3282 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3283 The names known to the host operating system are given as the keys of the
3284 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003285 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003286
3287 If the configuration value specified by *name* isn't defined, ``None`` is
3288 returned.
3289
3290 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3291 specific value for *name* is not supported by the host system, even if it is
3292 included in ``confstr_names``, an :exc:`OSError` is raised with
3293 :const:`errno.EINVAL` for the error number.
3294
Benjamin Petersonf650e462010-05-06 23:03:05 +00003295 Availability: Unix
3296
Georg Brandl116aa622007-08-15 14:28:22 +00003297
3298.. data:: confstr_names
3299
3300 Dictionary mapping names accepted by :func:`confstr` to the integer values
3301 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003302 determine the set of names known to the system.
3303
3304 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003305
3306
3307.. function:: getloadavg()
3308
Christian Heimesa62da1d2008-01-12 19:39:10 +00003309 Return the number of processes in the system run queue averaged over the last
3310 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003311 unobtainable.
3312
3313 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003314
Georg Brandl116aa622007-08-15 14:28:22 +00003315
3316.. function:: sysconf(name)
3317
3318 Return integer-valued system configuration values. If the configuration value
3319 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3320 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3321 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003322
Georg Brandlc575c902008-09-13 17:46:05 +00003323 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003324
3325
3326.. data:: sysconf_names
3327
3328 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3329 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003330 determine the set of names known to the system.
3331
3332 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003333
Christian Heimesfaf2f632008-01-06 16:59:19 +00003334The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003335are defined for all platforms.
3336
3337Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3338
3339
3340.. data:: curdir
3341
3342 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003343 directory. This is ``'.'`` for Windows and POSIX. Also available via
3344 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003345
3346
3347.. data:: pardir
3348
3349 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003350 directory. This is ``'..'`` for Windows and POSIX. Also available via
3351 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003352
3353
3354.. data:: sep
3355
Georg Brandlc575c902008-09-13 17:46:05 +00003356 The character used by the operating system to separate pathname components.
3357 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3358 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003359 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3360 useful. Also available via :mod:`os.path`.
3361
3362
3363.. data:: altsep
3364
3365 An alternative character used by the operating system to separate pathname
3366 components, or ``None`` if only one separator character exists. This is set to
3367 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3368 :mod:`os.path`.
3369
3370
3371.. data:: extsep
3372
3373 The character which separates the base filename from the extension; for example,
3374 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3375
Georg Brandl116aa622007-08-15 14:28:22 +00003376
3377.. data:: pathsep
3378
3379 The character conventionally used by the operating system to separate search
3380 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3381 Windows. Also available via :mod:`os.path`.
3382
3383
3384.. data:: defpath
3385
3386 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the
3387 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`.
3388
3389
3390.. data:: linesep
3391
3392 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003393 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3394 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3395 *os.linesep* as a line terminator when writing files opened in text mode (the
3396 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003397
3398
3399.. data:: devnull
3400
Georg Brandl850a9902010-05-21 22:04:32 +00003401 The file path of the null device. For example: ``'/dev/null'`` for
3402 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003403
Georg Brandl116aa622007-08-15 14:28:22 +00003404
3405.. _os-miscfunc:
3406
3407Miscellaneous Functions
3408-----------------------
3409
3410
3411.. function:: urandom(n)
3412
3413 Return a string of *n* random bytes suitable for cryptographic use.
3414
3415 This function returns random bytes from an OS-specific randomness source. The
3416 returned data should be unpredictable enough for cryptographic applications,
3417 though its exact quality depends on the OS implementation. On a UNIX-like
3418 system this will query /dev/urandom, and on Windows it will use CryptGenRandom.
3419 If a randomness source is not found, :exc:`NotImplementedError` will be raised.