blob: 59b1d10bafd929a7252c82207c99307ac07b72ae [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
Georg Brandl8ccadaa2012-06-24 12:50:06 +020099.. function:: ctermid()
100
101 Return the filename corresponding to the controlling terminal of the process.
102
103 Availability: Unix.
104
105
Georg Brandl116aa622007-08-15 14:28:22 +0000106.. data:: environ
107
108 A mapping object representing the string environment. For example,
109 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
110 and is equivalent to ``getenv("HOME")`` in C.
111
112 This mapping is captured the first time the :mod:`os` module is imported,
113 typically during Python startup as part of processing :file:`site.py`. Changes
114 to the environment made after this time are not reflected in ``os.environ``,
115 except for changes made by modifying ``os.environ`` directly.
116
117 If the platform supports the :func:`putenv` function, this mapping may be used
118 to modify the environment as well as query the environment. :func:`putenv` will
119 be called automatically when the mapping is modified.
120
Victor Stinner84ae1182010-05-06 22:05:07 +0000121 On Unix, keys and values use :func:`sys.getfilesystemencoding` and
122 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like
123 to use a different encoding.
124
Georg Brandl116aa622007-08-15 14:28:22 +0000125 .. note::
126
127 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
128 to modify ``os.environ``.
129
130 .. note::
131
Georg Brandlc575c902008-09-13 17:46:05 +0000132 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
133 cause memory leaks. Refer to the system documentation for
Georg Brandl60203b42010-10-06 10:11:56 +0000134 :c:func:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000135
136 If :func:`putenv` is not provided, a modified copy of this mapping may be
137 passed to the appropriate process-creation functions to cause child processes
138 to use a modified environment.
139
Georg Brandl9afde1c2007-11-01 20:32:30 +0000140 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000141 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000142 automatically when an item is deleted from ``os.environ``, and when
143 one of the :meth:`pop` or :meth:`clear` methods is called.
144
Georg Brandl116aa622007-08-15 14:28:22 +0000145
Victor Stinner84ae1182010-05-06 22:05:07 +0000146.. data:: environb
147
148 Bytes version of :data:`environ`: a mapping object representing the
149 environment as byte strings. :data:`environ` and :data:`environb` are
150 synchronized (modify :data:`environb` updates :data:`environ`, and vice
151 versa).
152
Victor Stinnerb745a742010-05-18 17:17:23 +0000153 :data:`environb` is only available if :data:`supports_bytes_environ` is
154 True.
Victor Stinner84ae1182010-05-06 22:05:07 +0000155
Benjamin Peterson662c74f2010-05-06 22:09:03 +0000156 .. versionadded:: 3.2
157
Victor Stinner84ae1182010-05-06 22:05:07 +0000158
Georg Brandl116aa622007-08-15 14:28:22 +0000159.. function:: chdir(path)
160 fchdir(fd)
161 getcwd()
162 :noindex:
163
164 These functions are described in :ref:`os-file-dir`.
165
166
Victor Stinnere8d51452010-08-19 01:05:19 +0000167.. function:: fsencode(filename)
Victor Stinner449c4662010-05-08 11:10:09 +0000168
Victor Stinnere8d51452010-08-19 01:05:19 +0000169 Encode *filename* to the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000170 error handler, or ``'strict'`` on Windows; return :class:`bytes` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000171
Antoine Pitroua305ca72010-09-25 22:12:00 +0000172 :func:`fsdecode` is the reverse function.
Victor Stinnere8d51452010-08-19 01:05:19 +0000173
174 .. versionadded:: 3.2
175
176
177.. function:: fsdecode(filename)
178
179 Decode *filename* from the filesystem encoding with ``'surrogateescape'``
Victor Stinner62165d62010-10-09 10:34:37 +0000180 error handler, or ``'strict'`` on Windows; return :class:`str` unchanged.
Victor Stinnere8d51452010-08-19 01:05:19 +0000181
182 :func:`fsencode` is the reverse function.
Victor Stinner449c4662010-05-08 11:10:09 +0000183
184 .. versionadded:: 3.2
185
186
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200187.. function:: getenv(key, default=None)
188
189 Return the value of the environment variable *key* if it exists, or
190 *default* if it doesn't. *key*, *default* and the result are str.
191
192 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding`
193 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you
194 would like to use a different encoding.
195
196 Availability: most flavors of Unix, Windows.
197
198
199.. function:: getenvb(key, default=None)
200
201 Return the value of the environment variable *key* if it exists, or
202 *default* if it doesn't. *key*, *default* and the result are bytes.
203
204 Availability: most flavors of Unix.
205
206 .. versionadded:: 3.2
207
208
Gregory P. Smithb6e8c7e2010-02-27 07:22:22 +0000209.. function:: get_exec_path(env=None)
210
211 Returns the list of directories that will be searched for a named
212 executable, similar to a shell, when launching a process.
213 *env*, when specified, should be an environment variable dictionary
214 to lookup the PATH in.
215 By default, when *env* is None, :data:`environ` is used.
216
217 .. versionadded:: 3.2
218
219
Georg Brandl116aa622007-08-15 14:28:22 +0000220.. function:: getegid()
221
222 Return the effective group id of the current process. This corresponds to the
Benjamin Petersonf650e462010-05-06 23:03:05 +0000223 "set id" bit on the file being executed in the current process.
224
225 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000226
227
228.. function:: geteuid()
229
230 .. index:: single: user; effective id
231
Benjamin Petersonf650e462010-05-06 23:03:05 +0000232 Return the current process's effective user id.
233
234 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000235
236
237.. function:: getgid()
238
239 .. index:: single: process; group
240
Benjamin Petersonf650e462010-05-06 23:03:05 +0000241 Return the real group id of the current process.
242
243 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000244
245
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +0200246.. function:: getgrouplist(user, group)
247
248 Return list of group ids that *user* belongs to. If *group* is not in the
249 list, it is included; typically, *group* is specified as the group ID
250 field from the password record for *user*.
251
252 Availability: Unix.
253
254 .. versionadded:: 3.3
255
256
Georg Brandl116aa622007-08-15 14:28:22 +0000257.. function:: getgroups()
258
259 Return list of supplemental group ids associated with the current process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000260
Georg Brandl116aa622007-08-15 14:28:22 +0000261 Availability: Unix.
262
Ned Deily2e209682012-04-30 11:14:02 -0700263 .. note:: On Mac OS X, :func:`getgroups` behavior differs somewhat from
264 other Unix platforms. If the Python interpreter was built with a
265 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns
266 the list of effective group ids associated with the current user process;
267 this list is limited to a system-defined number of entries, typically 16,
268 and may be modified by calls to :func:`setgroups` if suitably privileged.
269 If built with a deployment target greater than :const:`10.5`,
270 :func:`getgroups` returns the current group access list for the user
271 associated with the effective user id of the process; the group access
272 list may change over the lifetime of the process, it is not affected by
273 calls to :func:`setgroups`, and its length is not limited to 16. The
274 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be
275 obtained with :func:`sysconfig.get_config_var`.
276
Georg Brandl116aa622007-08-15 14:28:22 +0000277
278.. function:: getlogin()
279
280 Return the name of the user logged in on the controlling terminal of the
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000281 process. For most purposes, it is more useful to use the environment variables
282 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, or
Georg Brandl116aa622007-08-15 14:28:22 +0000283 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently
Benjamin Petersonf650e462010-05-06 23:03:05 +0000284 effective user id.
285
Brian Curtine8e4b3b2010-09-23 20:04:14 +0000286 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000287
288
289.. function:: getpgid(pid)
290
291 Return the process group id of the process with process id *pid*. If *pid* is 0,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000292 the process group id of the current process is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000293
Benjamin Petersonf650e462010-05-06 23:03:05 +0000294 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000295
296.. function:: getpgrp()
297
298 .. index:: single: process; group
299
Benjamin Petersonf650e462010-05-06 23:03:05 +0000300 Return the id of the current process group.
301
302 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000303
304
305.. function:: getpid()
306
307 .. index:: single: process; id
308
Benjamin Petersonf650e462010-05-06 23:03:05 +0000309 Return the current process id.
310
311 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000312
313
314.. function:: getppid()
315
316 .. index:: single: process; id of parent
317
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000318 Return the parent's process id. When the parent process has exited, on Unix
319 the id returned is the one of the init process (1), on Windows it is still
320 the same id, which may be already reused by another process.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000321
Georg Brandl8a5555f2012-06-24 13:29:09 +0200322 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000323
Amaury Forgeot d'Arc4b6fdf32010-09-07 21:31:17 +0000324 .. versionchanged:: 3.2
325 Added support for Windows.
Georg Brandl1b83a452009-11-28 11:12:26 +0000326
Georg Brandl8a5555f2012-06-24 13:29:09 +0200327
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000328.. function:: getpriority(which, who)
329
330 .. index:: single: process; scheduling priority
331
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200332 Get program scheduling priority. The value *which* is one of
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000333 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
334 is interpreted relative to *which* (a process identifier for
335 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200336 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000337 (respectively) the calling process, the process group of the calling process,
338 or the real user ID of the calling process.
339
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200340 Availability: Unix.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000341
342 .. versionadded:: 3.3
343
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200344
345.. data:: PRIO_PROCESS
346 PRIO_PGRP
347 PRIO_USER
348
349 Parameters for the :func:`getpriority` and :func:`setpriority` functions.
350
351 Availability: Unix.
352
353 .. versionadded:: 3.3
354
355
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000356.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000357
358 Return a tuple (ruid, euid, suid) denoting the current process's
Benjamin Petersonf650e462010-05-06 23:03:05 +0000359 real, effective, and saved user ids.
360
361 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000362
Georg Brandl1b83a452009-11-28 11:12:26 +0000363 .. versionadded:: 3.2
364
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000365
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000366.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000367
368 Return a tuple (rgid, egid, sgid) denoting the current process's
Georg Brandla9b51d22010-09-05 17:07:12 +0000369 real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000370
371 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000372
Georg Brandl1b83a452009-11-28 11:12:26 +0000373 .. versionadded:: 3.2
374
Georg Brandl116aa622007-08-15 14:28:22 +0000375
376.. function:: getuid()
377
378 .. index:: single: user; id
379
Benjamin Petersonf650e462010-05-06 23:03:05 +0000380 Return the current process's user id.
381
382 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000383
384
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200385.. function:: initgroups(username, gid)
Georg Brandl116aa622007-08-15 14:28:22 +0000386
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200387 Call the system initgroups() to initialize the group access list with all of
388 the groups of which the specified username is a member, plus the specified
389 group id.
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000390
391 Availability: Unix.
392
Georg Brandl8ccadaa2012-06-24 12:50:06 +0200393 .. versionadded:: 3.2
394
Georg Brandl116aa622007-08-15 14:28:22 +0000395
Georg Brandl18244152009-09-02 20:34:52 +0000396.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000397
398 .. index:: single: environment variables; setting
399
Georg Brandl18244152009-09-02 20:34:52 +0000400 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000401 changes to the environment affect subprocesses started with :func:`os.system`,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000402 :func:`popen` or :func:`fork` and :func:`execv`.
403
404 Availability: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000405
406 .. note::
407
Georg Brandlc575c902008-09-13 17:46:05 +0000408 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
409 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000410
411 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
412 automatically translated into corresponding calls to :func:`putenv`; however,
413 calls to :func:`putenv` don't update ``os.environ``, so it is actually
414 preferable to assign to items of ``os.environ``.
415
416
417.. function:: setegid(egid)
418
Benjamin Petersonf650e462010-05-06 23:03:05 +0000419 Set the current process's effective group id.
420
421 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000422
423
424.. function:: seteuid(euid)
425
Benjamin Petersonf650e462010-05-06 23:03:05 +0000426 Set the current process's effective user id.
427
428 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000429
430
431.. function:: setgid(gid)
432
Benjamin Petersonf650e462010-05-06 23:03:05 +0000433 Set the current process' group id.
434
435 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000436
437
438.. function:: setgroups(groups)
439
440 Set the list of supplemental group ids associated with the current process to
441 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000442 identifying a group. This operation is typically available only to the superuser.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000443
Georg Brandl116aa622007-08-15 14:28:22 +0000444 Availability: Unix.
445
Ned Deily2e209682012-04-30 11:14:02 -0700446 .. note:: On Mac OS X, the length of *groups* may not exceed the
447 system-defined maximum number of effective group ids, typically 16.
448 See the documentation for :func:`getgroups` for cases where it may not
449 return the same group list set by calling setgroups().
Georg Brandl116aa622007-08-15 14:28:22 +0000450
451.. function:: setpgrp()
452
Georg Brandl60203b42010-10-06 10:11:56 +0000453 Call the system call :c:func:`setpgrp` or :c:func:`setpgrp(0, 0)` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000454 which version is implemented (if any). See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000455
Georg Brandl116aa622007-08-15 14:28:22 +0000456 Availability: Unix.
457
458
459.. function:: setpgid(pid, pgrp)
460
Georg Brandl60203b42010-10-06 10:11:56 +0000461 Call the system call :c:func:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000462 process with id *pid* to the process group with id *pgrp*. See the Unix manual
Benjamin Petersonf650e462010-05-06 23:03:05 +0000463 for the semantics.
464
465 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000466
467
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000468.. function:: setpriority(which, who, priority)
469
470 .. index:: single: process; scheduling priority
471
472 Set program scheduling priority. The value *which* is one of
473 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who*
474 is interpreted relative to *which* (a process identifier for
475 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a
476 user ID for :const:`PRIO_USER`). A zero value for *who* denotes
477 (respectively) the calling process, the process group of the calling process,
478 or the real user ID of the calling process.
479 *priority* is a value in the range -20 to 19. The default priority is 0;
480 lower priorities cause more favorable scheduling.
481
482 Availability: Unix
483
484 .. versionadded:: 3.3
485
486
Georg Brandl116aa622007-08-15 14:28:22 +0000487.. function:: setregid(rgid, egid)
488
Benjamin Petersonf650e462010-05-06 23:03:05 +0000489 Set the current process's real and effective group ids.
490
491 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000492
Georg Brandl1b83a452009-11-28 11:12:26 +0000493
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000494.. function:: setresgid(rgid, egid, sgid)
495
496 Set the current process's real, effective, and saved group ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000497
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000498 Availability: Unix.
499
Georg Brandl1b83a452009-11-28 11:12:26 +0000500 .. versionadded:: 3.2
501
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000502
503.. function:: setresuid(ruid, euid, suid)
504
505 Set the current process's real, effective, and saved user ids.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000506
Georg Brandl6faee4e2010-09-21 14:48:28 +0000507 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000508
Georg Brandl1b83a452009-11-28 11:12:26 +0000509 .. versionadded:: 3.2
510
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000511
512.. function:: setreuid(ruid, euid)
513
Benjamin Petersonf650e462010-05-06 23:03:05 +0000514 Set the current process's real and effective user ids.
515
516 Availability: Unix.
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000517
Georg Brandl116aa622007-08-15 14:28:22 +0000518
519.. function:: getsid(pid)
520
Georg Brandl60203b42010-10-06 10:11:56 +0000521 Call the system call :c:func:`getsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000522
Georg Brandl116aa622007-08-15 14:28:22 +0000523 Availability: Unix.
524
Georg Brandl116aa622007-08-15 14:28:22 +0000525
526.. function:: setsid()
527
Georg Brandl60203b42010-10-06 10:11:56 +0000528 Call the system call :c:func:`setsid`. See the Unix manual for the semantics.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000529
Georg Brandl116aa622007-08-15 14:28:22 +0000530 Availability: Unix.
531
532
533.. function:: setuid(uid)
534
535 .. index:: single: user; id, setting
536
Benjamin Petersonf650e462010-05-06 23:03:05 +0000537 Set the current process's user id.
538
539 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000540
Georg Brandl116aa622007-08-15 14:28:22 +0000541
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000542.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000543.. function:: strerror(code)
544
545 Return the error message corresponding to the error code in *code*.
Georg Brandl60203b42010-10-06 10:11:56 +0000546 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown
Benjamin Petersonf650e462010-05-06 23:03:05 +0000547 error number, :exc:`ValueError` is raised.
548
549 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000550
551
Victor Stinnerb745a742010-05-18 17:17:23 +0000552.. data:: supports_bytes_environ
553
554 True if the native OS type of the environment is bytes (eg. False on
555 Windows).
556
Victor Stinner8fddc9e2010-05-18 17:24:09 +0000557 .. versionadded:: 3.2
558
Victor Stinnerb745a742010-05-18 17:17:23 +0000559
Georg Brandl116aa622007-08-15 14:28:22 +0000560.. function:: umask(mask)
561
Benjamin Petersonf650e462010-05-06 23:03:05 +0000562 Set the current numeric umask and return the previous umask.
563
564 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000565
566
567.. function:: uname()
568
569 .. index::
570 single: gethostname() (in module socket)
571 single: gethostbyaddr() (in module socket)
572
573 Return a 5-tuple containing information identifying the current operating
574 system. The tuple contains 5 strings: ``(sysname, nodename, release, version,
575 machine)``. Some systems truncate the nodename to 8 characters or to the
576 leading component; a better way to get the hostname is
577 :func:`socket.gethostname` or even
Benjamin Petersonf650e462010-05-06 23:03:05 +0000578 ``socket.gethostbyaddr(socket.gethostname())``.
579
580 Availability: recent flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000581
582
Georg Brandl18244152009-09-02 20:34:52 +0000583.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000584
585 .. index:: single: environment variables; deleting
586
Georg Brandl18244152009-09-02 20:34:52 +0000587 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000588 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
Benjamin Petersonf650e462010-05-06 23:03:05 +0000589 :func:`fork` and :func:`execv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000590
591 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
592 automatically translated into a corresponding call to :func:`unsetenv`; however,
593 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
594 preferable to delete items of ``os.environ``.
595
Benjamin Petersonf650e462010-05-06 23:03:05 +0000596 Availability: most flavors of Unix, Windows.
597
Georg Brandl116aa622007-08-15 14:28:22 +0000598
599.. _os-newstreams:
600
601File Object Creation
602--------------------
603
Georg Brandla570e982012-06-24 13:26:22 +0200604This function creates new :term:`file objects <file object>`. (See also
Georg Brandlb2462e22012-06-24 13:24:56 +0200605:func:`~os.open` for opening file descriptors.)
Georg Brandl116aa622007-08-15 14:28:22 +0000606
607
Petri Lehtinen1a01ebc2012-05-24 21:44:07 +0300608.. function:: fdopen(fd, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000609
Georg Brandlb2462e22012-06-24 13:24:56 +0200610 Return an open file object connected to the file descriptor *fd*. This is an
611 alias of the :func:`open` built-in function and accepts the same arguments.
612 The only difference is that the first argument of :func:`fdopen` must always
613 be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000614
Georg Brandl116aa622007-08-15 14:28:22 +0000615
Georg Brandl116aa622007-08-15 14:28:22 +0000616.. _os-fd-ops:
617
618File Descriptor Operations
619--------------------------
620
621These functions operate on I/O streams referenced using file descriptors.
622
623File descriptors are small integers corresponding to a file that has been opened
624by the current process. For example, standard input is usually file descriptor
6250, standard output is 1, and standard error is 2. Further files opened by a
626process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
627is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
628by file descriptors.
629
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000630The :meth:`~file.fileno` method can be used to obtain the file descriptor
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000631associated with a :term:`file object` when required. Note that using the file
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000632descriptor directly will bypass the file object methods, ignoring aspects such
633as internal buffering of data.
Georg Brandl116aa622007-08-15 14:28:22 +0000634
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000635
Georg Brandl116aa622007-08-15 14:28:22 +0000636.. function:: close(fd)
637
Benjamin Petersonf650e462010-05-06 23:03:05 +0000638 Close file descriptor *fd*.
639
640 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000641
642 .. note::
643
644 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000645 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000646 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000647 :func:`fdopen`, use its :meth:`~file.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000648
649
Christian Heimesfdab48e2008-01-20 09:06:41 +0000650.. function:: closerange(fd_low, fd_high)
651
652 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200653 ignoring errors. Equivalent to (but much faster than)::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000654
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000655 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000656 try:
657 os.close(fd)
658 except OSError:
659 pass
660
Benjamin Petersonf650e462010-05-06 23:03:05 +0000661 Availability: Unix, Windows.
662
Christian Heimesfdab48e2008-01-20 09:06:41 +0000663
Georg Brandl81f11302007-12-21 08:45:42 +0000664.. function:: device_encoding(fd)
665
666 Return a string describing the encoding of the device associated with *fd*
667 if it is connected to a terminal; else return :const:`None`.
668
669
Georg Brandl116aa622007-08-15 14:28:22 +0000670.. function:: dup(fd)
671
Benjamin Petersonf650e462010-05-06 23:03:05 +0000672 Return a duplicate of file descriptor *fd*.
673
674 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000675
676
677.. function:: dup2(fd, fd2)
678
679 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000680
Georg Brandlc575c902008-09-13 17:46:05 +0000681 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000682
683
Christian Heimes4e30a842007-11-30 22:12:06 +0000684.. function:: fchmod(fd, mode)
685
Georg Brandlb9df00c2012-06-24 12:38:14 +0200686 Change the mode of the file given by *fd* to the numeric *mode*. See the
687 docs for :func:`chmod` for possible values of *mode*. From Python 3.3, this
688 is equivalent to ``os.chmod(fd, mode)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000689
690 Availability: Unix.
Christian Heimes4e30a842007-11-30 22:12:06 +0000691
692
693.. function:: fchown(fd, uid, gid)
694
695 Change the owner and group id of the file given by *fd* to the numeric *uid*
Georg Brandlb9df00c2012-06-24 12:38:14 +0200696 and *gid*. To leave one of the ids unchanged, set it to -1. See
697 :func:`chown`. From Python 3.3, this is equivalent to ``os.chown(fd, uid,
698 gid)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000699
Christian Heimes4e30a842007-11-30 22:12:06 +0000700 Availability: Unix.
701
702
Georg Brandl116aa622007-08-15 14:28:22 +0000703.. function:: fdatasync(fd)
704
705 Force write of file with filedescriptor *fd* to disk. Does not force update of
Benjamin Petersonf650e462010-05-06 23:03:05 +0000706 metadata.
707
708 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000709
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000710 .. note::
711 This function is not available on MacOS.
712
Georg Brandl116aa622007-08-15 14:28:22 +0000713
714.. function:: fpathconf(fd, name)
715
716 Return system configuration information relevant to an open file. *name*
717 specifies the configuration value to retrieve; it may be a string which is the
718 name of a defined system value; these names are specified in a number of
719 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
720 additional names as well. The names known to the host operating system are
721 given in the ``pathconf_names`` dictionary. For configuration variables not
722 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +0000723
724 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
725 specific value for *name* is not supported by the host system, even if it is
726 included in ``pathconf_names``, an :exc:`OSError` is raised with
727 :const:`errno.EINVAL` for the error number.
728
Georg Brandl306336b2012-06-24 12:55:33 +0200729 From Python 3.3, this is equivalent to ``os.pathconf(fd, name)``.
730
Benjamin Petersonf650e462010-05-06 23:03:05 +0000731 Availability: Unix.
732
Georg Brandl116aa622007-08-15 14:28:22 +0000733
Victor Stinner4195b5c2012-02-08 23:03:19 +0100734.. function:: fstat(fd)
Georg Brandl116aa622007-08-15 14:28:22 +0000735
Georg Brandlb9df00c2012-06-24 12:38:14 +0200736 Return status for file descriptor *fd*, like :func:`~os.stat`. From Python
737 3.3, this is equivalent to ``os.stat(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000738
739 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000740
Georg Brandlb1a1ac02012-06-24 11:54:07 +0200741
Georg Brandl116aa622007-08-15 14:28:22 +0000742.. function:: fstatvfs(fd)
743
Georg Brandlb9df00c2012-06-24 12:38:14 +0200744 Return information about the filesystem containing the file associated with
745 file descriptor *fd*, like :func:`statvfs`. From Python 3.3, this is
746 equivalent to ``os.statvfs(fd)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000747
748 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000749
750
751.. function:: fsync(fd)
752
753 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
Georg Brandl60203b42010-10-06 10:11:56 +0000754 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000755
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000756 If you're starting with a buffered Python :term:`file object` *f*, first do
757 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal
758 buffers associated with *f* are written to disk.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000759
Georg Brandl8a5555f2012-06-24 13:29:09 +0200760 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000761
762
763.. function:: ftruncate(fd, length)
764
Georg Brandl306336b2012-06-24 12:55:33 +0200765 Truncate the file corresponding to file descriptor *fd*, so that it is at
766 most *length* bytes in size. From Python 3.3, this is equivalent to
767 ``os.truncate(fd, length)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000768
769 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000770
771
772.. function:: isatty(fd)
773
774 Return ``True`` if the file descriptor *fd* is open and connected to a
Benjamin Petersonf650e462010-05-06 23:03:05 +0000775 tty(-like) device, else ``False``.
776
777 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000778
779
Ross Lagerwall7807c352011-03-17 20:20:30 +0200780.. function:: lockf(fd, cmd, len)
781
782 Apply, test or remove a POSIX lock on an open file descriptor.
783 *fd* is an open file descriptor.
784 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`,
785 :data:`F_ULOCK` or :data:`F_TEST`.
786 *len* specifies the section of the file to lock.
787
788 Availability: Unix.
789
790 .. versionadded:: 3.3
791
792
793.. data:: F_LOCK
794 F_TLOCK
795 F_ULOCK
796 F_TEST
797
798 Flags that specify what action :func:`lockf` will take.
799
800 Availability: Unix.
801
802 .. versionadded:: 3.3
803
Georg Brandlf62445a2012-06-24 13:31:20 +0200804
Georg Brandl116aa622007-08-15 14:28:22 +0000805.. function:: lseek(fd, pos, how)
806
Christian Heimesfaf2f632008-01-06 16:59:19 +0000807 Set the current position of file descriptor *fd* to position *pos*, modified
808 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
809 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
810 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
Victor Stinnere83f8992011-12-17 23:15:09 +0100811 the file. Return the new cursor position in bytes, starting from the beginning.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000812
813 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000814
815
Georg Brandl8569e582010-05-19 20:57:08 +0000816.. data:: SEEK_SET
817 SEEK_CUR
818 SEEK_END
819
820 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandl8a5555f2012-06-24 13:29:09 +0200821 respectively.
822
823 Availability: Unix, Windows.
Georg Brandl8569e582010-05-19 20:57:08 +0000824
Jesus Cea94363612012-06-22 18:32:07 +0200825 .. versionadded:: 3.3
826 Some operating systems could support additional values, like
827 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`.
828
Georg Brandl8569e582010-05-19 20:57:08 +0000829
Larry Hastings9cf065c2012-06-22 16:30:09 -0700830.. function:: open(file, flags, mode=0o777, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000831
Georg Brandlf4a41232008-05-26 17:55:52 +0000832 Open the file *file* and set various flags according to *flags* and possibly
Larry Hastings9cf065c2012-06-22 16:30:09 -0700833 its mode according to *mode*. When computing *mode*, the current umask value
834 is first masked out. Return the file descriptor for the newly opened file.
Georg Brandl116aa622007-08-15 14:28:22 +0000835
836 For a description of the flag and mode values, see the C run-time documentation;
837 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
Georg Brandl8569e582010-05-19 20:57:08 +0000838 this module too (see :ref:`open-constants`). In particular, on Windows adding
839 :const:`O_BINARY` is needed to open files in binary mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000840
Georg Brandl50c40002012-06-24 11:45:20 +0200841 This function can support :ref:`paths relative to directory descriptors
842 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -0700843
Benjamin Petersonf650e462010-05-06 23:03:05 +0000844 Availability: Unix, Windows.
845
Georg Brandl116aa622007-08-15 14:28:22 +0000846 .. note::
847
Georg Brandl502d9a52009-07-26 15:02:41 +0000848 This function is intended for low-level I/O. For normal usage, use the
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000849 built-in function :func:`open`, which returns a :term:`file object` with
Jeroen Ruigrok van der Werven9c558bc2010-07-13 14:47:01 +0000850 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000851 wrap a file descriptor in a file object, use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000852
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000853 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -0700854 The *dir_fd* argument.
Antoine Pitrouf65132d2011-02-25 23:25:17 +0000855
856
Georg Brandl116aa622007-08-15 14:28:22 +0000857.. function:: openpty()
858
859 .. index:: module: pty
860
861 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
862 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Benjamin Petersonf650e462010-05-06 23:03:05 +0000863 approach, use the :mod:`pty` module.
864
865 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000866
867
868.. function:: pipe()
869
870 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Benjamin Petersonf650e462010-05-06 23:03:05 +0000871 and writing, respectively.
872
873 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000874
875
Charles-François Natali368f34b2011-06-06 19:49:47 +0200876.. function:: pipe2(flags)
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200877
878 Create a pipe with *flags* set atomically.
Charles-François Natali368f34b2011-06-06 19:49:47 +0200879 *flags* can be constructed by ORing together one or more of these values:
880 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
Charles-François Natalidaafdd52011-05-29 20:07:40 +0200881 Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
882 respectively.
883
884 Availability: some flavors of Unix.
885
886 .. versionadded:: 3.3
887
888
Ross Lagerwall7807c352011-03-17 20:20:30 +0200889.. function:: posix_fallocate(fd, offset, len)
890
891 Ensures that enough disk space is allocated for the file specified by *fd*
892 starting from *offset* and continuing for *len* bytes.
893
894 Availability: Unix.
895
896 .. versionadded:: 3.3
897
898
899.. function:: posix_fadvise(fd, offset, len, advice)
900
901 Announces an intention to access data in a specific pattern thus allowing
902 the kernel to make optimizations.
903 The advice applies to the region of the file specified by *fd* starting at
904 *offset* and continuing for *len* bytes.
905 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`,
906 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`,
907 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`.
908
909 Availability: Unix.
910
911 .. versionadded:: 3.3
912
913
914.. data:: POSIX_FADV_NORMAL
915 POSIX_FADV_SEQUENTIAL
916 POSIX_FADV_RANDOM
917 POSIX_FADV_NOREUSE
918 POSIX_FADV_WILLNEED
919 POSIX_FADV_DONTNEED
920
921 Flags that can be used in *advice* in :func:`posix_fadvise` that specify
922 the access pattern that is likely to be used.
923
924 Availability: Unix.
925
926 .. versionadded:: 3.3
927
928
929.. function:: pread(fd, buffersize, offset)
930
931 Read from a file descriptor, *fd*, at a position of *offset*. It will read up
932 to *buffersize* number of bytes. The file offset remains unchanged.
933
934 Availability: Unix.
935
936 .. versionadded:: 3.3
937
938
939.. function:: pwrite(fd, string, offset)
940
941 Write *string* to a file descriptor, *fd*, from *offset*, leaving the file
942 offset unchanged.
943
944 Availability: Unix.
945
946 .. versionadded:: 3.3
947
948
Georg Brandl116aa622007-08-15 14:28:22 +0000949.. function:: read(fd, n)
950
Georg Brandlb90be692009-07-29 16:14:16 +0000951 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +0000952 bytes read. If the end of the file referred to by *fd* has been reached, an
Benjamin Petersonf650e462010-05-06 23:03:05 +0000953 empty bytes object is returned.
954
955 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000956
957 .. note::
958
959 This function is intended for low-level I/O and must be applied to a file
Georg Brandlb2462e22012-06-24 13:24:56 +0200960 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a
961 "file object" returned by the built-in function :func:`open` or by
962 :func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its
963 :meth:`~file.read` or :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000964
965
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000966.. function:: sendfile(out, in, offset, nbytes)
967 sendfile(out, in, offset, nbytes, headers=None, trailers=None, flags=0)
968
969 Copy *nbytes* bytes from file descriptor *in* to file descriptor *out*
970 starting at *offset*.
971 Return the number of bytes sent. When EOF is reached return 0.
972
973 The first function notation is supported by all platforms that define
974 :func:`sendfile`.
975
976 On Linux, if *offset* is given as ``None``, the bytes are read from the
977 current position of *in* and the position of *in* is updated.
978
979 The second case may be used on Mac OS X and FreeBSD where *headers* and
980 *trailers* are arbitrary sequences of buffers that are written before and
981 after the data from *in* is written. It returns the same as the first case.
982
983 On Mac OS X and FreeBSD, a value of 0 for *nbytes* specifies to send until
984 the end of *in* is reached.
985
986 On Solaris, *out* may be the file descriptor of a regular file or the file
987 descriptor of a socket. On all other platforms, *out* must be the file
988 descriptor of an open socket.
989
990 Availability: Unix.
991
992 .. versionadded:: 3.3
993
994
995.. data:: SF_NODISKIO
996 SF_MNOWAIT
997 SF_SYNC
998
999 Parameters to the :func:`sendfile` function, if the implementation supports
1000 them.
1001
1002 Availability: Unix.
1003
1004 .. versionadded:: 3.3
1005
1006
Ross Lagerwall7807c352011-03-17 20:20:30 +02001007.. function:: readv(fd, buffers)
1008
1009 Read from a file descriptor into a number of writable buffers. *buffers* is
1010 an arbitrary sequence of writable buffers. Returns the total number of bytes
1011 read.
1012
1013 Availability: Unix.
1014
1015 .. versionadded:: 3.3
1016
1017
Georg Brandl116aa622007-08-15 14:28:22 +00001018.. function:: tcgetpgrp(fd)
1019
1020 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonf650e462010-05-06 23:03:05 +00001021 file descriptor as returned by :func:`os.open`).
1022
1023 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001024
1025
1026.. function:: tcsetpgrp(fd, pg)
1027
1028 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonf650e462010-05-06 23:03:05 +00001029 descriptor as returned by :func:`os.open`) to *pg*.
1030
1031 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001032
1033
1034.. function:: ttyname(fd)
1035
1036 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +00001037 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Benjamin Petersonf650e462010-05-06 23:03:05 +00001038 exception is raised.
1039
1040 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001041
1042
1043.. function:: write(fd, str)
1044
Georg Brandlb90be692009-07-29 16:14:16 +00001045 Write the bytestring in *str* to file descriptor *fd*. Return the number of
Benjamin Petersonf650e462010-05-06 23:03:05 +00001046 bytes actually written.
1047
1048 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001049
1050 .. note::
1051
1052 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001053 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +00001054 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001055 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
1056 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001057
Georg Brandl8569e582010-05-19 20:57:08 +00001058
Ross Lagerwall7807c352011-03-17 20:20:30 +02001059.. function:: writev(fd, buffers)
1060
Ezio Melottif1064492011-10-19 11:06:26 +03001061 Write the contents of *buffers* to file descriptor *fd*, where *buffers*
Ross Lagerwall7807c352011-03-17 20:20:30 +02001062 is an arbitrary sequence of buffers.
1063 Returns the total number of bytes written.
1064
1065 Availability: Unix.
1066
1067 .. versionadded:: 3.3
1068
1069
Georg Brandl8569e582010-05-19 20:57:08 +00001070.. _open-constants:
1071
1072``open()`` flag constants
1073~~~~~~~~~~~~~~~~~~~~~~~~~
1074
Georg Brandlaf265f42008-12-07 15:06:20 +00001075The following constants are options for the *flags* parameter to the
Benjamin Petersonfa0d7032009-06-01 22:42:33 +00001076:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandlaf265f42008-12-07 15:06:20 +00001077``|``. Some of them are not available on all platforms. For descriptions of
1078their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmanneb097fc2009-09-20 20:56:56 +00001079or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001080
1081
1082.. data:: O_RDONLY
1083 O_WRONLY
1084 O_RDWR
1085 O_APPEND
1086 O_CREAT
1087 O_EXCL
1088 O_TRUNC
1089
Georg Brandlaf265f42008-12-07 15:06:20 +00001090 These constants are available on Unix and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001091
1092
1093.. data:: O_DSYNC
1094 O_RSYNC
1095 O_SYNC
1096 O_NDELAY
1097 O_NONBLOCK
1098 O_NOCTTY
1099 O_SHLOCK
1100 O_EXLOCK
Charles-François Natali1e045b12011-05-22 20:42:32 +02001101 O_CLOEXEC
Georg Brandl116aa622007-08-15 14:28:22 +00001102
Georg Brandlaf265f42008-12-07 15:06:20 +00001103 These constants are only available on Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001104
Victor Stinnere3455c02011-10-20 00:46:21 +02001105 .. versionchanged:: 3.3
1106 Add :data:`O_CLOEXEC` constant.
Georg Brandl116aa622007-08-15 14:28:22 +00001107
1108.. data:: O_BINARY
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001109 O_NOINHERIT
Georg Brandl116aa622007-08-15 14:28:22 +00001110 O_SHORT_LIVED
1111 O_TEMPORARY
1112 O_RANDOM
1113 O_SEQUENTIAL
1114 O_TEXT
1115
Georg Brandlaf265f42008-12-07 15:06:20 +00001116 These constants are only available on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001117
1118
Alexandre Vassalottibee32532008-05-16 18:15:12 +00001119.. data:: O_ASYNC
1120 O_DIRECT
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001121 O_DIRECTORY
1122 O_NOFOLLOW
1123 O_NOATIME
1124
Georg Brandlaf265f42008-12-07 15:06:20 +00001125 These constants are GNU extensions and not present if they are not defined by
1126 the C library.
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00001127
1128
Victor Stinner8b905bd2011-10-25 13:34:04 +02001129.. data:: RTLD_LAZY
1130 RTLD_NOW
1131 RTLD_GLOBAL
1132 RTLD_LOCAL
1133 RTLD_NODELETE
1134 RTLD_NOLOAD
1135 RTLD_DEEPBIND
1136
1137 See the Unix manual page :manpage:`dlopen(3)`.
1138
1139 .. versionadded:: 3.3
1140
1141
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001142.. _terminal-size:
1143
1144Querying the size of a terminal
1145~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1146
1147.. versionadded:: 3.3
1148
1149.. function:: get_terminal_size(fd=STDOUT_FILENO)
1150
1151 Return the size of the terminal window as ``(columns, lines)``,
1152 tuple of type :class:`terminal_size`.
1153
1154 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard
1155 output) specifies which file descriptor should be queried.
1156
1157 If the file descriptor is not connected to a terminal, an :exc:`OSError`
1158 is thrown.
1159
1160 :func:`shutil.get_terminal_size` is the high-level function which
1161 should normally be used, ``os.get_terminal_size`` is the low-level
1162 implementation.
1163
1164 Availability: Unix, Windows.
1165
1166.. class:: terminal_size(tuple)
1167
1168 A tuple of ``(columns, lines)`` for holding terminal window size.
1169
1170 .. attribute:: columns
1171
1172 Width of the terminal window in characters.
1173
1174 .. attribute:: lines
1175
1176 Height of the terminal window in characters.
1177
1178
Georg Brandl116aa622007-08-15 14:28:22 +00001179.. _os-file-dir:
1180
1181Files and Directories
1182---------------------
1183
Georg Brandl50c40002012-06-24 11:45:20 +02001184On some Unix platforms, many of these functions support one or more of these
1185features:
1186
1187.. _path_fd:
1188
1189* For some functions, the *path* argument can be not only a string giving a path
1190 name, but also a file descriptor. The function will then operate on the file
1191 referred to by the descriptor. (For POSIX systems, this will use the ``f...``
1192 versions of the function.)
1193
1194 You can check whether or not *path* can be specified as a file descriptor on
1195 your platform using :data:`os.supports_fd`. If it is unavailable, using it
1196 will raise a :exc:`NotImplementedError`.
1197
1198 If the function also supports *dir_fd* or *follow_symlinks* arguments, it is
1199 an error to specify one of those when supplying *path* as a file descriptor.
1200
1201.. _dir_fd:
1202
1203* For functions with a *dir_fd* parameter: If *dir_fd* is not ``None``, it
1204 should be a file descriptor referring to a directory, and the path to operate
1205 on should be relative; path will then be relative to that directory. If the
1206 path is absolute, *dir_fd* is ignored. (For POSIX systems, this will use the
1207 ``f...at`` versions of the function.)
1208
1209 You can check whether or not *dir_fd* is supported on your platform using
1210 :data:`os.supports_dir_fd`. If it is unavailable, using it will raise a
1211 :exc:`NotImplementedError`.
1212
1213.. _follow_symlinks:
1214
1215* For functions ith a *follow_symlinks* parameter: If *follow_symlinks* is
1216 ``False``, and the last element of the path to operate on is a symbolic link,
1217 the function will operate on the symbolic link itself instead of the file the
1218 link points to. (For POSIX systems, this will use the ``l...`` versions of
1219 the function.)
1220
1221 You can check whether or not *follow_symlinks* is supported on your platform
1222 using :data:`os.supports_follow_symlinks`. If it is unavailable, using it
1223 will raise a :exc:`NotImplementedError`.
1224
1225
1226
Larry Hastings9cf065c2012-06-22 16:30:09 -07001227.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001228
1229 Use the real uid/gid to test for access to *path*. Note that most operations
1230 will use the effective uid/gid, therefore this routine can be used in a
1231 suid/sgid environment to test if the invoking user has the specified access to
1232 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
1233 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
1234 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
1235 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Benjamin Petersonf650e462010-05-06 23:03:05 +00001236 information.
1237
Georg Brandl50c40002012-06-24 11:45:20 +02001238 This function can support specifying :ref:`paths relative to directory
1239 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001240
1241 If *effective_ids* is ``True``, :func:`access` will perform its access
1242 checks using the effective uid/gid instead of the real uid/gid.
1243 *effective_ids* may not be supported on your platform; you can check whether
1244 or not it is available using :data:`os.supports_effective_ids`. If it is
1245 unavailable, using it will raise a :exc:`NotImplementedError`.
1246
Benjamin Petersonf650e462010-05-06 23:03:05 +00001247 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001248
1249 .. note::
1250
Georg Brandl502d9a52009-07-26 15:02:41 +00001251 Using :func:`access` to check if a user is authorized to e.g. open a file
1252 before actually doing so using :func:`open` creates a security hole,
1253 because the user might exploit the short time interval between checking
Benjamin Peterson249b5082011-05-20 11:41:13 -05001254 and opening the file to manipulate it. It's preferable to use :term:`EAFP`
1255 techniques. For example::
1256
1257 if os.access("myfile", os.R_OK):
1258 with open("myfile") as fp:
1259 return fp.read()
1260 return "some default data"
1261
1262 is better written as::
1263
1264 try:
1265 fp = open("myfile")
Antoine Pitrou62ab10a2011-10-12 20:10:51 +02001266 except PermissionError:
1267 return "some default data"
Benjamin Peterson249b5082011-05-20 11:41:13 -05001268 else:
1269 with fp:
1270 return fp.read()
Georg Brandl116aa622007-08-15 14:28:22 +00001271
1272 .. note::
1273
1274 I/O operations may fail even when :func:`access` indicates that they would
1275 succeed, particularly for operations on network filesystems which may have
1276 permissions semantics beyond the usual POSIX permission-bit model.
1277
Larry Hastings9cf065c2012-06-22 16:30:09 -07001278 .. versionchanged:: 3.3
1279 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters.
1280
Georg Brandl116aa622007-08-15 14:28:22 +00001281
1282.. data:: F_OK
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001283 R_OK
1284 W_OK
1285 X_OK
Georg Brandl116aa622007-08-15 14:28:22 +00001286
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001287 Values to pass as the *mode* parameter of :func:`access` to test the
1288 existence, readability, writability and executability of *path*,
1289 respectively.
Georg Brandl116aa622007-08-15 14:28:22 +00001290
1291
1292.. function:: chdir(path)
1293
1294 .. index:: single: directory; changing
1295
Benjamin Petersonf650e462010-05-06 23:03:05 +00001296 Change the current working directory to *path*.
1297
Georg Brandl50c40002012-06-24 11:45:20 +02001298 This function can support :ref:`working on a file descriptor <path_fd>`. The
1299 descriptor must refer to an opened directory, not an open file.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001300
Benjamin Petersonf650e462010-05-06 23:03:05 +00001301 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001302
Larry Hastings9cf065c2012-06-22 16:30:09 -07001303 .. versionadded:: 3.3
1304 Added support for specifying *path* as a file descriptor
Georg Brandl50c40002012-06-24 11:45:20 +02001305 on some platforms.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001306
Georg Brandl116aa622007-08-15 14:28:22 +00001307
Larry Hastings9cf065c2012-06-22 16:30:09 -07001308.. function:: chflags(path, flags, *, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001309
1310 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
1311 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
1312
R David Murray30178062011-03-10 17:18:33 -05001313 * :data:`stat.UF_NODUMP`
1314 * :data:`stat.UF_IMMUTABLE`
1315 * :data:`stat.UF_APPEND`
1316 * :data:`stat.UF_OPAQUE`
1317 * :data:`stat.UF_NOUNLINK`
Ned Deily3eb67d52011-06-28 00:00:28 -07001318 * :data:`stat.UF_COMPRESSED`
1319 * :data:`stat.UF_HIDDEN`
R David Murray30178062011-03-10 17:18:33 -05001320 * :data:`stat.SF_ARCHIVED`
1321 * :data:`stat.SF_IMMUTABLE`
1322 * :data:`stat.SF_APPEND`
1323 * :data:`stat.SF_NOUNLINK`
1324 * :data:`stat.SF_SNAPSHOT`
Georg Brandl116aa622007-08-15 14:28:22 +00001325
Georg Brandl50c40002012-06-24 11:45:20 +02001326 This function can support :ref:`not following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001327
Georg Brandlc575c902008-09-13 17:46:05 +00001328 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001329
Larry Hastings9cf065c2012-06-22 16:30:09 -07001330 .. versionadded:: 3.3
1331 The *follow_symlinks* argument.
1332
Georg Brandl116aa622007-08-15 14:28:22 +00001333
Larry Hastings9cf065c2012-06-22 16:30:09 -07001334.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001335
1336 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001337 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +00001338 combinations of them:
1339
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +00001340 * :data:`stat.S_ISUID`
1341 * :data:`stat.S_ISGID`
1342 * :data:`stat.S_ENFMT`
1343 * :data:`stat.S_ISVTX`
1344 * :data:`stat.S_IREAD`
1345 * :data:`stat.S_IWRITE`
1346 * :data:`stat.S_IEXEC`
1347 * :data:`stat.S_IRWXU`
1348 * :data:`stat.S_IRUSR`
1349 * :data:`stat.S_IWUSR`
1350 * :data:`stat.S_IXUSR`
1351 * :data:`stat.S_IRWXG`
1352 * :data:`stat.S_IRGRP`
1353 * :data:`stat.S_IWGRP`
1354 * :data:`stat.S_IXGRP`
1355 * :data:`stat.S_IRWXO`
1356 * :data:`stat.S_IROTH`
1357 * :data:`stat.S_IWOTH`
1358 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +00001359
Georg Brandl50c40002012-06-24 11:45:20 +02001360 This function can support :ref:`specifying a file descriptor <path_fd>`,
1361 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1362 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001363
Georg Brandlc575c902008-09-13 17:46:05 +00001364 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001365
1366 .. note::
1367
Georg Brandl50c40002012-06-24 11:45:20 +02001368 Although Windows supports :func:`chmod`, you can only set the file's
1369 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
1370 constants or a corresponding integer value). All other bits are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001371
Larry Hastings9cf065c2012-06-22 16:30:09 -07001372 .. versionadded:: 3.3
1373 Added support for specifying *path* as an open file descriptor,
1374 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001375
Larry Hastings9cf065c2012-06-22 16:30:09 -07001376
1377.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001378
Georg Brandl50c40002012-06-24 11:45:20 +02001379 Change the owner and group id of *path* to the numeric *uid* and *gid*. To
1380 leave one of the ids unchanged, set it to -1.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001381
Georg Brandl50c40002012-06-24 11:45:20 +02001382 This function can support :ref:`specifying a file descriptor <path_fd>`,
1383 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
1384 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001385
Sandro Tosid902a142011-08-22 23:28:27 +02001386 See :func:`shutil.chown` for a higher-level function that accepts names in
1387 addition to numeric ids.
1388
Benjamin Petersonf650e462010-05-06 23:03:05 +00001389 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001390
Larry Hastings9cf065c2012-06-22 16:30:09 -07001391 .. versionadded:: 3.3
1392 Added support for specifying an open file descriptor for *path*,
1393 and the *dir_fd* and *follow_symlinks* arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
Benjamin Peterson799bd802011-08-31 22:15:17 -04001395
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001396.. function:: chroot(path)
1397
Georg Brandl8a5555f2012-06-24 13:29:09 +02001398 Change the root directory of the current process to *path*.
1399
1400 Availability: Unix.
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001401
1402
1403.. function:: fchdir(fd)
1404
1405 Change the current working directory to the directory represented by the file
1406 descriptor *fd*. The descriptor must refer to an opened directory, not an
1407 open file. From Python 3.3, this is equivalent to ``os.chdir(fd)``.
1408
1409 Availability: Unix.
1410
1411
1412.. function:: getcwd()
1413
1414 Return a string representing the current working directory.
1415
1416 Availability: Unix, Windows.
1417
1418
1419.. function:: getcwdb()
1420
1421 Return a bytestring representing the current working directory.
1422
1423 Availability: Unix, Windows.
1424
1425
Georg Brandl116aa622007-08-15 14:28:22 +00001426.. function:: lchflags(path, flags)
1427
Georg Brandl50c40002012-06-24 11:45:20 +02001428 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do
Georg Brandlb9df00c2012-06-24 12:38:14 +02001429 not follow symbolic links. From Python 3.3, this is equivalent to
1430 ``os.chflags(path, flags, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001431
1432 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001433
Georg Brandl116aa622007-08-15 14:28:22 +00001434
Christian Heimes93852662007-12-01 12:22:32 +00001435.. function:: lchmod(path, mode)
1436
1437 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
Georg Brandl50c40002012-06-24 11:45:20 +02001438 affects the symlink rather than the target. See the docs for :func:`chmod`
Georg Brandlb9df00c2012-06-24 12:38:14 +02001439 for possible values of *mode*. From Python 3.3, this is equivalent to
1440 ``os.chmod(path, mode, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001441
1442 Availability: Unix.
Christian Heimes93852662007-12-01 12:22:32 +00001443
Christian Heimes93852662007-12-01 12:22:32 +00001444
Georg Brandl116aa622007-08-15 14:28:22 +00001445.. function:: lchown(path, uid, gid)
1446
Georg Brandl50c40002012-06-24 11:45:20 +02001447 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandlb9df00c2012-06-24 12:38:14 +02001448 function will not follow symbolic links. From Python 3.3, this is equivalent
1449 to ``os.chown(path, uid, gid, follow_symlinks=False)``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001450
1451 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001452
Georg Brandl116aa622007-08-15 14:28:22 +00001453
Larry Hastings9cf065c2012-06-22 16:30:09 -07001454.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
Benjamin Peterson799bd802011-08-31 22:15:17 -04001455
Larry Hastings9cf065c2012-06-22 16:30:09 -07001456 Create a hard link pointing to *src* named *dst*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001457
Georg Brandl50c40002012-06-24 11:45:20 +02001458 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a file
1459 descriptor referring to a directory, and the corresponding path (*src* or
1460 *dst*) should be relative; that path will then be relative to that directory.
1461 (If *src* is absolute, *src_dir_fd* is ignored; the same goes for *dst* and
1462 *dst_dir_fd*.) *src_dir_fd* and *dst_dir_fd* may not be supported on your
1463 platform; you can check whether or not they are available using
1464 :data:`os.supports_dir_fd`. If they are unavailable, using either will raise
1465 a :exc:`NotImplementedError`.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001466
Georg Brandl50c40002012-06-24 11:45:20 +02001467 This function can also support :ref:`not following symlinks
1468 <follow_symlinks>`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001469
Brian Curtin1b9df392010-11-24 20:24:31 +00001470 Availability: Unix, Windows.
1471
1472 .. versionchanged:: 3.2
1473 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +00001474
Larry Hastings9cf065c2012-06-22 16:30:09 -07001475 .. versionadded:: 3.3
1476 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments.
1477
Georg Brandl116aa622007-08-15 14:28:22 +00001478
Martin v. Löwis9c71f902010-07-24 10:09:11 +00001479.. function:: listdir(path='.')
Georg Brandl116aa622007-08-15 14:28:22 +00001480
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001481 Return a list containing the names of the entries in the directory given by
Georg Brandl50c40002012-06-24 11:45:20 +02001482 *path* (default: ``'.'``). The list is in arbitrary order. It does not
1483 include the special entries ``'.'`` and ``'..'`` even if they are present in
1484 the directory.
Georg Brandl116aa622007-08-15 14:28:22 +00001485
Martin v. Löwis011e8422009-05-05 04:43:17 +00001486 This function can be called with a bytes or string argument, and returns
1487 filenames of the same datatype.
Georg Brandl116aa622007-08-15 14:28:22 +00001488
Georg Brandl50c40002012-06-24 11:45:20 +02001489 This function can also support :ref:`specifying an open file descriptor
1490 <path_fd>` (referring to a directory).
Larry Hastings9cf065c2012-06-22 16:30:09 -07001491
Benjamin Petersonf650e462010-05-06 23:03:05 +00001492 Availability: Unix, Windows.
1493
Martin v. Löwisc9e1c7d2010-07-23 12:16:41 +00001494 .. versionchanged:: 3.2
1495 The *path* parameter became optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001496
Larry Hastings9cf065c2012-06-22 16:30:09 -07001497 .. versionadded:: 3.3
1498 Added support for specifying an open file descriptor for *path*.
Benjamin Peterson799bd802011-08-31 22:15:17 -04001499
Georg Brandl50c40002012-06-24 11:45:20 +02001500
Larry Hastings9cf065c2012-06-22 16:30:09 -07001501.. function:: lstat(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001502
R. David Murray7b1aae92011-01-24 19:34:58 +00001503 Perform the equivalent of an :c:func:`lstat` system call on the given path.
1504 Similar to :func:`~os.stat`, but does not follow symbolic links. On
1505 platforms that do not support symbolic links, this is an alias for
Georg Brandlb9df00c2012-06-24 12:38:14 +02001506 :func:`~os.stat`. From Python 3.3, this is equivalent to ``os.stat(path,
1507 dir_fd=dir_fd, follow_symlinks=False)``.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001508
Georg Brandl50c40002012-06-24 11:45:20 +02001509 This function can also support :ref:`paths relative to directory descriptors
1510 <dir_fd>`.
Brian Curtinc7395692010-07-09 15:15:09 +00001511
Georg Brandlb3823372010-07-10 08:58:37 +00001512 .. versionchanged:: 3.2
1513 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001514
Larry Hastings9cf065c2012-06-22 16:30:09 -07001515 .. versionchanged:: 3.3
1516 Added the *dir_fd* parameter.
Ross Lagerwall7807c352011-03-17 20:20:30 +02001517
1518
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001519.. function:: mkdir(path, mode=0o777, *, dir_fd=None)
1520
1521 Create a directory named *path* with numeric mode *mode*.
1522
1523 On some systems, *mode* is ignored. Where it is used, the current umask
1524 value is first masked out. If the directory already exists, :exc:`OSError`
1525 is raised.
1526
1527 This function can also support :ref:`paths relative to directory descriptors
1528 <dir_fd>`.
1529
1530 It is also possible to create temporary directories; see the
1531 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1532
1533 Availability: Unix, Windows.
1534
1535 .. versionadded:: 3.3
1536 The *dir_fd* argument.
1537
1538
1539.. function:: makedirs(path, mode=0o777, exist_ok=False)
1540
1541 .. index::
1542 single: directory; creating
1543 single: UNC paths; and os.makedirs()
1544
1545 Recursive directory creation function. Like :func:`mkdir`, but makes all
1546 intermediate-level directories needed to contain the leaf directory. If
1547 the target directory with the same mode as specified already exists,
1548 raises an :exc:`OSError` exception if *exist_ok* is False, otherwise no
1549 exception is raised. If the directory cannot be created in other cases,
1550 raises an :exc:`OSError` exception. The default *mode* is ``0o777`` (octal).
1551 On some systems, *mode* is ignored. Where it is used, the current umask
1552 value is first masked out.
1553
1554 .. note::
1555
1556 :func:`makedirs` will become confused if the path elements to create
1557 include :data:`pardir`.
1558
1559 This function handles UNC paths correctly.
1560
1561 .. versionadded:: 3.2
1562 The *exist_ok* parameter.
1563
1564
Larry Hastings9cf065c2012-06-22 16:30:09 -07001565.. function:: mkfifo(path, mode=0o666, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001566
Larry Hastings9cf065c2012-06-22 16:30:09 -07001567 Create a FIFO (a named pipe) named *path* with numeric mode *mode*.
1568 The current umask value is first masked out from the mode.
1569
Georg Brandl50c40002012-06-24 11:45:20 +02001570 This function can also support :ref:`paths relative to directory descriptors
1571 <dir_fd>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001572
1573 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
1574 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
1575 rendezvous between "client" and "server" type processes: the server opens the
1576 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
1577 doesn't open the FIFO --- it just creates the rendezvous point.
1578
Benjamin Petersonf650e462010-05-06 23:03:05 +00001579 Availability: Unix.
1580
Larry Hastings9cf065c2012-06-22 16:30:09 -07001581 .. versionadded:: 3.3
1582 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001583
Larry Hastings9cf065c2012-06-22 16:30:09 -07001584
1585.. function:: mknod(filename, mode=0o600, device=0, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001586
1587 Create a filesystem node (file, device special file or named pipe) named
Georg Brandl18244152009-09-02 20:34:52 +00001588 *filename*. *mode* specifies both the permissions to use and the type of node
1589 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
1590 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
1591 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
1592 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +00001593 :func:`os.makedev`), otherwise it is ignored.
1594
Georg Brandl50c40002012-06-24 11:45:20 +02001595 This function can also support :ref:`paths relative to directory descriptors
1596 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001597
1598 .. versionadded:: 3.3
1599 The *dir_fd* argument.
1600
Georg Brandl116aa622007-08-15 14:28:22 +00001601
1602.. function:: major(device)
1603
Christian Heimesfaf2f632008-01-06 16:59:19 +00001604 Extract the device major number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001605 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001606
Georg Brandl116aa622007-08-15 14:28:22 +00001607
1608.. function:: minor(device)
1609
Christian Heimesfaf2f632008-01-06 16:59:19 +00001610 Extract the device minor number from a raw device number (usually the
Georg Brandl60203b42010-10-06 10:11:56 +00001611 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`).
Georg Brandl116aa622007-08-15 14:28:22 +00001612
Georg Brandl116aa622007-08-15 14:28:22 +00001613
1614.. function:: makedev(major, minor)
1615
Christian Heimesfaf2f632008-01-06 16:59:19 +00001616 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +00001617
Georg Brandl116aa622007-08-15 14:28:22 +00001618
Georg Brandl116aa622007-08-15 14:28:22 +00001619.. function:: pathconf(path, name)
1620
1621 Return system configuration information relevant to a named file. *name*
1622 specifies the configuration value to retrieve; it may be a string which is the
1623 name of a defined system value; these names are specified in a number of
1624 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1625 additional names as well. The names known to the host operating system are
1626 given in the ``pathconf_names`` dictionary. For configuration variables not
1627 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00001628
1629 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1630 specific value for *name* is not supported by the host system, even if it is
1631 included in ``pathconf_names``, an :exc:`OSError` is raised with
1632 :const:`errno.EINVAL` for the error number.
1633
Georg Brandl306336b2012-06-24 12:55:33 +02001634 This function can support :ref:`specifying an open file descriptor
1635 <path_fd>`.
1636
Benjamin Petersonf650e462010-05-06 23:03:05 +00001637 Availability: Unix.
1638
Georg Brandl116aa622007-08-15 14:28:22 +00001639
1640.. data:: pathconf_names
1641
1642 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1643 the integer values defined for those names by the host operating system. This
Georg Brandl8a5555f2012-06-24 13:29:09 +02001644 can be used to determine the set of names known to the system.
1645
1646 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001647
1648
Larry Hastings9cf065c2012-06-22 16:30:09 -07001649.. function:: readlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001650
1651 Return a string representing the path to which the symbolic link points. The
Georg Brandl50c40002012-06-24 11:45:20 +02001652 result may be either an absolute or relative pathname; if it is relative, it
1653 may be converted to an absolute pathname using
1654 ``os.path.join(os.path.dirname(path), result)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001655
Georg Brandl76e55382008-10-08 16:34:57 +00001656 If the *path* is a string object, the result will also be a string object,
1657 and the call may raise an UnicodeDecodeError. If the *path* is a bytes
1658 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00001659
Georg Brandl50c40002012-06-24 11:45:20 +02001660 This function can also support :ref:`paths relative to directory descriptors
1661 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001662
Brian Curtinc7395692010-07-09 15:15:09 +00001663 Availability: Unix, Windows
1664
Georg Brandlb3823372010-07-10 08:58:37 +00001665 .. versionchanged:: 3.2
1666 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00001667
Larry Hastings9cf065c2012-06-22 16:30:09 -07001668 .. versionadded:: 3.3
1669 The *dir_fd* argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001670
Georg Brandl116aa622007-08-15 14:28:22 +00001671
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001672.. function:: remove(path, *, dir_fd=None)
Larry Hastings9cf065c2012-06-22 16:30:09 -07001673
Georg Brandl50c40002012-06-24 11:45:20 +02001674 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
1675 raised. Use :func:`rmdir` to remove directories.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001676
Georg Brandl50c40002012-06-24 11:45:20 +02001677 This function can support :ref:`paths relative to directory descriptors
1678 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001679
1680 On Windows, attempting to remove a file that is in use causes an exception to
1681 be raised; on Unix, the directory entry is removed but the storage allocated
1682 to the file is not made available until the original file is no longer in use.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001683
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001684 This function is identical to :func:`unlink`.
1685
Benjamin Petersonf650e462010-05-06 23:03:05 +00001686 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001687
Larry Hastings9cf065c2012-06-22 16:30:09 -07001688 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001689 The *dir_fd* argument.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001690
Georg Brandl116aa622007-08-15 14:28:22 +00001691
1692.. function:: removedirs(path)
1693
1694 .. index:: single: directory; deleting
1695
Christian Heimesfaf2f632008-01-06 16:59:19 +00001696 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +00001697 leaf directory is successfully removed, :func:`removedirs` tries to
1698 successively remove every parent directory mentioned in *path* until an error
1699 is raised (which is ignored, because it generally means that a parent directory
1700 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1701 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1702 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1703 successfully removed.
1704
Georg Brandl116aa622007-08-15 14:28:22 +00001705
Larry Hastings9cf065c2012-06-22 16:30:09 -07001706.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001707
1708 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1709 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001710 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001711 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1712 the renaming will be an atomic operation (this is a POSIX requirement). On
1713 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001714 file.
1715
Larry Hastings9cf065c2012-06-22 16:30:09 -07001716 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1717 file descriptor referring to a directory, and the corresponding path
1718 (*src* or *dst*) should be relative; that path will then be relative to
1719 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1720 goes for *dst* and *dst_dir_fd*.)
1721 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1722 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1723 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1724
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001725 If you want cross-platform overwriting of the destination, use :func:`replace`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00001726
1727 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001728
Larry Hastings9cf065c2012-06-22 16:30:09 -07001729 .. versionadded:: 3.3
1730 The *src_dir_fd* and *dst_dir_fd* arguments.
1731
Georg Brandl116aa622007-08-15 14:28:22 +00001732
1733.. function:: renames(old, new)
1734
1735 Recursive directory or file renaming function. Works like :func:`rename`, except
1736 creation of any intermediate directories needed to make the new pathname good is
1737 attempted first. After the rename, directories corresponding to rightmost path
1738 segments of the old name will be pruned away using :func:`removedirs`.
1739
Georg Brandl116aa622007-08-15 14:28:22 +00001740 .. note::
1741
1742 This function can fail with the new directory structure made if you lack
1743 permissions needed to remove the leaf directory or file.
1744
1745
Larry Hastings9cf065c2012-06-22 16:30:09 -07001746.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001747
1748 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1749 :exc:`OSError` will be raised. If *dst* exists and is a file, it will
1750 be replaced silently if the user has permission. The operation may fail
1751 if *src* and *dst* are on different filesystems. If successful,
1752 the renaming will be an atomic operation (this is a POSIX requirement).
1753
Larry Hastings9cf065c2012-06-22 16:30:09 -07001754 If either *src_dir_fd* or *dst_dir_fd* is not ``None``, it should be a
1755 file descriptor referring to a directory, and the corresponding path
1756 (*src* or *dst*) should be relative; that path will then be relative to
1757 that directory. (If *src* is absolute, *src_dir_fd* is ignored; the same
1758 goes for *dst* and *dst_dir_fd*.)
1759 *src_dir_fd* and *dst_dir_fd* may not be supported on your platform;
1760 you can check whether or not they are available using :data:`os.supports_dir_fd`.
1761 If they are unavailable, using either will raise a :exc:`NotImplementedError`.
1762
Georg Brandl8a5555f2012-06-24 13:29:09 +02001763 Availability: Unix, Windows.
Antoine Pitrouf3b2d882012-01-30 22:08:52 +01001764
1765 .. versionadded:: 3.3
1766
1767
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001768.. function:: rmdir(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001769
Georg Brandla6053b42009-09-01 08:11:14 +00001770 Remove (delete) the directory *path*. Only works when the directory is
1771 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
Benjamin Petersonf650e462010-05-06 23:03:05 +00001772 directory trees, :func:`shutil.rmtree` can be used.
1773
Georg Brandl50c40002012-06-24 11:45:20 +02001774 This function can support :ref:`paths relative to directory descriptors
1775 <dir_fd>`.
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001776
Benjamin Petersonf650e462010-05-06 23:03:05 +00001777 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001778
Larry Hastingsb698d8e2012-06-23 16:55:07 -07001779 .. versionadded:: 3.3
1780 The *dir_fd* parameter.
1781
Georg Brandl116aa622007-08-15 14:28:22 +00001782
Larry Hastings9cf065c2012-06-22 16:30:09 -07001783.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001784
R. David Murray7b1aae92011-01-24 19:34:58 +00001785 Perform the equivalent of a :c:func:`stat` system call on the given path.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001786 *path* may be specified as either a string or as an open file descriptor.
1787 (This function normally follows symlinks; to stat a symlink add the argument
1788 ``follow_symlinks=False``, or use :func:`lstat`.)
Georg Brandl116aa622007-08-15 14:28:22 +00001789
Larry Hastings6fe20b32012-04-19 15:07:49 -07001790 The return value is an object whose attributes correspond roughly
1791 to the members of the :c:type:`stat` structure, namely:
R. David Murray7b1aae92011-01-24 19:34:58 +00001792
1793 * :attr:`st_mode` - protection bits,
1794 * :attr:`st_ino` - inode number,
1795 * :attr:`st_dev` - device,
1796 * :attr:`st_nlink` - number of hard links,
1797 * :attr:`st_uid` - user id of owner,
1798 * :attr:`st_gid` - group id of owner,
1799 * :attr:`st_size` - size of file, in bytes,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001800 * :attr:`st_atime` - time of most recent access expressed in seconds,
1801 * :attr:`st_mtime` - time of most recent content modification
1802 expressed in seconds,
1803 * :attr:`st_ctime` - platform dependent; time of most recent metadata
1804 change on Unix, or the time of creation on Windows, expressed in seconds
1805 * :attr:`st_atime_ns` - time of most recent access
1806 expressed in nanoseconds as an integer,
1807 * :attr:`st_mtime_ns` - time of most recent content modification
1808 expressed in nanoseconds as an integer,
1809 * :attr:`st_ctime_ns` - platform dependent; time of most recent metadata
1810 change on Unix, or the time of creation on Windows,
1811 expressed in nanoseconds as an integer
Georg Brandl116aa622007-08-15 14:28:22 +00001812
1813 On some Unix systems (such as Linux), the following attributes may also be
R. David Murray7b1aae92011-01-24 19:34:58 +00001814 available:
1815
1816 * :attr:`st_blocks` - number of blocks allocated for file
1817 * :attr:`st_blksize` - filesystem blocksize
1818 * :attr:`st_rdev` - type of device if an inode device
1819 * :attr:`st_flags` - user defined flags for file
Georg Brandl116aa622007-08-15 14:28:22 +00001820
1821 On other Unix systems (such as FreeBSD), the following attributes may be
R. David Murray7b1aae92011-01-24 19:34:58 +00001822 available (but may be only filled out if root tries to use them):
1823
1824 * :attr:`st_gen` - file generation number
1825 * :attr:`st_birthtime` - time of file creation
Georg Brandl116aa622007-08-15 14:28:22 +00001826
1827 On Mac OS systems, the following attributes may also be available:
Georg Brandl116aa622007-08-15 14:28:22 +00001828
R. David Murray7b1aae92011-01-24 19:34:58 +00001829 * :attr:`st_rsize`
1830 * :attr:`st_creator`
1831 * :attr:`st_type`
Georg Brandl116aa622007-08-15 14:28:22 +00001832
1833 .. note::
1834
Senthil Kumaran3aac1792011-07-04 11:43:51 -07001835 The exact meaning and resolution of the :attr:`st_atime`,
Senthil Kumarana6bac952011-07-04 11:28:30 -07001836 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
1837 system and the file system. For example, on Windows systems using the FAT
1838 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
1839 :attr:`st_atime` has only 1-day resolution. See your operating system
1840 documentation for details.
Larry Hastings6fe20b32012-04-19 15:07:49 -07001841 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
1842 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
1843 systems do not provide nanosecond precision. On systems that do
1844 provide nanosecond precision, the floating-point object used to
1845 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
1846 cannot preserve all of it, and as such will be slightly inexact.
1847 If you need the exact timestamps you should always use
1848 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
Georg Brandl116aa622007-08-15 14:28:22 +00001849
Georg Brandl50c40002012-06-24 11:45:20 +02001850 For backward compatibility, the return value of :func:`~os.stat` is also
1851 accessible as a tuple of at least 10 integers giving the most important (and
1852 portable) members of the :c:type:`stat` structure, in the order
1853 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`,
1854 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`,
1855 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by
1856 some implementations.
R. David Murray7b1aae92011-01-24 19:34:58 +00001857
Georg Brandl50c40002012-06-24 11:45:20 +02001858 This function can support :ref:`specifying an open file descriptor
1859 <path_fd>`, :ref:`specifying a file descriptor <path_fd>` and :ref:`not
1860 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001861
R. David Murray7b1aae92011-01-24 19:34:58 +00001862 .. index:: module: stat
1863
1864 The standard module :mod:`stat` defines functions and constants that are useful
1865 for extracting information from a :c:type:`stat` structure. (On Windows, some
1866 items are filled with dummy values.)
1867
1868 Example::
1869
1870 >>> import os
1871 >>> statinfo = os.stat('somefile.txt')
1872 >>> statinfo
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00001873 posix.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
1874 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
1875 st_mtime=1297230027, st_ctime=1297230027)
R. David Murray7b1aae92011-01-24 19:34:58 +00001876 >>> statinfo.st_size
Raymond Hettinger8f0ae9a2011-02-18 00:53:55 +00001877 264
R. David Murray7b1aae92011-01-24 19:34:58 +00001878
Georg Brandlc575c902008-09-13 17:46:05 +00001879 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001880
Larry Hastings6fe20b32012-04-19 15:07:49 -07001881 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07001882 Added the *dir_fd* and *follow_symlinks* arguments,
1883 specifying a file descriptor instead of a path,
1884 and the :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
Larry Hastings6fe20b32012-04-19 15:07:49 -07001885 and :attr:`st_ctime_ns` members.
1886
Georg Brandl116aa622007-08-15 14:28:22 +00001887
1888.. function:: stat_float_times([newvalue])
1889
1890 Determine whether :class:`stat_result` represents time stamps as float objects.
R. David Murray7b1aae92011-01-24 19:34:58 +00001891 If *newvalue* is ``True``, future calls to :func:`~os.stat` return floats, if it is
Georg Brandl116aa622007-08-15 14:28:22 +00001892 ``False``, future calls return ints. If *newvalue* is omitted, return the
1893 current setting.
1894
1895 For compatibility with older Python versions, accessing :class:`stat_result` as
1896 a tuple always returns integers.
1897
Georg Brandl55ac8f02007-09-01 13:51:09 +00001898 Python now returns float values by default. Applications which do not work
1899 correctly with floating point time stamps can use this function to restore the
1900 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00001901
1902 The resolution of the timestamps (that is the smallest possible fraction)
1903 depends on the system. Some systems only support second resolution; on these
1904 systems, the fraction will always be zero.
1905
1906 It is recommended that this setting is only changed at program startup time in
1907 the *__main__* module; libraries should never change this setting. If an
1908 application uses a library that works incorrectly if floating point time stamps
1909 are processed, this application should turn the feature off until the library
1910 has been corrected.
1911
Victor Stinner034d0aa2012-06-05 01:22:15 +02001912 .. deprecated:: 3.3
1913
Georg Brandl116aa622007-08-15 14:28:22 +00001914
1915.. function:: statvfs(path)
1916
Georg Brandl60203b42010-10-06 10:11:56 +00001917 Perform a :c:func:`statvfs` system call on the given path. The return value is
Georg Brandl116aa622007-08-15 14:28:22 +00001918 an object whose attributes describe the filesystem on the given path, and
Georg Brandl60203b42010-10-06 10:11:56 +00001919 correspond to the members of the :c:type:`statvfs` structure, namely:
Georg Brandl116aa622007-08-15 14:28:22 +00001920 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
1921 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
Benjamin Petersonf650e462010-05-06 23:03:05 +00001922 :attr:`f_flag`, :attr:`f_namemax`.
1923
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00001924 Two module-level constants are defined for the :attr:`f_flag` attribute's
1925 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
1926 read-only, and if :const:`ST_NOSUID` is set, the semantics of
1927 setuid/setgid bits are disabled or not supported.
1928
Georg Brandl50c40002012-06-24 11:45:20 +02001929 This function can support :ref:`specifying a file descriptor <path_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001930
Andrew M. Kuchling4ea04a32010-08-18 22:30:34 +00001931 .. versionchanged:: 3.2
1932 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added.
1933
Benjamin Petersonf650e462010-05-06 23:03:05 +00001934 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001935
Larry Hastings9cf065c2012-06-22 16:30:09 -07001936 .. versionadded:: 3.3
1937 Added support for specifying an open file descriptor for *path*.
Georg Brandl116aa622007-08-15 14:28:22 +00001938
Larry Hastings9cf065c2012-06-22 16:30:09 -07001939
1940.. data:: supports_dir_fd
1941
1942 An object implementing collections.Set indicating which functions in the
1943 :mod:`os` permit use of their *dir_fd* parameter. Different platforms
1944 provide different functionality, and an option that might work on one might
1945 be unsupported on another. For consistency's sakes, functions that support
1946 *dir_fd* always allow specifying the parameter, but will throw an exception
1947 if the functionality is not actually available.
1948
1949 To check whether a particular function permits use of its *dir_fd*
1950 parameter, use the ``in`` operator on ``supports_dir_fd``. As an example,
1951 this expression determines whether the *dir_fd* parameter of :func:`os.stat`
1952 is locally available::
1953
1954 os.stat in os.supports_dir_fd
1955
Georg Brandlf62445a2012-06-24 13:31:20 +02001956 Currently *dir_fd* parameters only work on Unix platforms; none of them work
1957 on Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001958
1959 .. versionadded:: 3.3
1960
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001961
Larry Hastings9cf065c2012-06-22 16:30:09 -07001962.. data:: supports_effective_ids
1963
1964 An object implementing collections.Set indicating which functions in the
Georg Brandl50c40002012-06-24 11:45:20 +02001965 :mod:`os` permit use of the *effective_ids* parameter for :func:`os.access`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001966 If the local platform supports it, the collection will contain
1967 :func:`os.access`, otherwise it will be empty.
1968
Georg Brandl50c40002012-06-24 11:45:20 +02001969 To check whether you can use the *effective_ids* parameter for
Larry Hastings9cf065c2012-06-22 16:30:09 -07001970 :func:`os.access`, use the ``in`` operator on ``supports_dir_fd``, like so::
1971
1972 os.access in os.supports_effective_ids
1973
Georg Brandl50c40002012-06-24 11:45:20 +02001974 Currently *effective_ids* only works on Unix platforms; it does not work on
1975 Windows.
Larry Hastings9cf065c2012-06-22 16:30:09 -07001976
1977 .. versionadded:: 3.3
1978
Georg Brandl8ccadaa2012-06-24 12:50:06 +02001979
Larry Hastings9cf065c2012-06-22 16:30:09 -07001980.. data:: supports_fd
1981
1982 An object implementing collections.Set indicating which functions in the
1983 :mod:`os` permit specifying their *path* parameter as an open file
1984 descriptor. Different platforms provide different functionality, and an
1985 option that might work on one might be unsupported on another. For
1986 consistency's sakes, functions that support *fd* always allow specifying
1987 the parameter, but will throw an exception if the functionality is not
1988 actually available.
1989
1990 To check whether a particular function permits specifying an open file
1991 descriptor for its *path* parameter, use the ``in`` operator on
1992 ``supports_fd``. As an example, this expression determines whether
1993 :func:`os.chdir` accepts open file descriptors when called on your local
1994 platform::
1995
1996 os.chdir in os.supports_fd
1997
1998 .. versionadded:: 3.3
1999
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002000
Larry Hastings9cf065c2012-06-22 16:30:09 -07002001.. data:: supports_follow_symlinks
2002
2003 An object implementing collections.Set indicating which functions in the
2004 :mod:`os` permit use of their *follow_symlinks* parameter. Different
2005 platforms provide different functionality, and an option that might work on
2006 one might be unsupported on another. For consistency's sakes, functions that
2007 support *follow_symlinks* always allow specifying the parameter, but will
2008 throw an exception if the functionality is not actually available.
2009
2010 To check whether a particular function permits use of its *follow_symlinks*
2011 parameter, use the ``in`` operator on ``supports_follow_symlinks``. As an
2012 example, this expression determines whether the *follow_symlinks* parameter
2013 of :func:`os.stat` is locally available::
2014
2015 os.stat in os.supports_follow_symlinks
2016
2017 .. versionadded:: 3.3
2018
Georg Brandl8ccadaa2012-06-24 12:50:06 +02002019
Larry Hastings9cf065c2012-06-22 16:30:09 -07002020.. function:: symlink(source, link_name, target_is_directory=False, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002021
Brian Curtinc7395692010-07-09 15:15:09 +00002022 Create a symbolic link pointing to *source* named *link_name*.
2023
Larry Hastings9cf065c2012-06-22 16:30:09 -07002024 On Windows, a symlink represents either a file or a directory, and does not
2025 morph to the target dynamically. If *target_is_directory* is set to ``True``,
2026 the symlink will be created as a directory symlink, otherwise as a file symlink
2027 (the default). On non-Window platforms, *target_is_directory* is ignored.
Brian Curtind40e6f72010-07-08 21:39:08 +00002028
Georg Brandl64a41ed2010-10-06 08:52:48 +00002029 Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
2030 will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
Brian Curtin52173d42010-12-02 18:29:18 +00002031
Georg Brandl50c40002012-06-24 11:45:20 +02002032 This function can support :ref:`paths relative to directory descriptors
2033 <dir_fd>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002034
Brian Curtin52173d42010-12-02 18:29:18 +00002035 .. note::
2036
Larry Hastings9cf065c2012-06-22 16:30:09 -07002037 On Windows, the *SeCreateSymbolicLinkPrivilege* is required in order to
2038 successfully create symlinks. This privilege is not typically granted to
2039 regular users but is available to accounts which can escalate privileges
2040 to the administrator level. Either obtaining the privilege or running your
Brian Curtin96245592010-12-28 17:08:22 +00002041 application as an administrator are ways to successfully create symlinks.
2042
Brian Curtin96245592010-12-28 17:08:22 +00002043 :exc:`OSError` is raised when the function is called by an unprivileged
2044 user.
Brian Curtind40e6f72010-07-08 21:39:08 +00002045
Georg Brandl64a41ed2010-10-06 08:52:48 +00002046 Availability: Unix, Windows.
Brian Curtinc7395692010-07-09 15:15:09 +00002047
Georg Brandlb3823372010-07-10 08:58:37 +00002048 .. versionchanged:: 3.2
2049 Added support for Windows 6.0 (Vista) symbolic links.
Georg Brandl116aa622007-08-15 14:28:22 +00002050
Larry Hastings9cf065c2012-06-22 16:30:09 -07002051 .. versionadded:: 3.3
2052 Added the *dir_fd* argument, and now allow *target_is_directory*
2053 on non-Windows platforms.
2054
Georg Brandl116aa622007-08-15 14:28:22 +00002055
Ross Lagerwall7807c352011-03-17 20:20:30 +02002056.. function:: sync()
2057
2058 Force write of everything to disk.
2059
2060 Availability: Unix.
2061
2062 .. versionadded:: 3.3
2063
2064
2065.. function:: truncate(path, length)
2066
2067 Truncate the file corresponding to *path*, so that it is at most
2068 *length* bytes in size.
2069
Georg Brandl306336b2012-06-24 12:55:33 +02002070 This function can support :ref:`specifying a file descriptor <path_fd>`.
2071
Ross Lagerwall7807c352011-03-17 20:20:30 +02002072 Availability: Unix.
2073
2074 .. versionadded:: 3.3
2075
2076
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002077.. function:: unlink(path, *, dir_fd=None)
Georg Brandl116aa622007-08-15 14:28:22 +00002078
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002079 Remove (delete) the file *path*. This function is identical to
Georg Brandl50c40002012-06-24 11:45:20 +02002080 :func:`remove`; the ``unlink`` name is its traditional Unix
Larry Hastings9cf065c2012-06-22 16:30:09 -07002081 name. Please see the documentation for :func:`remove` for
2082 further information.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002083
2084 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002085
Larry Hastings9cf065c2012-06-22 16:30:09 -07002086 .. versionadded:: 3.3
Larry Hastingsb698d8e2012-06-23 16:55:07 -07002087 The *dir_fd* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002088
Larry Hastings9cf065c2012-06-22 16:30:09 -07002089
2090.. function:: utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)
Georg Brandl116aa622007-08-15 14:28:22 +00002091
Larry Hastings76ad59b2012-05-03 00:30:07 -07002092 Set the access and modified times of the file specified by *path*.
2093
2094 :func:`utime` takes two optional parameters, *times* and *ns*.
2095 These specify the times set on *path* and are used as follows:
2096
Larry Hastings9cf065c2012-06-22 16:30:09 -07002097 - If *ns* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002098 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)``
2099 where each member is an int expressing nanoseconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002100 - If *times* is not ``None``,
Larry Hastings76ad59b2012-05-03 00:30:07 -07002101 it must be a 2-tuple of the form ``(atime, mtime)``
2102 where each member is an int or float expressing seconds.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002103 - If *times* and *ns* are both ``None``,
2104 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)``
Larry Hastings76ad59b2012-05-03 00:30:07 -07002105 where both times are the current time.
2106 (The effect is similar to running the Unix program
2107 :program:`touch` on *path*.)
Larry Hastings76ad59b2012-05-03 00:30:07 -07002108
Larry Hastings9cf065c2012-06-22 16:30:09 -07002109 It is an error to specify tuples for both *times* and *ns*.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002110
2111 Whether a directory can be given for *path*
Brian Curtin52fbea12011-11-06 13:41:17 -06002112 depends on whether the operating system implements directories as files
2113 (for example, Windows does not). Note that the exact times you set here may
2114 not be returned by a subsequent :func:`~os.stat` call, depending on the
2115 resolution with which your operating system records access and modification
Larry Hastings76ad59b2012-05-03 00:30:07 -07002116 times; see :func:`~os.stat`. The best way to preserve exact times is to
2117 use the *st_atime_ns* and *st_mtime_ns* fields from the :func:`os.stat`
2118 result object with the *ns* parameter to `utime`.
Georg Brandl116aa622007-08-15 14:28:22 +00002119
Georg Brandl50c40002012-06-24 11:45:20 +02002120 This function can support :ref:`specifying a file descriptor <path_fd>`,
2121 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not
2122 following symlinks <follow_symlinks>`.
Larry Hastings9cf065c2012-06-22 16:30:09 -07002123
Georg Brandlc575c902008-09-13 17:46:05 +00002124 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002125
Larry Hastings76ad59b2012-05-03 00:30:07 -07002126 .. versionadded:: 3.3
Larry Hastings9cf065c2012-06-22 16:30:09 -07002127 Added support for specifying an open file descriptor for *path*,
2128 and the *dir_fd*, *follow_symlinks*, and *ns* parameters.
Larry Hastings76ad59b2012-05-03 00:30:07 -07002129
Georg Brandl116aa622007-08-15 14:28:22 +00002130
Georg Brandl18244152009-09-02 20:34:52 +00002131.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00002132
2133 .. index::
2134 single: directory; walking
2135 single: directory; traversal
2136
Christian Heimesfaf2f632008-01-06 16:59:19 +00002137 Generate the file names in a directory tree by walking the tree
2138 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00002139 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
2140 filenames)``.
2141
2142 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
2143 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
2144 *filenames* is a list of the names of the non-directory files in *dirpath*.
2145 Note that the names in the lists contain no path components. To get a full path
2146 (which begins with *top*) to a file or directory in *dirpath*, do
2147 ``os.path.join(dirpath, name)``.
2148
Christian Heimesfaf2f632008-01-06 16:59:19 +00002149 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002150 directory is generated before the triples for any of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002151 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00002152 directory is generated after the triples for all of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00002153 (directories are generated bottom-up).
Georg Brandl116aa622007-08-15 14:28:22 +00002154
Christian Heimesfaf2f632008-01-06 16:59:19 +00002155 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00002156 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
2157 recurse into the subdirectories whose names remain in *dirnames*; this can be
2158 used to prune the search, impose a specific order of visiting, or even to inform
2159 :func:`walk` about directories the caller creates or renames before it resumes
Christian Heimesfaf2f632008-01-06 16:59:19 +00002160 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl116aa622007-08-15 14:28:22 +00002161 ineffective, because in bottom-up mode the directories in *dirnames* are
2162 generated before *dirpath* itself is generated.
2163
Ezio Melotti67494f22011-10-18 12:59:39 +03002164 By default, errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00002165 argument *onerror* is specified, it should be a function; it will be called with
2166 one argument, an :exc:`OSError` instance. It can report the error to continue
2167 with the walk, or raise the exception to abort the walk. Note that the filename
2168 is available as the ``filename`` attribute of the exception object.
2169
2170 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00002171 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00002172 symlinks, on systems that support them.
2173
Georg Brandl116aa622007-08-15 14:28:22 +00002174 .. note::
2175
Georg Brandl50c40002012-06-24 11:45:20 +02002176 Be aware that setting *followlinks* to ``True`` can lead to infinite
2177 recursion if a link points to a parent directory of itself. :func:`walk`
2178 does not keep track of the directories it visited already.
Georg Brandl116aa622007-08-15 14:28:22 +00002179
2180 .. note::
2181
2182 If you pass a relative pathname, don't change the current working directory
2183 between resumptions of :func:`walk`. :func:`walk` never changes the current
2184 directory, and assumes that its caller doesn't either.
2185
2186 This example displays the number of bytes taken by non-directory files in each
2187 directory under the starting directory, except that it doesn't look under any
2188 CVS subdirectory::
2189
2190 import os
2191 from os.path import join, getsize
2192 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00002193 print(root, "consumes", end=" ")
2194 print(sum(getsize(join(root, name)) for name in files), end=" ")
2195 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00002196 if 'CVS' in dirs:
2197 dirs.remove('CVS') # don't visit CVS directories
2198
Christian Heimesfaf2f632008-01-06 16:59:19 +00002199 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl116aa622007-08-15 14:28:22 +00002200 doesn't allow deleting a directory before the directory is empty::
2201
Christian Heimesfaf2f632008-01-06 16:59:19 +00002202 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00002203 # assuming there are no symbolic links.
2204 # CAUTION: This is dangerous! For example, if top == '/', it
2205 # could delete all your disk files.
2206 import os
2207 for root, dirs, files in os.walk(top, topdown=False):
2208 for name in files:
2209 os.remove(os.path.join(root, name))
2210 for name in dirs:
2211 os.rmdir(os.path.join(root, name))
2212
Georg Brandl116aa622007-08-15 14:28:22 +00002213
Charles-François Natali7372b062012-02-05 15:15:38 +01002214.. function:: fwalk(top, topdown=True, onerror=None, followlinks=False)
2215
2216 .. index::
2217 single: directory; walking
2218 single: directory; traversal
2219
Eli Benderskyd049d5c2012-02-11 09:52:29 +02002220 This behaves exactly like :func:`walk`, except that it yields a 4-tuple
2221 ``(dirpath, dirnames, filenames, dirfd)``.
Charles-François Natali7372b062012-02-05 15:15:38 +01002222
2223 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output,
2224 and *dirfd* is a file descriptor referring to the directory *dirpath*.
2225
2226 .. note::
2227
2228 Since :func:`fwalk` yields file descriptors, those are only valid until
2229 the next iteration step, so you should duplicate them (e.g. with
2230 :func:`dup`) if you want to keep them longer.
2231
2232 This example displays the number of bytes taken by non-directory files in each
2233 directory under the starting directory, except that it doesn't look under any
2234 CVS subdirectory::
2235
2236 import os
2237 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
2238 print(root, "consumes", end="")
2239 print(sum([os.fstatat(rootfd, name).st_size for name in files]),
2240 end="")
2241 print("bytes in", len(files), "non-directory files")
2242 if 'CVS' in dirs:
2243 dirs.remove('CVS') # don't visit CVS directories
2244
2245 In the next example, walking the tree bottom-up is essential:
2246 :func:`unlinkat` doesn't allow deleting a directory before the directory is
2247 empty::
2248
2249 # Delete everything reachable from the directory named in "top",
2250 # assuming there are no symbolic links.
2251 # CAUTION: This is dangerous! For example, if top == '/', it
2252 # could delete all your disk files.
2253 import os
2254 for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
2255 for name in files:
2256 os.unlinkat(rootfd, name)
2257 for name in dirs:
2258 os.unlinkat(rootfd, name, os.AT_REMOVEDIR)
2259
2260 Availability: Unix.
2261
2262 .. versionadded:: 3.3
2263
2264
Georg Brandlb9831ab2012-06-24 11:57:07 +02002265Linux extended attributes
2266~~~~~~~~~~~~~~~~~~~~~~~~~
2267
2268.. versionadded:: 3.3
2269
2270These functions are all available on Linux only.
2271
2272.. function:: getxattr(path, attribute, *, follow_symlinks=True)
2273
2274 Return the value of the extended filesystem attribute *attribute* for
2275 *path*. *attribute* can be bytes or str. If it is str, it is encoded
2276 with the filesystem encoding.
2277
2278 This function can support :ref:`specifying a file descriptor <path_fd>` and
2279 :ref:`not following symlinks <follow_symlinks>`.
2280
2281
2282.. function:: listxattr(path=None, *, follow_symlinks=True)
2283
2284 Return a list of the extended filesystem attributes on *path*. The
2285 attributes in the list are represented as strings decoded with the filesystem
2286 encoding. If *path* is ``None``, :func:`listxattr` will examine the current
2287 directory.
2288
2289 This function can support :ref:`specifying a file descriptor <path_fd>` and
2290 :ref:`not following symlinks <follow_symlinks>`.
2291
2292
2293.. function:: removexattr(path, attribute, *, follow_symlinks=True)
2294
2295 Removes the extended filesystem attribute *attribute* from *path*.
2296 *attribute* should be bytes or str. If it is a string, it is encoded
2297 with the filesystem encoding.
2298
2299 This function can support :ref:`specifying a file descriptor <path_fd>` and
2300 :ref:`not following symlinks <follow_symlinks>`.
2301
2302
2303.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)
2304
2305 Set the extended filesystem attribute *attribute* on *path* to *value*.
2306 *attribute* must be a bytes or str with no embedded NULs. If it is a str,
2307 it is encoded with the filesystem encoding. *flags* may be
2308 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is
2309 given and the attribute does not exist, ``EEXISTS`` will be raised.
2310 If :data:`XATTR_CREATE` is given and the attribute already exists, the
2311 attribute will not be created and ``ENODATA`` will be raised.
2312
2313 This function can support :ref:`specifying a file descriptor <path_fd>` and
2314 :ref:`not following symlinks <follow_symlinks>`.
2315
2316 .. note::
2317
2318 A bug in Linux kernel versions less than 2.6.39 caused the flags argument
2319 to be ignored on some filesystems.
2320
2321
2322.. data:: XATTR_SIZE_MAX
2323
2324 The maximum size the value of an extended attribute can be. Currently, this
2325 is 64 kilobytes on Linux.
2326
2327
2328.. data:: XATTR_CREATE
2329
2330 This is a possible value for the flags argument in :func:`setxattr`. It
2331 indicates the operation must create an attribute.
2332
2333
2334.. data:: XATTR_REPLACE
2335
2336 This is a possible value for the flags argument in :func:`setxattr`. It
2337 indicates the operation must replace an existing attribute.
2338
2339
Georg Brandl116aa622007-08-15 14:28:22 +00002340.. _os-process:
2341
2342Process Management
2343------------------
2344
2345These functions may be used to create and manage processes.
2346
2347The various :func:`exec\*` functions take a list of arguments for the new
2348program loaded into the process. In each case, the first of these arguments is
2349passed to the new program as its own name rather than as an argument a user may
2350have typed on a command line. For the C programmer, this is the ``argv[0]``
Georg Brandl60203b42010-10-06 10:11:56 +00002351passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo',
Georg Brandl116aa622007-08-15 14:28:22 +00002352['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
2353to be ignored.
2354
2355
2356.. function:: abort()
2357
2358 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
2359 behavior is to produce a core dump; on Windows, the process immediately returns
Victor Stinner6e2e3b92011-07-08 02:26:39 +02002360 an exit code of ``3``. Be aware that calling this function will not call the
2361 Python signal handler registered for :const:`SIGABRT` with
2362 :func:`signal.signal`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002363
Georg Brandlc575c902008-09-13 17:46:05 +00002364 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002365
2366
2367.. function:: execl(path, arg0, arg1, ...)
2368 execle(path, arg0, arg1, ..., env)
2369 execlp(file, arg0, arg1, ...)
2370 execlpe(file, arg0, arg1, ..., env)
2371 execv(path, args)
2372 execve(path, args, env)
2373 execvp(file, args)
2374 execvpe(file, args, env)
2375
2376 These functions all execute a new program, replacing the current process; they
2377 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00002378 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00002379 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002380
2381 The current process is replaced immediately. Open file objects and
2382 descriptors are not flushed, so if there may be data buffered
2383 on these open files, you should flush them using
2384 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
2385 :func:`exec\*` function.
Georg Brandl116aa622007-08-15 14:28:22 +00002386
Christian Heimesfaf2f632008-01-06 16:59:19 +00002387 The "l" and "v" variants of the :func:`exec\*` functions differ in how
2388 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002389 to work with if the number of parameters is fixed when the code is written; the
2390 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002391 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00002392 variable, with the arguments being passed in a list or tuple as the *args*
2393 parameter. In either case, the arguments to the child process should start with
2394 the name of the command being run, but this is not enforced.
2395
Christian Heimesfaf2f632008-01-06 16:59:19 +00002396 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002397 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
2398 :envvar:`PATH` environment variable to locate the program *file*. When the
2399 environment is being replaced (using one of the :func:`exec\*e` variants,
2400 discussed in the next paragraph), the new environment is used as the source of
2401 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
2402 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
2403 locate the executable; *path* must contain an appropriate absolute or relative
2404 path.
2405
2406 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00002407 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00002408 used to define the environment variables for the new process (these are used
2409 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00002410 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00002411 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002412
Larry Hastings9cf065c2012-06-22 16:30:09 -07002413 For :func:`execve` on some platforms, *path* may also be specified as an open
2414 file descriptor. This functionality may not be supported on your platform;
2415 you can check whether or not it is available using :data:`os.supports_fd`.
2416 If it is unavailable, using it will raise a :exc:`NotImplementedError`.
2417
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002418 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002419
Larry Hastings9cf065c2012-06-22 16:30:09 -07002420 .. versionadded:: 3.3
2421 Added support for specifying an open file descriptor for *path*
2422 for :func:`execve`.
Georg Brandl116aa622007-08-15 14:28:22 +00002423
2424.. function:: _exit(n)
2425
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002426 Exit the process with status *n*, without calling cleanup handlers, flushing
Benjamin Petersonf650e462010-05-06 23:03:05 +00002427 stdio buffers, etc.
2428
2429 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002430
2431 .. note::
2432
Georg Brandl6f4e68d2010-10-17 10:51:45 +00002433 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should
2434 normally only be used in the child process after a :func:`fork`.
Georg Brandl116aa622007-08-15 14:28:22 +00002435
Christian Heimesfaf2f632008-01-06 16:59:19 +00002436The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00002437although they are not required. These are typically used for system programs
2438written in Python, such as a mail server's external command delivery program.
2439
2440.. note::
2441
2442 Some of these may not be available on all Unix platforms, since there is some
2443 variation. These constants are defined where they are defined by the underlying
2444 platform.
2445
2446
2447.. data:: EX_OK
2448
Benjamin Petersonf650e462010-05-06 23:03:05 +00002449 Exit code that means no error occurred.
2450
2451 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002452
Georg Brandl116aa622007-08-15 14:28:22 +00002453
2454.. data:: EX_USAGE
2455
2456 Exit code that means the command was used incorrectly, such as when the wrong
Benjamin Petersonf650e462010-05-06 23:03:05 +00002457 number of arguments are given.
2458
2459 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002460
Georg Brandl116aa622007-08-15 14:28:22 +00002461
2462.. data:: EX_DATAERR
2463
Benjamin Petersonf650e462010-05-06 23:03:05 +00002464 Exit code that means the input data was incorrect.
2465
2466 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002467
Georg Brandl116aa622007-08-15 14:28:22 +00002468
2469.. data:: EX_NOINPUT
2470
2471 Exit code that means an input file did not exist or was not readable.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002472
Georg Brandlc575c902008-09-13 17:46:05 +00002473 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002474
Georg Brandl116aa622007-08-15 14:28:22 +00002475
2476.. data:: EX_NOUSER
2477
Benjamin Petersonf650e462010-05-06 23:03:05 +00002478 Exit code that means a specified user did not exist.
2479
2480 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002481
Georg Brandl116aa622007-08-15 14:28:22 +00002482
2483.. data:: EX_NOHOST
2484
Benjamin Petersonf650e462010-05-06 23:03:05 +00002485 Exit code that means a specified host did not exist.
2486
2487 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002488
Georg Brandl116aa622007-08-15 14:28:22 +00002489
2490.. data:: EX_UNAVAILABLE
2491
Benjamin Petersonf650e462010-05-06 23:03:05 +00002492 Exit code that means that a required service is unavailable.
2493
2494 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002495
Georg Brandl116aa622007-08-15 14:28:22 +00002496
2497.. data:: EX_SOFTWARE
2498
Benjamin Petersonf650e462010-05-06 23:03:05 +00002499 Exit code that means an internal software error was detected.
2500
2501 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002502
Georg Brandl116aa622007-08-15 14:28:22 +00002503
2504.. data:: EX_OSERR
2505
2506 Exit code that means an operating system error was detected, such as the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002507 inability to fork or create a pipe.
2508
2509 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002510
Georg Brandl116aa622007-08-15 14:28:22 +00002511
2512.. data:: EX_OSFILE
2513
2514 Exit code that means some system file did not exist, could not be opened, or had
Benjamin Petersonf650e462010-05-06 23:03:05 +00002515 some other kind of error.
2516
2517 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002518
Georg Brandl116aa622007-08-15 14:28:22 +00002519
2520.. data:: EX_CANTCREAT
2521
2522 Exit code that means a user specified output file could not be created.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002523
Georg Brandlc575c902008-09-13 17:46:05 +00002524 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002525
Georg Brandl116aa622007-08-15 14:28:22 +00002526
2527.. data:: EX_IOERR
2528
2529 Exit code that means that an error occurred while doing I/O on some file.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002530
Georg Brandlc575c902008-09-13 17:46:05 +00002531 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002532
Georg Brandl116aa622007-08-15 14:28:22 +00002533
2534.. data:: EX_TEMPFAIL
2535
2536 Exit code that means a temporary failure occurred. This indicates something
2537 that may not really be an error, such as a network connection that couldn't be
Benjamin Petersonf650e462010-05-06 23:03:05 +00002538 made during a retryable operation.
2539
2540 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002541
Georg Brandl116aa622007-08-15 14:28:22 +00002542
2543.. data:: EX_PROTOCOL
2544
2545 Exit code that means that a protocol exchange was illegal, invalid, or not
Benjamin Petersonf650e462010-05-06 23:03:05 +00002546 understood.
2547
2548 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002549
Georg Brandl116aa622007-08-15 14:28:22 +00002550
2551.. data:: EX_NOPERM
2552
2553 Exit code that means that there were insufficient permissions to perform the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002554 operation (but not intended for file system problems).
2555
2556 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002557
Georg Brandl116aa622007-08-15 14:28:22 +00002558
2559.. data:: EX_CONFIG
2560
2561 Exit code that means that some kind of configuration error occurred.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002562
Georg Brandlc575c902008-09-13 17:46:05 +00002563 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002564
Georg Brandl116aa622007-08-15 14:28:22 +00002565
2566.. data:: EX_NOTFOUND
2567
Benjamin Petersonf650e462010-05-06 23:03:05 +00002568 Exit code that means something like "an entry was not found".
2569
2570 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002571
Georg Brandl116aa622007-08-15 14:28:22 +00002572
2573.. function:: fork()
2574
Christian Heimesfaf2f632008-01-06 16:59:19 +00002575 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002576 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00002577
2578 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
2579 known issues when using fork() from a thread.
2580
Georg Brandlc575c902008-09-13 17:46:05 +00002581 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002582
2583
2584.. function:: forkpty()
2585
2586 Fork a child process, using a new pseudo-terminal as the child's controlling
2587 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
2588 new child's process id in the parent, and *fd* is the file descriptor of the
2589 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002590 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002591
Georg Brandlc575c902008-09-13 17:46:05 +00002592 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002593
2594
2595.. function:: kill(pid, sig)
2596
2597 .. index::
2598 single: process; killing
2599 single: process; signalling
2600
2601 Send signal *sig* to the process *pid*. Constants for the specific signals
2602 available on the host platform are defined in the :mod:`signal` module.
Brian Curtineb24d742010-04-12 17:16:38 +00002603
2604 Windows: The :data:`signal.CTRL_C_EVENT` and
2605 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can
2606 only be sent to console processes which share a common console window,
2607 e.g., some subprocesses. Any other value for *sig* will cause the process
2608 to be unconditionally killed by the TerminateProcess API, and the exit code
2609 will be set to *sig*. The Windows version of :func:`kill` additionally takes
2610 process handles to be killed.
Georg Brandl116aa622007-08-15 14:28:22 +00002611
Victor Stinnerb3e72192011-05-08 01:46:11 +02002612 See also :func:`signal.pthread_kill`.
2613
Georg Brandl67b21b72010-08-17 15:07:14 +00002614 .. versionadded:: 3.2
2615 Windows support.
Brian Curtin904bd392010-04-20 15:28:06 +00002616
Georg Brandl116aa622007-08-15 14:28:22 +00002617
2618.. function:: killpg(pgid, sig)
2619
2620 .. index::
2621 single: process; killing
2622 single: process; signalling
2623
Benjamin Petersonf650e462010-05-06 23:03:05 +00002624 Send the signal *sig* to the process group *pgid*.
2625
2626 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002627
Georg Brandl116aa622007-08-15 14:28:22 +00002628
2629.. function:: nice(increment)
2630
2631 Add *increment* to the process's "niceness". Return the new niceness.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002632
Georg Brandlc575c902008-09-13 17:46:05 +00002633 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002634
2635
2636.. function:: plock(op)
2637
2638 Lock program segments into memory. The value of *op* (defined in
Benjamin Petersonf650e462010-05-06 23:03:05 +00002639 ``<sys/lock.h>``) determines which segments are locked.
2640
2641 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002642
2643
2644.. function:: popen(...)
2645 :noindex:
2646
2647 Run child processes, returning opened pipes for communications. These functions
2648 are described in section :ref:`os-newstreams`.
2649
2650
2651.. function:: spawnl(mode, path, ...)
2652 spawnle(mode, path, ..., env)
2653 spawnlp(mode, file, ...)
2654 spawnlpe(mode, file, ..., env)
2655 spawnv(mode, path, args)
2656 spawnve(mode, path, args, env)
2657 spawnvp(mode, file, args)
2658 spawnvpe(mode, file, args, env)
2659
2660 Execute the program *path* in a new process.
2661
2662 (Note that the :mod:`subprocess` module provides more powerful facilities for
2663 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00002664 preferable to using these functions. Check especially the
2665 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00002666
Christian Heimesfaf2f632008-01-06 16:59:19 +00002667 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00002668 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
2669 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002670 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00002671 be used with the :func:`waitpid` function.
2672
Christian Heimesfaf2f632008-01-06 16:59:19 +00002673 The "l" and "v" variants of the :func:`spawn\*` functions differ in how
2674 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00002675 to work with if the number of parameters is fixed when the code is written; the
2676 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00002677 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00002678 parameters is variable, with the arguments being passed in a list or tuple as
2679 the *args* parameter. In either case, the arguments to the child process must
2680 start with the name of the command being run.
2681
Christian Heimesfaf2f632008-01-06 16:59:19 +00002682 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00002683 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
2684 :envvar:`PATH` environment variable to locate the program *file*. When the
2685 environment is being replaced (using one of the :func:`spawn\*e` variants,
2686 discussed in the next paragraph), the new environment is used as the source of
2687 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
2688 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
2689 :envvar:`PATH` variable to locate the executable; *path* must contain an
2690 appropriate absolute or relative path.
2691
2692 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00002693 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00002694 which is used to define the environment variables for the new process (they are
2695 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00002696 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00002697 the new process to inherit the environment of the current process. Note that
2698 keys and values in the *env* dictionary must be strings; invalid keys or
2699 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00002700
2701 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
2702 equivalent::
2703
2704 import os
2705 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
2706
2707 L = ['cp', 'index.html', '/dev/null']
2708 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
2709
2710 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
Antoine Pitrou0e752dd2011-07-19 01:26:58 +02002711 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and
2712 :func:`spawnve` are not thread-safe on Windows; we advise you to use the
2713 :mod:`subprocess` module instead.
Georg Brandl116aa622007-08-15 14:28:22 +00002714
Georg Brandl116aa622007-08-15 14:28:22 +00002715
2716.. data:: P_NOWAIT
2717 P_NOWAITO
2718
2719 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2720 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00002721 will return as soon as the new process has been created, with the process id as
Benjamin Petersonf650e462010-05-06 23:03:05 +00002722 the return value.
2723
2724 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002725
Georg Brandl116aa622007-08-15 14:28:22 +00002726
2727.. data:: P_WAIT
2728
2729 Possible value for the *mode* parameter to the :func:`spawn\*` family of
2730 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
2731 return until the new process has run to completion and will return the exit code
2732 of the process the run is successful, or ``-signal`` if a signal kills the
Benjamin Petersonf650e462010-05-06 23:03:05 +00002733 process.
2734
2735 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002736
Georg Brandl116aa622007-08-15 14:28:22 +00002737
2738.. data:: P_DETACH
2739 P_OVERLAY
2740
2741 Possible values for the *mode* parameter to the :func:`spawn\*` family of
2742 functions. These are less portable than those listed above. :const:`P_DETACH`
2743 is similar to :const:`P_NOWAIT`, but the new process is detached from the
2744 console of the calling process. If :const:`P_OVERLAY` is used, the current
2745 process will be replaced; the :func:`spawn\*` function will not return.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002746
Georg Brandl116aa622007-08-15 14:28:22 +00002747 Availability: Windows.
2748
Georg Brandl116aa622007-08-15 14:28:22 +00002749
2750.. function:: startfile(path[, operation])
2751
2752 Start a file with its associated application.
2753
2754 When *operation* is not specified or ``'open'``, this acts like double-clicking
2755 the file in Windows Explorer, or giving the file name as an argument to the
2756 :program:`start` command from the interactive command shell: the file is opened
2757 with whatever application (if any) its extension is associated.
2758
2759 When another *operation* is given, it must be a "command verb" that specifies
2760 what should be done with the file. Common verbs documented by Microsoft are
2761 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
2762 ``'find'`` (to be used on directories).
2763
2764 :func:`startfile` returns as soon as the associated application is launched.
2765 There is no option to wait for the application to close, and no way to retrieve
2766 the application's exit status. The *path* parameter is relative to the current
2767 directory. If you want to use an absolute path, make sure the first character
Georg Brandl60203b42010-10-06 10:11:56 +00002768 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function
Georg Brandl116aa622007-08-15 14:28:22 +00002769 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
Benjamin Petersonf650e462010-05-06 23:03:05 +00002770 the path is properly encoded for Win32.
2771
2772 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002773
Georg Brandl116aa622007-08-15 14:28:22 +00002774
2775.. function:: system(command)
2776
2777 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl60203b42010-10-06 10:11:56 +00002778 the Standard C function :c:func:`system`, and has the same limitations.
Georg Brandl8f7b4272010-10-14 06:35:53 +00002779 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of
2780 the executed command. If *command* generates any output, it will be sent to
2781 the interpreter standard output stream.
Georg Brandl116aa622007-08-15 14:28:22 +00002782
2783 On Unix, the return value is the exit status of the process encoded in the
Georg Brandl8f7b4272010-10-14 06:35:53 +00002784 format specified for :func:`wait`. Note that POSIX does not specify the
2785 meaning of the return value of the C :c:func:`system` function, so the return
2786 value of the Python function is system-dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00002787
Georg Brandl8f7b4272010-10-14 06:35:53 +00002788 On Windows, the return value is that returned by the system shell after
2789 running *command*. The shell is given by the Windows environment variable
2790 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit
2791 status of the command run; on systems using a non-native shell, consult your
2792 shell documentation.
Georg Brandl116aa622007-08-15 14:28:22 +00002793
Georg Brandl8f7b4272010-10-14 06:35:53 +00002794 The :mod:`subprocess` module provides more powerful facilities for spawning
2795 new processes and retrieving their results; using that module is preferable
2796 to using this function. See the :ref:`subprocess-replacements` section in
2797 the :mod:`subprocess` documentation for some helpful recipes.
Georg Brandl116aa622007-08-15 14:28:22 +00002798
Benjamin Petersonf650e462010-05-06 23:03:05 +00002799 Availability: Unix, Windows.
2800
Georg Brandl116aa622007-08-15 14:28:22 +00002801
2802.. function:: times()
2803
Benjamin Petersonf650e462010-05-06 23:03:05 +00002804 Return a 5-tuple of floating point numbers indicating accumulated (processor
2805 or other) times, in seconds. The items are: user time, system time,
2806 children's user time, children's system time, and elapsed real time since a
2807 fixed point in the past, in that order. See the Unix manual page
2808 :manpage:`times(2)` or the corresponding Windows Platform API documentation.
2809 On Windows, only the first two items are filled, the others are zero.
2810
Georg Brandl8a5555f2012-06-24 13:29:09 +02002811 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00002812
2813
2814.. function:: wait()
2815
2816 Wait for completion of a child process, and return a tuple containing its pid
2817 and exit status indication: a 16-bit number, whose low byte is the signal number
2818 that killed the process, and whose high byte is the exit status (if the signal
2819 number is zero); the high bit of the low byte is set if a core file was
Benjamin Petersonf650e462010-05-06 23:03:05 +00002820 produced.
2821
2822 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002823
Ross Lagerwall7807c352011-03-17 20:20:30 +02002824.. function:: waitid(idtype, id, options)
2825
2826 Wait for the completion of one or more child processes.
2827 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`.
2828 *id* specifies the pid to wait on.
2829 *options* is constructed from the ORing of one or more of :data:`WEXITED`,
2830 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with
2831 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object
2832 representing the data contained in the :c:type:`siginfo_t` structure, namely:
2833 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`,
2834 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no
2835 children in a waitable state.
2836
2837 Availability: Unix.
2838
2839 .. versionadded:: 3.3
2840
2841.. data:: P_PID
2842 P_PGID
2843 P_ALL
2844
2845 These are the possible values for *idtype* in :func:`waitid`. They affect
2846 how *id* is interpreted.
2847
2848 Availability: Unix.
2849
2850 .. versionadded:: 3.3
2851
2852.. data:: WEXITED
2853 WSTOPPED
2854 WNOWAIT
2855
2856 Flags that can be used in *options* in :func:`waitid` that specify what
2857 child signal to wait for.
2858
2859 Availability: Unix.
2860
2861 .. versionadded:: 3.3
2862
2863
2864.. data:: CLD_EXITED
2865 CLD_DUMPED
2866 CLD_TRAPPED
2867 CLD_CONTINUED
2868
2869 These are the possible values for :attr:`si_code` in the result returned by
2870 :func:`waitid`.
2871
2872 Availability: Unix.
2873
2874 .. versionadded:: 3.3
2875
Georg Brandl116aa622007-08-15 14:28:22 +00002876
2877.. function:: waitpid(pid, options)
2878
2879 The details of this function differ on Unix and Windows.
2880
2881 On Unix: Wait for completion of a child process given by process id *pid*, and
2882 return a tuple containing its process id and exit status indication (encoded as
2883 for :func:`wait`). The semantics of the call are affected by the value of the
2884 integer *options*, which should be ``0`` for normal operation.
2885
2886 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
2887 that specific process. If *pid* is ``0``, the request is for the status of any
2888 child in the process group of the current process. If *pid* is ``-1``, the
2889 request pertains to any child of the current process. If *pid* is less than
2890 ``-1``, status is requested for any process in the process group ``-pid`` (the
2891 absolute value of *pid*).
2892
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00002893 An :exc:`OSError` is raised with the value of errno when the syscall
2894 returns -1.
2895
Georg Brandl116aa622007-08-15 14:28:22 +00002896 On Windows: Wait for completion of a process given by process handle *pid*, and
2897 return a tuple containing *pid*, and its exit status shifted left by 8 bits
2898 (shifting makes cross-platform use of the function easier). A *pid* less than or
2899 equal to ``0`` has no special meaning on Windows, and raises an exception. The
2900 value of integer *options* has no effect. *pid* can refer to any process whose
2901 id is known, not necessarily a child process. The :func:`spawn` functions called
2902 with :const:`P_NOWAIT` return suitable process handles.
2903
2904
Victor Stinner4195b5c2012-02-08 23:03:19 +01002905.. function:: wait3([options])
Georg Brandl116aa622007-08-15 14:28:22 +00002906
2907 Similar to :func:`waitpid`, except no process id argument is given and a
2908 3-element tuple containing the child's process id, exit status indication, and
2909 resource usage information is returned. Refer to :mod:`resource`.\
2910 :func:`getrusage` for details on resource usage information. The option
2911 argument is the same as that provided to :func:`waitpid` and :func:`wait4`.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002912
Georg Brandl116aa622007-08-15 14:28:22 +00002913 Availability: Unix.
2914
Georg Brandl116aa622007-08-15 14:28:22 +00002915
Victor Stinner4195b5c2012-02-08 23:03:19 +01002916.. function:: wait4(pid, options)
Georg Brandl116aa622007-08-15 14:28:22 +00002917
2918 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
2919 process id, exit status indication, and resource usage information is returned.
2920 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage
2921 information. The arguments to :func:`wait4` are the same as those provided to
Benjamin Petersonf650e462010-05-06 23:03:05 +00002922 :func:`waitpid`.
2923
2924 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002925
Georg Brandl116aa622007-08-15 14:28:22 +00002926
2927.. data:: WNOHANG
2928
2929 The option for :func:`waitpid` to return immediately if no child process status
2930 is available immediately. The function returns ``(0, 0)`` in this case.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002931
Georg Brandlc575c902008-09-13 17:46:05 +00002932 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002933
2934
2935.. data:: WCONTINUED
2936
2937 This option causes child processes to be reported if they have been continued
Benjamin Petersonf650e462010-05-06 23:03:05 +00002938 from a job control stop since their status was last reported.
2939
Georg Brandl8a5555f2012-06-24 13:29:09 +02002940 Availability: some Unix systems.
Georg Brandl116aa622007-08-15 14:28:22 +00002941
Georg Brandl116aa622007-08-15 14:28:22 +00002942
2943.. data:: WUNTRACED
2944
2945 This option causes child processes to be reported if they have been stopped but
Benjamin Petersonf650e462010-05-06 23:03:05 +00002946 their current state has not been reported since they were stopped.
2947
2948 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002949
Georg Brandl116aa622007-08-15 14:28:22 +00002950
2951The following functions take a process status code as returned by
2952:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
2953used to determine the disposition of a process.
2954
Georg Brandl116aa622007-08-15 14:28:22 +00002955.. function:: WCOREDUMP(status)
2956
Christian Heimesfaf2f632008-01-06 16:59:19 +00002957 Return ``True`` if a core dump was generated for the process, otherwise
Benjamin Petersonf650e462010-05-06 23:03:05 +00002958 return ``False``.
2959
2960 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002961
Georg Brandl116aa622007-08-15 14:28:22 +00002962
2963.. function:: WIFCONTINUED(status)
2964
Christian Heimesfaf2f632008-01-06 16:59:19 +00002965 Return ``True`` if the process has been continued from a job control stop,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002966 otherwise return ``False``.
2967
2968 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002969
Georg Brandl116aa622007-08-15 14:28:22 +00002970
2971.. function:: WIFSTOPPED(status)
2972
Christian Heimesfaf2f632008-01-06 16:59:19 +00002973 Return ``True`` if the process has been stopped, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00002974 ``False``.
2975
2976 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002977
2978
2979.. function:: WIFSIGNALED(status)
2980
Christian Heimesfaf2f632008-01-06 16:59:19 +00002981 Return ``True`` if the process exited due to a signal, otherwise return
Benjamin Petersonf650e462010-05-06 23:03:05 +00002982 ``False``.
2983
2984 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002985
2986
2987.. function:: WIFEXITED(status)
2988
Christian Heimesfaf2f632008-01-06 16:59:19 +00002989 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Benjamin Petersonf650e462010-05-06 23:03:05 +00002990 otherwise return ``False``.
2991
2992 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00002993
2994
2995.. function:: WEXITSTATUS(status)
2996
2997 If ``WIFEXITED(status)`` is true, return the integer parameter to the
2998 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Benjamin Petersonf650e462010-05-06 23:03:05 +00002999
Georg Brandlc575c902008-09-13 17:46:05 +00003000 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003001
3002
3003.. function:: WSTOPSIG(status)
3004
Benjamin Petersonf650e462010-05-06 23:03:05 +00003005 Return the signal which caused the process to stop.
3006
3007 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003008
3009
3010.. function:: WTERMSIG(status)
3011
Benjamin Petersonf650e462010-05-06 23:03:05 +00003012 Return the signal which caused the process to exit.
3013
3014 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003015
3016
Benjamin Peterson94b580d2011-08-02 17:30:04 -05003017Interface to the scheduler
3018--------------------------
3019
3020These functions control how a process is allocated CPU time by the operating
3021system. They are only available on some Unix platforms. For more detailed
3022information, consult your Unix manpages.
3023
3024.. versionadded:: 3.3
3025
3026The following scheduling policies are exposed if they are a supported by the
3027operating system.
3028
3029.. data:: SCHED_OTHER
3030
3031 The default scheduling policy.
3032
3033.. data:: SCHED_BATCH
3034
3035 Scheduling policy for CPU-intensive processes that tries to preserve
3036 interactivity on the rest of the computer.
3037
3038.. data:: SCHED_IDLE
3039
3040 Scheduling policy for extremely low priority background tasks.
3041
3042.. data:: SCHED_SPORADIC
3043
3044 Scheduling policy for sporadic server programs.
3045
3046.. data:: SCHED_FIFO
3047
3048 A First In First Out scheduling policy.
3049
3050.. data:: SCHED_RR
3051
3052 A round-robin scheduling policy.
3053
3054.. data:: SCHED_RESET_ON_FORK
3055
3056 This flag can OR'ed with any other scheduling policy. When a process with
3057 this flag set forks, its child's scheduling policy and priority are reset to
3058 the default.
3059
3060
3061.. class:: sched_param(sched_priority)
3062
3063 This class represents tunable scheduling parameters used in
3064 :func:`sched_setparam`, :func:`sched_setscheduler`, and
3065 :func:`sched_getparam`. It is immutable.
3066
3067 At the moment, there is only one possible parameter:
3068
3069 .. attribute:: sched_priority
3070
3071 The scheduling priority for a scheduling policy.
3072
3073
3074.. function:: sched_get_priority_min(policy)
3075
3076 Get the minimum priority value for *policy*. *policy* is one of the
3077 scheduling policy constants above.
3078
3079
3080.. function:: sched_get_priority_max(policy)
3081
3082 Get the maximum priority value for *policy*. *policy* is one of the
3083 scheduling policy constants above.
3084
3085
3086.. function:: sched_setscheduler(pid, policy, param)
3087
3088 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means
3089 the calling process. *policy* is one of the scheduling policy constants
3090 above. *param* is a :class:`sched_param` instance.
3091
3092
3093.. function:: sched_getscheduler(pid)
3094
3095 Return the scheduling policy for the process with PID *pid*. A *pid* of 0
3096 means the calling process. The result is one of the scheduling policy
3097 constants above.
3098
3099
3100.. function:: sched_setparam(pid, param)
3101
3102 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means
3103 the calling process. *param* is a :class:`sched_param` instance.
3104
3105
3106.. function:: sched_getparam(pid)
3107
3108 Return the scheduling parameters as a :class:`sched_param` instance for the
3109 process with PID *pid*. A *pid* of 0 means the calling process.
3110
3111
3112.. function:: sched_rr_get_interval(pid)
3113
3114 Return the round-robin quantum in seconds for the process with PID *pid*. A
3115 *pid* of 0 means the calling process.
3116
3117
3118.. function:: sched_yield()
3119
3120 Voluntarily relinquish the CPU.
3121
3122
3123.. class:: cpu_set(ncpus)
3124
3125 :class:`cpu_set` represents a set of CPUs on which a process is eligible to
3126 run. *ncpus* is the number of CPUs the set should describe. Methods on
3127 :class:`cpu_set` allow CPUs to be add or removed.
3128
3129 :class:`cpu_set` supports the AND, OR, and XOR bitwise operations. For
3130 example, given two cpu_sets, ``one`` and ``two``, ``one | two`` returns a
3131 :class:`cpu_set` containing the cpus enabled both in ``one`` and ``two``.
3132
3133 .. method:: set(i)
3134
3135 Enable CPU *i*.
3136
3137 .. method:: clear(i)
3138
3139 Remove CPU *i*.
3140
3141 .. method:: isset(i)
3142
3143 Return ``True`` if CPU *i* is enabled in the set.
3144
3145 .. method:: count()
3146
3147 Return the number of enabled CPUs in the set.
3148
3149 .. method:: zero()
3150
3151 Clear the set completely.
3152
3153
3154.. function:: sched_setaffinity(pid, mask)
3155
3156 Restrict the process with PID *pid* to a set of CPUs. *mask* is a
3157 :class:`cpu_set` instance.
3158
3159
3160.. function:: sched_getaffinity(pid, size)
3161
3162 Return the :class:`cpu_set` the process with PID *pid* is restricted to. The
3163 result will contain *size* CPUs.
3164
3165
Georg Brandl116aa622007-08-15 14:28:22 +00003166.. _os-path:
3167
3168Miscellaneous System Information
3169--------------------------------
3170
3171
3172.. function:: confstr(name)
3173
3174 Return string-valued system configuration values. *name* specifies the
3175 configuration value to retrieve; it may be a string which is the name of a
3176 defined system value; these names are specified in a number of standards (POSIX,
3177 Unix 95, Unix 98, and others). Some platforms define additional names as well.
3178 The names known to the host operating system are given as the keys of the
3179 ``confstr_names`` dictionary. For configuration variables not included in that
Benjamin Petersonf650e462010-05-06 23:03:05 +00003180 mapping, passing an integer for *name* is also accepted.
Georg Brandl116aa622007-08-15 14:28:22 +00003181
3182 If the configuration value specified by *name* isn't defined, ``None`` is
3183 returned.
3184
3185 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
3186 specific value for *name* is not supported by the host system, even if it is
3187 included in ``confstr_names``, an :exc:`OSError` is raised with
3188 :const:`errno.EINVAL` for the error number.
3189
Georg Brandl8a5555f2012-06-24 13:29:09 +02003190 Availability: Unix.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003191
Georg Brandl116aa622007-08-15 14:28:22 +00003192
3193.. data:: confstr_names
3194
3195 Dictionary mapping names accepted by :func:`confstr` to the integer values
3196 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003197 determine the set of names known to the system.
3198
3199 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003200
3201
3202.. function:: getloadavg()
3203
Christian Heimesa62da1d2008-01-12 19:39:10 +00003204 Return the number of processes in the system run queue averaged over the last
3205 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Benjamin Petersonf650e462010-05-06 23:03:05 +00003206 unobtainable.
3207
3208 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003209
Georg Brandl116aa622007-08-15 14:28:22 +00003210
3211.. function:: sysconf(name)
3212
3213 Return integer-valued system configuration values. If the configuration value
3214 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
3215 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
3216 provides information on the known names is given by ``sysconf_names``.
Benjamin Petersonf650e462010-05-06 23:03:05 +00003217
Georg Brandlc575c902008-09-13 17:46:05 +00003218 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003219
3220
3221.. data:: sysconf_names
3222
3223 Dictionary mapping names accepted by :func:`sysconf` to the integer values
3224 defined for those names by the host operating system. This can be used to
Benjamin Petersonf650e462010-05-06 23:03:05 +00003225 determine the set of names known to the system.
3226
3227 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00003228
Christian Heimesfaf2f632008-01-06 16:59:19 +00003229The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00003230are defined for all platforms.
3231
3232Higher-level operations on pathnames are defined in the :mod:`os.path` module.
3233
3234
3235.. data:: curdir
3236
3237 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00003238 directory. This is ``'.'`` for Windows and POSIX. Also available via
3239 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003240
3241
3242.. data:: pardir
3243
3244 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00003245 directory. This is ``'..'`` for Windows and POSIX. Also available via
3246 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003247
3248
3249.. data:: sep
3250
Georg Brandlc575c902008-09-13 17:46:05 +00003251 The character used by the operating system to separate pathname components.
3252 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
3253 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00003254 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
3255 useful. Also available via :mod:`os.path`.
3256
3257
3258.. data:: altsep
3259
3260 An alternative character used by the operating system to separate pathname
3261 components, or ``None`` if only one separator character exists. This is set to
3262 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
3263 :mod:`os.path`.
3264
3265
3266.. data:: extsep
3267
3268 The character which separates the base filename from the extension; for example,
3269 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
3270
Georg Brandl116aa622007-08-15 14:28:22 +00003271
3272.. data:: pathsep
3273
3274 The character conventionally used by the operating system to separate search
3275 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
3276 Windows. Also available via :mod:`os.path`.
3277
3278
3279.. data:: defpath
3280
3281 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the
3282 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`.
3283
3284
3285.. data:: linesep
3286
3287 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00003288 platform. This may be a single character, such as ``'\n'`` for POSIX, or
3289 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
3290 *os.linesep* as a line terminator when writing files opened in text mode (the
3291 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00003292
3293
3294.. data:: devnull
3295
Georg Brandl850a9902010-05-21 22:04:32 +00003296 The file path of the null device. For example: ``'/dev/null'`` for
3297 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00003298
Georg Brandl116aa622007-08-15 14:28:22 +00003299
3300.. _os-miscfunc:
3301
3302Miscellaneous Functions
3303-----------------------
3304
3305
3306.. function:: urandom(n)
3307
3308 Return a string of *n* random bytes suitable for cryptographic use.
3309
3310 This function returns random bytes from an OS-specific randomness source. The
3311 returned data should be unpredictable enough for cryptographic applications,
Georg Brandlf62445a2012-06-24 13:31:20 +02003312 though its exact quality depends on the OS implementation. On a Unix-like
Georg Brandl116aa622007-08-15 14:28:22 +00003313 system this will query /dev/urandom, and on Windows it will use CryptGenRandom.
3314 If a randomness source is not found, :exc:`NotImplementedError` will be raised.