blob: 70e9a342224a9b99b23d6903cc9606186ce12513 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`os` --- Miscellaneous operating system interfaces
2=======================================================
3
4.. module:: os
5 :synopsis: Miscellaneous operating system interfaces.
6
7
Georg Brandl57fe0f22008-01-12 10:53:29 +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 Brandl8ec7f652007-08-15 14:28:01 +000015
Georg Brandl57fe0f22008-01-12 10:53:29 +000016The design of all built-in operating system dependent modules of Python is such
17that as long as the same functionality is available, it uses the same interface;
18for example, the function ``os.stat(path)`` returns stat information about
19*path* in the same format (which happens to have originated with the POSIX
Georg Brandl8ec7f652007-08-15 14:28:01 +000020interface).
21
22Extensions peculiar to a particular operating system are also available through
23the :mod:`os` module, but using them is of course a threat to portability!
24
Georg Brandl57fe0f22008-01-12 10:53:29 +000025.. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +000026
Georg Brandl9af94982008-09-13 17:41:16 +000027 If not separately noted, all functions that claim "Availability: Unix" are
28 supported on Mac OS X, which builds on a Unix core.
29
30.. note::
31
Georg Brandl57fe0f22008-01-12 10:53:29 +000032 All functions in this module raise :exc:`OSError` in the case of invalid or
33 inaccessible file names and paths, or other arguments that have the correct
34 type, but are not accepted by the operating system.
Georg Brandl8ec7f652007-08-15 14:28:01 +000035
Georg Brandl8ec7f652007-08-15 14:28:01 +000036
37.. exception:: error
38
Georg Brandl57fe0f22008-01-12 10:53:29 +000039 An alias for the built-in :exc:`OSError` exception.
Georg Brandl8ec7f652007-08-15 14:28:01 +000040
41
42.. data:: name
43
44 The name of the operating system dependent module imported. The following names
45 have currently been registered: ``'posix'``, ``'nt'``, ``'mac'``, ``'os2'``,
46 ``'ce'``, ``'java'``, ``'riscos'``.
47
48
Georg Brandl8ec7f652007-08-15 14:28:01 +000049.. _os-procinfo:
50
51Process Parameters
52------------------
53
54These functions and data items provide information and operate on the current
55process and user.
56
57
58.. data:: environ
59
60 A mapping object representing the string environment. For example,
61 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
62 and is equivalent to ``getenv("HOME")`` in C.
63
64 This mapping is captured the first time the :mod:`os` module is imported,
65 typically during Python startup as part of processing :file:`site.py`. Changes
66 to the environment made after this time are not reflected in ``os.environ``,
67 except for changes made by modifying ``os.environ`` directly.
68
69 If the platform supports the :func:`putenv` function, this mapping may be used
70 to modify the environment as well as query the environment. :func:`putenv` will
71 be called automatically when the mapping is modified.
72
73 .. note::
74
75 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
76 to modify ``os.environ``.
77
78 .. note::
79
Georg Brandl9af94982008-09-13 17:41:16 +000080 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
81 cause memory leaks. Refer to the system documentation for
82 :cfunc:`putenv`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000083
84 If :func:`putenv` is not provided, a modified copy of this mapping may be
85 passed to the appropriate process-creation functions to cause child processes
86 to use a modified environment.
87
Georg Brandl4a212682007-09-20 17:57:59 +000088 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl8ec7f652007-08-15 14:28:01 +000089 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl4a212682007-09-20 17:57:59 +000090 automatically when an item is deleted from ``os.environ``, and when
Georg Brandl1a94ec22007-10-24 21:40:38 +000091 one of the :meth:`pop` or :meth:`clear` methods is called.
Georg Brandl4a212682007-09-20 17:57:59 +000092
93 .. versionchanged:: 2.6
Georg Brandl1a94ec22007-10-24 21:40:38 +000094 Also unset environment variables when calling :meth:`os.environ.clear`
95 and :meth:`os.environ.pop`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000096
97
98.. function:: chdir(path)
99 fchdir(fd)
100 getcwd()
101 :noindex:
102
103 These functions are described in :ref:`os-file-dir`.
104
105
106.. function:: ctermid()
107
108 Return the filename corresponding to the controlling terminal of the process.
109 Availability: Unix.
110
111
112.. function:: getegid()
113
114 Return the effective group id of the current process. This corresponds to the
Georg Brandlf725b952008-01-05 19:44:22 +0000115 "set id" bit on the file being executed in the current process. Availability:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000116 Unix.
117
118
119.. function:: geteuid()
120
121 .. index:: single: user; effective id
122
Georg Brandlf725b952008-01-05 19:44:22 +0000123 Return the current process's effective user id. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000124
125
126.. function:: getgid()
127
128 .. index:: single: process; group
129
130 Return the real group id of the current process. Availability: Unix.
131
132
133.. function:: getgroups()
134
135 Return list of supplemental group ids associated with the current process.
136 Availability: Unix.
137
138
139.. function:: getlogin()
140
141 Return the name of the user logged in on the controlling terminal of the
142 process. For most purposes, it is more useful to use the environment variable
143 :envvar:`LOGNAME` to find out who the user is, or
144 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently
Georg Brandlf725b952008-01-05 19:44:22 +0000145 effective user id. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000146
147
148.. function:: getpgid(pid)
149
150 Return the process group id of the process with process id *pid*. If *pid* is 0,
151 the process group id of the current process is returned. Availability: Unix.
152
153 .. versionadded:: 2.3
154
155
156.. function:: getpgrp()
157
158 .. index:: single: process; group
159
160 Return the id of the current process group. Availability: Unix.
161
162
163.. function:: getpid()
164
165 .. index:: single: process; id
166
167 Return the current process id. Availability: Unix, Windows.
168
169
170.. function:: getppid()
171
172 .. index:: single: process; id of parent
173
174 Return the parent's process id. Availability: Unix.
175
Martin v. Löwis50ea4562009-11-27 13:56:01 +0000176.. function:: getresgid()
177
178 Return a tuple (ruid, euid, suid) denoting the current process's
179 real, effective, and saved user ids. Availability: Unix.
180
181 .. versionadded:: 2.7/3.2
182
183.. function:: getresuid()
184
185 Return a tuple (rgid, egid, sgid) denoting the current process's
186 real, effective, and saved user ids. Availability: Unix.
187
188 .. versionadded:: 2.7/3.2
Georg Brandl8ec7f652007-08-15 14:28:01 +0000189
190.. function:: getuid()
191
192 .. index:: single: user; id
193
Georg Brandlf725b952008-01-05 19:44:22 +0000194 Return the current process's user id. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000195
196
197.. function:: getenv(varname[, value])
198
199 Return the value of the environment variable *varname* if it exists, or *value*
200 if it doesn't. *value* defaults to ``None``. Availability: most flavors of
201 Unix, Windows.
202
203
204.. function:: putenv(varname, value)
205
206 .. index:: single: environment variables; setting
207
208 Set the environment variable named *varname* to the string *value*. Such
209 changes to the environment affect subprocesses started with :func:`os.system`,
210 :func:`popen` or :func:`fork` and :func:`execv`. Availability: most flavors of
211 Unix, Windows.
212
213 .. note::
214
Georg Brandl9af94982008-09-13 17:41:16 +0000215 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
216 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000217
218 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
219 automatically translated into corresponding calls to :func:`putenv`; however,
220 calls to :func:`putenv` don't update ``os.environ``, so it is actually
221 preferable to assign to items of ``os.environ``.
222
223
224.. function:: setegid(egid)
225
226 Set the current process's effective group id. Availability: Unix.
227
228
229.. function:: seteuid(euid)
230
231 Set the current process's effective user id. Availability: Unix.
232
233
234.. function:: setgid(gid)
235
236 Set the current process' group id. Availability: Unix.
237
238
239.. function:: setgroups(groups)
240
241 Set the list of supplemental group ids associated with the current process to
242 *groups*. *groups* must be a sequence, and each element must be an integer
Georg Brandlf725b952008-01-05 19:44:22 +0000243 identifying a group. This operation is typically available only to the superuser.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000244 Availability: Unix.
245
246 .. versionadded:: 2.2
247
248
249.. function:: setpgrp()
250
Georg Brandlf725b952008-01-05 19:44:22 +0000251 Call the system call :cfunc:`setpgrp` or :cfunc:`setpgrp(0, 0)` depending on
Georg Brandl8ec7f652007-08-15 14:28:01 +0000252 which version is implemented (if any). See the Unix manual for the semantics.
253 Availability: Unix.
254
255
256.. function:: setpgid(pid, pgrp)
257
Georg Brandlf725b952008-01-05 19:44:22 +0000258 Call the system call :cfunc:`setpgid` to set the process group id of the
Georg Brandl8ec7f652007-08-15 14:28:01 +0000259 process with id *pid* to the process group with id *pgrp*. See the Unix manual
260 for the semantics. Availability: Unix.
261
262
Georg Brandl8ec7f652007-08-15 14:28:01 +0000263.. function:: setregid(rgid, egid)
264
265 Set the current process's real and effective group ids. Availability: Unix.
266
Martin v. Löwis50ea4562009-11-27 13:56:01 +0000267.. function:: setresgid(rgid, egid, sgid)
268
269 Set the current process's real, effective, and saved group ids.
270 Availability: Unix.
271
272 .. versionadded:: 2.7/3.2
273
274.. function:: setresuid(ruid, euid, suid)
275
276 Set the current process's real, effective, and saved user ids.
277 Availibility: Unix.
278
279 .. versionadded:: 2.7/3.2
280
281.. function:: setreuid(ruid, euid)
282
283 Set the current process's real and effective user ids. Availability: Unix.
284
Georg Brandl8ec7f652007-08-15 14:28:01 +0000285
286.. function:: getsid(pid)
287
Georg Brandlf725b952008-01-05 19:44:22 +0000288 Call the system call :cfunc:`getsid`. See the Unix manual for the semantics.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000289 Availability: Unix.
290
291 .. versionadded:: 2.4
292
293
294.. function:: setsid()
295
Georg Brandlf725b952008-01-05 19:44:22 +0000296 Call the system call :cfunc:`setsid`. See the Unix manual for the semantics.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000297 Availability: Unix.
298
299
300.. function:: setuid(uid)
301
302 .. index:: single: user; id, setting
303
Georg Brandlf725b952008-01-05 19:44:22 +0000304 Set the current process's user id. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000305
Georg Brandl8ec7f652007-08-15 14:28:01 +0000306
Georg Brandlb19be572007-12-29 10:57:00 +0000307.. placed in this section since it relates to errno.... a little weak
Georg Brandl8ec7f652007-08-15 14:28:01 +0000308.. function:: strerror(code)
309
310 Return the error message corresponding to the error code in *code*.
Georg Brandl3fc974f2008-05-11 21:16:37 +0000311 On platforms where :cfunc:`strerror` returns ``NULL`` when given an unknown
312 error number, :exc:`ValueError` is raised. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000313
314
315.. function:: umask(mask)
316
Georg Brandlf725b952008-01-05 19:44:22 +0000317 Set the current numeric umask and return the previous umask. Availability:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000318 Unix, Windows.
319
320
321.. function:: uname()
322
323 .. index::
324 single: gethostname() (in module socket)
325 single: gethostbyaddr() (in module socket)
326
327 Return a 5-tuple containing information identifying the current operating
328 system. The tuple contains 5 strings: ``(sysname, nodename, release, version,
329 machine)``. Some systems truncate the nodename to 8 characters or to the
330 leading component; a better way to get the hostname is
331 :func:`socket.gethostname` or even
332 ``socket.gethostbyaddr(socket.gethostname())``. Availability: recent flavors of
333 Unix.
334
335
336.. function:: unsetenv(varname)
337
338 .. index:: single: environment variables; deleting
339
340 Unset (delete) the environment variable named *varname*. Such changes to the
341 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
342 :func:`fork` and :func:`execv`. Availability: most flavors of Unix, Windows.
343
344 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
345 automatically translated into a corresponding call to :func:`unsetenv`; however,
346 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
347 preferable to delete items of ``os.environ``.
348
349
350.. _os-newstreams:
351
352File Object Creation
353--------------------
354
355These functions create new file objects. (See also :func:`open`.)
356
357
358.. function:: fdopen(fd[, mode[, bufsize]])
359
360 .. index:: single: I/O control; buffering
361
362 Return an open file object connected to the file descriptor *fd*. The *mode*
363 and *bufsize* arguments have the same meaning as the corresponding arguments to
Georg Brandl9af94982008-09-13 17:41:16 +0000364 the built-in :func:`open` function. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000365
366 .. versionchanged:: 2.3
367 When specified, the *mode* argument must now start with one of the letters
368 ``'r'``, ``'w'``, or ``'a'``, otherwise a :exc:`ValueError` is raised.
369
370 .. versionchanged:: 2.5
371 On Unix, when the *mode* argument starts with ``'a'``, the *O_APPEND* flag is
372 set on the file descriptor (which the :cfunc:`fdopen` implementation already
373 does on most platforms).
374
375
376.. function:: popen(command[, mode[, bufsize]])
377
378 Open a pipe to or from *command*. The return value is an open file object
379 connected to the pipe, which can be read or written depending on whether *mode*
380 is ``'r'`` (default) or ``'w'``. The *bufsize* argument has the same meaning as
381 the corresponding argument to the built-in :func:`open` function. The exit
382 status of the command (encoded in the format specified for :func:`wait`) is
Georg Brandl012408c2009-05-22 09:43:17 +0000383 available as the return value of the :meth:`~file.close` method of the file object,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000384 except that when the exit status is zero (termination without errors), ``None``
Georg Brandl9af94982008-09-13 17:41:16 +0000385 is returned. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000386
387 .. deprecated:: 2.6
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000388 This function is obsolete. Use the :mod:`subprocess` module. Check
Georg Brandl0ba92b22008-06-22 09:05:29 +0000389 especially the :ref:`subprocess-replacements` section.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000390
391 .. versionchanged:: 2.0
392 This function worked unreliably under Windows in earlier versions of Python.
393 This was due to the use of the :cfunc:`_popen` function from the libraries
394 provided with Windows. Newer versions of Python do not use the broken
395 implementation from the Windows libraries.
396
397
398.. function:: tmpfile()
399
400 Return a new file object opened in update mode (``w+b``). The file has no
401 directory entries associated with it and will be automatically deleted once
Georg Brandl9af94982008-09-13 17:41:16 +0000402 there are no file descriptors for the file. Availability: Unix,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000403 Windows.
404
405There are a number of different :func:`popen\*` functions that provide slightly
406different ways to create subprocesses.
407
408.. deprecated:: 2.6
409 All of the :func:`popen\*` functions are obsolete. Use the :mod:`subprocess`
410 module.
411
412For each of the :func:`popen\*` variants, if *bufsize* is specified, it
413specifies the buffer size for the I/O pipes. *mode*, if provided, should be the
414string ``'b'`` or ``'t'``; on Windows this is needed to determine whether the
415file objects should be opened in binary or text mode. The default value for
416*mode* is ``'t'``.
417
418Also, for each of these variants, on Unix, *cmd* may be a sequence, in which
419case arguments will be passed directly to the program without shell intervention
420(as with :func:`os.spawnv`). If *cmd* is a string it will be passed to the shell
421(as with :func:`os.system`).
422
423These methods do not make it possible to retrieve the exit status from the child
424processes. The only way to control the input and output streams and also
425retrieve the return codes is to use the :mod:`subprocess` module; these are only
426available on Unix.
427
428For a discussion of possible deadlock conditions related to the use of these
429functions, see :ref:`popen2-flow-control`.
430
431
432.. function:: popen2(cmd[, mode[, bufsize]])
433
Georg Brandlf725b952008-01-05 19:44:22 +0000434 Execute *cmd* as a sub-process and return the file objects ``(child_stdin,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000435 child_stdout)``.
436
437 .. deprecated:: 2.6
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000438 This function is obsolete. Use the :mod:`subprocess` module. Check
Georg Brandl0ba92b22008-06-22 09:05:29 +0000439 especially the :ref:`subprocess-replacements` section.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000440
Georg Brandl9af94982008-09-13 17:41:16 +0000441 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000442
443 .. versionadded:: 2.0
444
445
446.. function:: popen3(cmd[, mode[, bufsize]])
447
Georg Brandlf725b952008-01-05 19:44:22 +0000448 Execute *cmd* as a sub-process and return the file objects ``(child_stdin,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000449 child_stdout, child_stderr)``.
450
451 .. deprecated:: 2.6
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000452 This function is obsolete. Use the :mod:`subprocess` module. Check
Georg Brandl0ba92b22008-06-22 09:05:29 +0000453 especially the :ref:`subprocess-replacements` section.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000454
Georg Brandl9af94982008-09-13 17:41:16 +0000455 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000456
457 .. versionadded:: 2.0
458
459
460.. function:: popen4(cmd[, mode[, bufsize]])
461
Georg Brandlf725b952008-01-05 19:44:22 +0000462 Execute *cmd* as a sub-process and return the file objects ``(child_stdin,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000463 child_stdout_and_stderr)``.
464
465 .. deprecated:: 2.6
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000466 This function is obsolete. Use the :mod:`subprocess` module. Check
Georg Brandl0ba92b22008-06-22 09:05:29 +0000467 especially the :ref:`subprocess-replacements` section.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000468
Georg Brandl9af94982008-09-13 17:41:16 +0000469 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000470
471 .. versionadded:: 2.0
472
473(Note that ``child_stdin, child_stdout, and child_stderr`` are named from the
474point of view of the child process, so *child_stdin* is the child's standard
475input.)
476
477This functionality is also available in the :mod:`popen2` module using functions
478of the same names, but the return values of those functions have a different
479order.
480
481
482.. _os-fd-ops:
483
484File Descriptor Operations
485--------------------------
486
487These functions operate on I/O streams referenced using file descriptors.
488
489File descriptors are small integers corresponding to a file that has been opened
490by the current process. For example, standard input is usually file descriptor
4910, standard output is 1, and standard error is 2. Further files opened by a
492process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
493is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
494by file descriptors.
495
496
497.. function:: close(fd)
498
Georg Brandl9af94982008-09-13 17:41:16 +0000499 Close file descriptor *fd*. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000500
501 .. note::
502
503 This function is intended for low-level I/O and must be applied to a file
Georg Brandl012408c2009-05-22 09:43:17 +0000504 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl8ec7f652007-08-15 14:28:01 +0000505 object" returned by the built-in function :func:`open` or by :func:`popen` or
Georg Brandl012408c2009-05-22 09:43:17 +0000506 :func:`fdopen`, use its :meth:`~file.close` method.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000507
508
Georg Brandl309501a2008-01-19 20:22:13 +0000509.. function:: closerange(fd_low, fd_high)
510
511 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandl9af94982008-09-13 17:41:16 +0000512 ignoring errors. Availability: Unix, Windows. Equivalent to::
Georg Brandl309501a2008-01-19 20:22:13 +0000513
514 for fd in xrange(fd_low, fd_high):
515 try:
516 os.close(fd)
517 except OSError:
518 pass
519
520 .. versionadded:: 2.6
521
522
Georg Brandl8ec7f652007-08-15 14:28:01 +0000523.. function:: dup(fd)
524
Georg Brandl9af94982008-09-13 17:41:16 +0000525 Return a duplicate of file descriptor *fd*. Availability: Unix,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000526 Windows.
527
528
529.. function:: dup2(fd, fd2)
530
531 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Georg Brandl9af94982008-09-13 17:41:16 +0000532 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000533
534
Christian Heimes36281872007-11-30 21:11:28 +0000535.. function:: fchmod(fd, mode)
536
537 Change the mode of the file given by *fd* to the numeric *mode*. See the docs
538 for :func:`chmod` for possible values of *mode*. Availability: Unix.
539
Georg Brandl81ddc1a2007-11-30 22:04:45 +0000540 .. versionadded:: 2.6
541
Christian Heimes36281872007-11-30 21:11:28 +0000542
543.. function:: fchown(fd, uid, gid)
544
545 Change the owner and group id of the file given by *fd* to the numeric *uid*
546 and *gid*. To leave one of the ids unchanged, set it to -1.
547 Availability: Unix.
548
Georg Brandl81ddc1a2007-11-30 22:04:45 +0000549 .. versionadded:: 2.6
550
Christian Heimes36281872007-11-30 21:11:28 +0000551
Georg Brandl8ec7f652007-08-15 14:28:01 +0000552.. function:: fdatasync(fd)
553
554 Force write of file with filedescriptor *fd* to disk. Does not force update of
555 metadata. Availability: Unix.
556
Benjamin Petersonecf3c622009-05-30 03:10:52 +0000557 .. note::
558 This function is not available on MacOS.
559
Georg Brandl8ec7f652007-08-15 14:28:01 +0000560
561.. function:: fpathconf(fd, name)
562
563 Return system configuration information relevant to an open file. *name*
564 specifies the configuration value to retrieve; it may be a string which is the
565 name of a defined system value; these names are specified in a number of
566 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
567 additional names as well. The names known to the host operating system are
568 given in the ``pathconf_names`` dictionary. For configuration variables not
569 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl9af94982008-09-13 17:41:16 +0000570 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000571
572 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
573 specific value for *name* is not supported by the host system, even if it is
574 included in ``pathconf_names``, an :exc:`OSError` is raised with
575 :const:`errno.EINVAL` for the error number.
576
577
578.. function:: fstat(fd)
579
580 Return status for file descriptor *fd*, like :func:`stat`. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +0000581 Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000582
583
584.. function:: fstatvfs(fd)
585
586 Return information about the filesystem containing the file associated with file
587 descriptor *fd*, like :func:`statvfs`. Availability: Unix.
588
589
590.. function:: fsync(fd)
591
592 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
593 native :cfunc:`fsync` function; on Windows, the MS :cfunc:`_commit` function.
594
595 If you're starting with a Python file object *f*, first do ``f.flush()``, and
596 then do ``os.fsync(f.fileno())``, to ensure that all internal buffers associated
Georg Brandl9af94982008-09-13 17:41:16 +0000597 with *f* are written to disk. Availability: Unix, and Windows
Georg Brandl8ec7f652007-08-15 14:28:01 +0000598 starting in 2.2.3.
599
600
601.. function:: ftruncate(fd, length)
602
603 Truncate the file corresponding to file descriptor *fd*, so that it is at most
Georg Brandl9af94982008-09-13 17:41:16 +0000604 *length* bytes in size. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000605
606
607.. function:: isatty(fd)
608
609 Return ``True`` if the file descriptor *fd* is open and connected to a
Georg Brandl9af94982008-09-13 17:41:16 +0000610 tty(-like) device, else ``False``. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000611
612
613.. function:: lseek(fd, pos, how)
614
Georg Brandlf725b952008-01-05 19:44:22 +0000615 Set the current position of file descriptor *fd* to position *pos*, modified
616 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
617 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
618 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
Georg Brandl9af94982008-09-13 17:41:16 +0000619 the file. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000620
621
622.. function:: open(file, flags[, mode])
623
624 Open the file *file* and set various flags according to *flags* and possibly its
625 mode according to *mode*. The default *mode* is ``0777`` (octal), and the
626 current umask value is first masked out. Return the file descriptor for the
Georg Brandl9af94982008-09-13 17:41:16 +0000627 newly opened file. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000628
629 For a description of the flag and mode values, see the C run-time documentation;
630 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
631 this module too (see below).
632
633 .. note::
634
Georg Brandl9fa61bb2009-07-26 14:19:57 +0000635 This function is intended for low-level I/O. For normal usage, use the
636 built-in function :func:`open`, which returns a "file object" with
637 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
638 wrap a file descriptor in a "file object", use :func:`fdopen`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000639
640
641.. function:: openpty()
642
643 .. index:: module: pty
644
645 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
646 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Georg Brandl9af94982008-09-13 17:41:16 +0000647 approach, use the :mod:`pty` module. Availability: some flavors of
Georg Brandl8ec7f652007-08-15 14:28:01 +0000648 Unix.
649
650
651.. function:: pipe()
652
653 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Georg Brandl9af94982008-09-13 17:41:16 +0000654 and writing, respectively. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000655
656
657.. function:: read(fd, n)
658
659 Read at most *n* bytes from file descriptor *fd*. Return a string containing the
660 bytes read. If the end of the file referred to by *fd* has been reached, an
Georg Brandl9af94982008-09-13 17:41:16 +0000661 empty string is returned. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000662
663 .. note::
664
665 This function is intended for low-level I/O and must be applied to a file
Georg Brandl012408c2009-05-22 09:43:17 +0000666 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a "file object"
Georg Brandl8ec7f652007-08-15 14:28:01 +0000667 returned by the built-in function :func:`open` or by :func:`popen` or
Georg Brandl012408c2009-05-22 09:43:17 +0000668 :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
669 :meth:`~file.readline` methods.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000670
671
672.. function:: tcgetpgrp(fd)
673
674 Return the process group associated with the terminal given by *fd* (an open
Georg Brandl012408c2009-05-22 09:43:17 +0000675 file descriptor as returned by :func:`os.open`). Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000676
677
678.. function:: tcsetpgrp(fd, pg)
679
680 Set the process group associated with the terminal given by *fd* (an open file
Georg Brandl012408c2009-05-22 09:43:17 +0000681 descriptor as returned by :func:`os.open`) to *pg*. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000682
683
684.. function:: ttyname(fd)
685
686 Return a string which specifies the terminal device associated with
Georg Brandlbb75e4e2007-10-21 10:46:24 +0000687 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Georg Brandl9af94982008-09-13 17:41:16 +0000688 exception is raised. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000689
690
691.. function:: write(fd, str)
692
693 Write the string *str* to file descriptor *fd*. Return the number of bytes
Georg Brandl9af94982008-09-13 17:41:16 +0000694 actually written. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000695
696 .. note::
697
698 This function is intended for low-level I/O and must be applied to a file
Georg Brandl012408c2009-05-22 09:43:17 +0000699 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl8ec7f652007-08-15 14:28:01 +0000700 object" returned by the built-in function :func:`open` or by :func:`popen` or
Georg Brandl012408c2009-05-22 09:43:17 +0000701 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
702 :meth:`~file.write` method.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000703
Georg Brandl0c880bd2008-12-05 08:02:17 +0000704The following constants are options for the *flags* parameter to the
Georg Brandl012408c2009-05-22 09:43:17 +0000705:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandl0c880bd2008-12-05 08:02:17 +0000706``|``. Some of them are not available on all platforms. For descriptions of
Georg Brandle70ff4b2008-12-05 09:25:32 +0000707their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmann1d18b5b2009-09-20 20:44:13 +0000708or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000709
710
711.. data:: O_RDONLY
712 O_WRONLY
713 O_RDWR
714 O_APPEND
715 O_CREAT
716 O_EXCL
717 O_TRUNC
718
Georg Brandl0c880bd2008-12-05 08:02:17 +0000719 These constants are available on Unix and Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000720
721
722.. data:: O_DSYNC
723 O_RSYNC
724 O_SYNC
725 O_NDELAY
726 O_NONBLOCK
727 O_NOCTTY
728 O_SHLOCK
729 O_EXLOCK
730
Georg Brandl0c880bd2008-12-05 08:02:17 +0000731 These constants are only available on Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000732
733
734.. data:: O_BINARY
Georg Brandlb67da6e2007-11-24 13:56:09 +0000735 O_NOINHERIT
Georg Brandl8ec7f652007-08-15 14:28:01 +0000736 O_SHORT_LIVED
737 O_TEMPORARY
738 O_RANDOM
739 O_SEQUENTIAL
740 O_TEXT
741
Georg Brandl0c880bd2008-12-05 08:02:17 +0000742 These constants are only available on Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000743
744
Georg Brandlae6b9f32008-05-16 13:41:26 +0000745.. data:: O_ASYNC
746 O_DIRECT
Georg Brandlb67da6e2007-11-24 13:56:09 +0000747 O_DIRECTORY
748 O_NOFOLLOW
749 O_NOATIME
750
Georg Brandl0c880bd2008-12-05 08:02:17 +0000751 These constants are GNU extensions and not present if they are not defined by
752 the C library.
Georg Brandlb67da6e2007-11-24 13:56:09 +0000753
754
Georg Brandl8ec7f652007-08-15 14:28:01 +0000755.. data:: SEEK_SET
756 SEEK_CUR
757 SEEK_END
758
759 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandl9af94982008-09-13 17:41:16 +0000760 respectively. Availability: Windows, Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000761
762 .. versionadded:: 2.5
763
764
765.. _os-file-dir:
766
767Files and Directories
768---------------------
769
Georg Brandl8ec7f652007-08-15 14:28:01 +0000770.. function:: access(path, mode)
771
772 Use the real uid/gid to test for access to *path*. Note that most operations
773 will use the effective uid/gid, therefore this routine can be used in a
774 suid/sgid environment to test if the invoking user has the specified access to
775 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
776 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
777 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
778 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Georg Brandl9af94982008-09-13 17:41:16 +0000779 information. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000780
781 .. note::
782
Georg Brandl9fa61bb2009-07-26 14:19:57 +0000783 Using :func:`access` to check if a user is authorized to e.g. open a file
784 before actually doing so using :func:`open` creates a security hole,
785 because the user might exploit the short time interval between checking
786 and opening the file to manipulate it.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000787
788 .. note::
789
790 I/O operations may fail even when :func:`access` indicates that they would
791 succeed, particularly for operations on network filesystems which may have
792 permissions semantics beyond the usual POSIX permission-bit model.
793
794
795.. data:: F_OK
796
797 Value to pass as the *mode* parameter of :func:`access` to test the existence of
798 *path*.
799
800
801.. data:: R_OK
802
803 Value to include in the *mode* parameter of :func:`access` to test the
804 readability of *path*.
805
806
807.. data:: W_OK
808
809 Value to include in the *mode* parameter of :func:`access` to test the
810 writability of *path*.
811
812
813.. data:: X_OK
814
815 Value to include in the *mode* parameter of :func:`access` to determine if
816 *path* can be executed.
817
818
819.. function:: chdir(path)
820
821 .. index:: single: directory; changing
822
Georg Brandl9af94982008-09-13 17:41:16 +0000823 Change the current working directory to *path*. Availability: Unix,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000824 Windows.
825
826
827.. function:: fchdir(fd)
828
829 Change the current working directory to the directory represented by the file
830 descriptor *fd*. The descriptor must refer to an opened directory, not an open
831 file. Availability: Unix.
832
833 .. versionadded:: 2.3
834
835
836.. function:: getcwd()
837
838 Return a string representing the current working directory. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +0000839 Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000840
841
842.. function:: getcwdu()
843
844 Return a Unicode object representing the current working directory.
Georg Brandl9af94982008-09-13 17:41:16 +0000845 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000846
847 .. versionadded:: 2.3
848
849
850.. function:: chflags(path, flags)
851
852 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
853 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
854
855 * ``UF_NODUMP``
856 * ``UF_IMMUTABLE``
857 * ``UF_APPEND``
858 * ``UF_OPAQUE``
859 * ``UF_NOUNLINK``
860 * ``SF_ARCHIVED``
861 * ``SF_IMMUTABLE``
862 * ``SF_APPEND``
863 * ``SF_NOUNLINK``
864 * ``SF_SNAPSHOT``
865
Georg Brandl9af94982008-09-13 17:41:16 +0000866 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000867
868 .. versionadded:: 2.6
869
870
871.. function:: chroot(path)
872
873 Change the root directory of the current process to *path*. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +0000874 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000875
876 .. versionadded:: 2.2
877
878
879.. function:: chmod(path, mode)
880
881 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Georg Brandlf725b952008-01-05 19:44:22 +0000882 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl8ec7f652007-08-15 14:28:01 +0000883 combinations of them:
884
885
R. David Murrayfbba7cd2009-07-02 18:19:20 +0000886 * :data:`stat.S_ISUID`
887 * :data:`stat.S_ISGID`
888 * :data:`stat.S_ENFMT`
889 * :data:`stat.S_ISVTX`
890 * :data:`stat.S_IREAD`
891 * :data:`stat.S_IWRITE`
892 * :data:`stat.S_IEXEC`
893 * :data:`stat.S_IRWXU`
894 * :data:`stat.S_IRUSR`
895 * :data:`stat.S_IWUSR`
896 * :data:`stat.S_IXUSR`
897 * :data:`stat.S_IRWXG`
898 * :data:`stat.S_IRGRP`
899 * :data:`stat.S_IWGRP`
900 * :data:`stat.S_IXGRP`
901 * :data:`stat.S_IRWXO`
902 * :data:`stat.S_IROTH`
903 * :data:`stat.S_IWOTH`
904 * :data:`stat.S_IXOTH`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000905
Georg Brandl9af94982008-09-13 17:41:16 +0000906 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000907
908 .. note::
909
910 Although Windows supports :func:`chmod`, you can only set the file's read-only
911 flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
912 constants or a corresponding integer value). All other bits are
913 ignored.
914
915
916.. function:: chown(path, uid, gid)
917
918 Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave
Georg Brandl9af94982008-09-13 17:41:16 +0000919 one of the ids unchanged, set it to -1. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000920
921
922.. function:: lchflags(path, flags)
923
924 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do not
925 follow symbolic links. Availability: Unix.
926
927 .. versionadded:: 2.6
928
929
Georg Brandl81ddc1a2007-11-30 22:04:45 +0000930.. function:: lchmod(path, mode)
931
932 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
933 affects the symlink rather than the target. See the docs for :func:`chmod`
934 for possible values of *mode*. Availability: Unix.
935
936 .. versionadded:: 2.6
937
938
Georg Brandl8ec7f652007-08-15 14:28:01 +0000939.. function:: lchown(path, uid, gid)
940
Georg Brandlf725b952008-01-05 19:44:22 +0000941 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandl9af94982008-09-13 17:41:16 +0000942 function will not follow symbolic links. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000943
944 .. versionadded:: 2.3
945
946
Benjamin Peterson0e928582009-03-28 19:16:10 +0000947.. function:: link(source, link_name)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000948
Benjamin Peterson0e928582009-03-28 19:16:10 +0000949 Create a hard link pointing to *source* named *link_name*. Availability:
950 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000951
952
953.. function:: listdir(path)
954
Georg Brandl62342912008-11-24 19:56:47 +0000955 Return a list containing the names of the entries in the directory given by
956 *path*. The list is in arbitrary order. It does not include the special
957 entries ``'.'`` and ``'..'`` even if they are present in the
958 directory. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000959
960 .. versionchanged:: 2.3
961 On Windows NT/2k/XP and Unix, if *path* is a Unicode object, the result will be
Georg Brandld933cc22009-05-16 11:21:29 +0000962 a list of Unicode objects. Undecodable filenames will still be returned as
963 string objects.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000964
965
966.. function:: lstat(path)
967
Georg Brandl03b15c62007-11-01 17:19:33 +0000968 Like :func:`stat`, but do not follow symbolic links. This is an alias for
969 :func:`stat` on platforms that do not support symbolic links, such as
970 Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000971
972
973.. function:: mkfifo(path[, mode])
974
975 Create a FIFO (a named pipe) named *path* with numeric mode *mode*. The default
976 *mode* is ``0666`` (octal). The current umask value is first masked out from
Georg Brandl9af94982008-09-13 17:41:16 +0000977 the mode. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000978
979 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
980 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
981 rendezvous between "client" and "server" type processes: the server opens the
982 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
983 doesn't open the FIFO --- it just creates the rendezvous point.
984
985
986.. function:: mknod(filename[, mode=0600, device])
987
988 Create a filesystem node (file, device special file or named pipe) named
989 *filename*. *mode* specifies both the permissions to use and the type of node to
990 be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
991 ``stat.S_IFCHR``, ``stat.S_IFBLK``,
992 and ``stat.S_IFIFO`` (those constants are available in :mod:`stat`).
993 For ``stat.S_IFCHR`` and
994 ``stat.S_IFBLK``, *device* defines the newly created device special file (probably using
995 :func:`os.makedev`), otherwise it is ignored.
996
997 .. versionadded:: 2.3
998
999
1000.. function:: major(device)
1001
Georg Brandlf725b952008-01-05 19:44:22 +00001002 Extract the device major number from a raw device number (usually the
Georg Brandl8ec7f652007-08-15 14:28:01 +00001003 :attr:`st_dev` or :attr:`st_rdev` field from :ctype:`stat`).
1004
1005 .. versionadded:: 2.3
1006
1007
1008.. function:: minor(device)
1009
Georg Brandlf725b952008-01-05 19:44:22 +00001010 Extract the device minor number from a raw device number (usually the
Georg Brandl8ec7f652007-08-15 14:28:01 +00001011 :attr:`st_dev` or :attr:`st_rdev` field from :ctype:`stat`).
1012
1013 .. versionadded:: 2.3
1014
1015
1016.. function:: makedev(major, minor)
1017
Georg Brandlf725b952008-01-05 19:44:22 +00001018 Compose a raw device number from the major and minor device numbers.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001019
1020 .. versionadded:: 2.3
1021
1022
1023.. function:: mkdir(path[, mode])
1024
1025 Create a directory named *path* with numeric mode *mode*. The default *mode* is
1026 ``0777`` (octal). On some systems, *mode* is ignored. Where it is used, the
Georg Brandl9af94982008-09-13 17:41:16 +00001027 current umask value is first masked out. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001028
Mark Summerfieldac3d4292007-11-02 08:24:59 +00001029 It is also possible to create temporary directories; see the
1030 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
1031
Georg Brandl8ec7f652007-08-15 14:28:01 +00001032
1033.. function:: makedirs(path[, mode])
1034
1035 .. index::
1036 single: directory; creating
1037 single: UNC paths; and os.makedirs()
1038
1039 Recursive directory creation function. Like :func:`mkdir`, but makes all
1040 intermediate-level directories needed to contain the leaf directory. Throws an
1041 :exc:`error` exception if the leaf directory already exists or cannot be
1042 created. The default *mode* is ``0777`` (octal). On some systems, *mode* is
1043 ignored. Where it is used, the current umask value is first masked out.
1044
1045 .. note::
1046
1047 :func:`makedirs` will become confused if the path elements to create include
Georg Brandlf725b952008-01-05 19:44:22 +00001048 :data:`os.pardir`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001049
1050 .. versionadded:: 1.5.2
1051
1052 .. versionchanged:: 2.3
1053 This function now handles UNC paths correctly.
1054
1055
1056.. function:: pathconf(path, name)
1057
1058 Return system configuration information relevant to a named file. *name*
1059 specifies the configuration value to retrieve; it may be a string which is the
1060 name of a defined system value; these names are specified in a number of
1061 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
1062 additional names as well. The names known to the host operating system are
1063 given in the ``pathconf_names`` dictionary. For configuration variables not
1064 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandl9af94982008-09-13 17:41:16 +00001065 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001066
1067 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1068 specific value for *name* is not supported by the host system, even if it is
1069 included in ``pathconf_names``, an :exc:`OSError` is raised with
1070 :const:`errno.EINVAL` for the error number.
1071
1072
1073.. data:: pathconf_names
1074
1075 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
1076 the integer values defined for those names by the host operating system. This
1077 can be used to determine the set of names known to the system. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +00001078 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001079
1080
1081.. function:: readlink(path)
1082
1083 Return a string representing the path to which the symbolic link points. The
1084 result may be either an absolute or relative pathname; if it is relative, it may
1085 be converted to an absolute pathname using ``os.path.join(os.path.dirname(path),
1086 result)``.
1087
1088 .. versionchanged:: 2.6
1089 If the *path* is a Unicode object the result will also be a Unicode object.
1090
Georg Brandl9af94982008-09-13 17:41:16 +00001091 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001092
1093
1094.. function:: remove(path)
1095
Georg Brandl75439972009-08-24 17:24:27 +00001096 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
1097 raised; see :func:`rmdir` below to remove a directory. This is identical to
1098 the :func:`unlink` function documented below. On Windows, attempting to
1099 remove a file that is in use causes an exception to be raised; on Unix, the
1100 directory entry is removed but the storage allocated to the file is not made
1101 available until the original file is no longer in use. Availability: Unix,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001102 Windows.
1103
1104
1105.. function:: removedirs(path)
1106
1107 .. index:: single: directory; deleting
1108
Georg Brandlf725b952008-01-05 19:44:22 +00001109 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl8ec7f652007-08-15 14:28:01 +00001110 leaf directory is successfully removed, :func:`removedirs` tries to
1111 successively remove every parent directory mentioned in *path* until an error
1112 is raised (which is ignored, because it generally means that a parent directory
1113 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
1114 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
1115 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1116 successfully removed.
1117
1118 .. versionadded:: 1.5.2
1119
1120
1121.. function:: rename(src, dst)
1122
1123 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1124 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Georg Brandlf725b952008-01-05 19:44:22 +00001125 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl8ec7f652007-08-15 14:28:01 +00001126 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1127 the renaming will be an atomic operation (this is a POSIX requirement). On
1128 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
1129 file; there may be no way to implement an atomic rename when *dst* names an
Georg Brandl9af94982008-09-13 17:41:16 +00001130 existing file. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001131
1132
1133.. function:: renames(old, new)
1134
1135 Recursive directory or file renaming function. Works like :func:`rename`, except
1136 creation of any intermediate directories needed to make the new pathname good is
1137 attempted first. After the rename, directories corresponding to rightmost path
1138 segments of the old name will be pruned away using :func:`removedirs`.
1139
1140 .. versionadded:: 1.5.2
1141
1142 .. note::
1143
1144 This function can fail with the new directory structure made if you lack
1145 permissions needed to remove the leaf directory or file.
1146
1147
1148.. function:: rmdir(path)
1149
Georg Brandl1b2695a2009-08-24 17:48:40 +00001150 Remove (delete) the directory *path*. Only works when the directory is
1151 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
1152 directory trees, :func:`shutil.rmtree` can be used. Availability: Unix,
1153 Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001154
1155
1156.. function:: stat(path)
1157
1158 Perform a :cfunc:`stat` system call on the given path. The return value is an
1159 object whose attributes correspond to the members of the :ctype:`stat`
1160 structure, namely: :attr:`st_mode` (protection bits), :attr:`st_ino` (inode
1161 number), :attr:`st_dev` (device), :attr:`st_nlink` (number of hard links),
Georg Brandlf725b952008-01-05 19:44:22 +00001162 :attr:`st_uid` (user id of owner), :attr:`st_gid` (group id of owner),
Georg Brandl8ec7f652007-08-15 14:28:01 +00001163 :attr:`st_size` (size of file, in bytes), :attr:`st_atime` (time of most recent
1164 access), :attr:`st_mtime` (time of most recent content modification),
1165 :attr:`st_ctime` (platform dependent; time of most recent metadata change on
1166 Unix, or the time of creation on Windows)::
1167
1168 >>> import os
1169 >>> statinfo = os.stat('somefile.txt')
1170 >>> statinfo
1171 (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
1172 >>> statinfo.st_size
1173 926L
1174 >>>
1175
1176 .. versionchanged:: 2.3
Georg Brandlf725b952008-01-05 19:44:22 +00001177 If :func:`stat_float_times` returns ``True``, the time values are floats, measuring
Georg Brandl8ec7f652007-08-15 14:28:01 +00001178 seconds. Fractions of a second may be reported if the system supports that. On
1179 Mac OS, the times are always floats. See :func:`stat_float_times` for further
1180 discussion.
1181
1182 On some Unix systems (such as Linux), the following attributes may also be
1183 available: :attr:`st_blocks` (number of blocks allocated for file),
1184 :attr:`st_blksize` (filesystem blocksize), :attr:`st_rdev` (type of device if an
1185 inode device). :attr:`st_flags` (user defined flags for file).
1186
1187 On other Unix systems (such as FreeBSD), the following attributes may be
1188 available (but may be only filled out if root tries to use them): :attr:`st_gen`
1189 (file generation number), :attr:`st_birthtime` (time of file creation).
1190
1191 On Mac OS systems, the following attributes may also be available:
1192 :attr:`st_rsize`, :attr:`st_creator`, :attr:`st_type`.
1193
1194 On RISCOS systems, the following attributes are also available: :attr:`st_ftype`
1195 (file type), :attr:`st_attrs` (attributes), :attr:`st_obtype` (object type).
1196
1197 .. index:: module: stat
1198
1199 For backward compatibility, the return value of :func:`stat` is also accessible
1200 as a tuple of at least 10 integers giving the most important (and portable)
1201 members of the :ctype:`stat` structure, in the order :attr:`st_mode`,
1202 :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, :attr:`st_uid`,
1203 :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, :attr:`st_mtime`,
1204 :attr:`st_ctime`. More items may be added at the end by some implementations.
1205 The standard module :mod:`stat` defines functions and constants that are useful
1206 for extracting information from a :ctype:`stat` structure. (On Windows, some
1207 items are filled with dummy values.)
1208
1209 .. note::
1210
1211 The exact meaning and resolution of the :attr:`st_atime`, :attr:`st_mtime`, and
1212 :attr:`st_ctime` members depends on the operating system and the file system.
1213 For example, on Windows systems using the FAT or FAT32 file systems,
1214 :attr:`st_mtime` has 2-second resolution, and :attr:`st_atime` has only 1-day
1215 resolution. See your operating system documentation for details.
1216
Georg Brandl9af94982008-09-13 17:41:16 +00001217 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001218
1219 .. versionchanged:: 2.2
1220 Added access to values as attributes of the returned object.
1221
1222 .. versionchanged:: 2.5
Georg Brandlf725b952008-01-05 19:44:22 +00001223 Added :attr:`st_gen` and :attr:`st_birthtime`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001224
1225
1226.. function:: stat_float_times([newvalue])
1227
1228 Determine whether :class:`stat_result` represents time stamps as float objects.
1229 If *newvalue* is ``True``, future calls to :func:`stat` return floats, if it is
1230 ``False``, future calls return ints. If *newvalue* is omitted, return the
1231 current setting.
1232
1233 For compatibility with older Python versions, accessing :class:`stat_result` as
1234 a tuple always returns integers.
1235
1236 .. versionchanged:: 2.5
1237 Python now returns float values by default. Applications which do not work
1238 correctly with floating point time stamps can use this function to restore the
1239 old behaviour.
1240
1241 The resolution of the timestamps (that is the smallest possible fraction)
1242 depends on the system. Some systems only support second resolution; on these
1243 systems, the fraction will always be zero.
1244
1245 It is recommended that this setting is only changed at program startup time in
1246 the *__main__* module; libraries should never change this setting. If an
1247 application uses a library that works incorrectly if floating point time stamps
1248 are processed, this application should turn the feature off until the library
1249 has been corrected.
1250
1251
1252.. function:: statvfs(path)
1253
1254 Perform a :cfunc:`statvfs` system call on the given path. The return value is
1255 an object whose attributes describe the filesystem on the given path, and
1256 correspond to the members of the :ctype:`statvfs` structure, namely:
1257 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
1258 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
1259 :attr:`f_flag`, :attr:`f_namemax`. Availability: Unix.
1260
1261 .. index:: module: statvfs
1262
1263 For backward compatibility, the return value is also accessible as a tuple whose
1264 values correspond to the attributes, in the order given above. The standard
1265 module :mod:`statvfs` defines constants that are useful for extracting
1266 information from a :ctype:`statvfs` structure when accessing it as a sequence;
1267 this remains useful when writing code that needs to work with versions of Python
1268 that don't support accessing the fields as attributes.
1269
1270 .. versionchanged:: 2.2
1271 Added access to values as attributes of the returned object.
1272
1273
Benjamin Peterson0e928582009-03-28 19:16:10 +00001274.. function:: symlink(source, link_name)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001275
Benjamin Peterson0e928582009-03-28 19:16:10 +00001276 Create a symbolic link pointing to *source* named *link_name*. Availability:
1277 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001278
1279
1280.. function:: tempnam([dir[, prefix]])
1281
1282 Return a unique path name that is reasonable for creating a temporary file.
1283 This will be an absolute path that names a potential directory entry in the
1284 directory *dir* or a common location for temporary files if *dir* is omitted or
1285 ``None``. If given and not ``None``, *prefix* is used to provide a short prefix
1286 to the filename. Applications are responsible for properly creating and
1287 managing files created using paths returned by :func:`tempnam`; no automatic
1288 cleanup is provided. On Unix, the environment variable :envvar:`TMPDIR`
Georg Brandlf725b952008-01-05 19:44:22 +00001289 overrides *dir*, while on Windows :envvar:`TMP` is used. The specific
Georg Brandl8ec7f652007-08-15 14:28:01 +00001290 behavior of this function depends on the C library implementation; some aspects
1291 are underspecified in system documentation.
1292
1293 .. warning::
1294
1295 Use of :func:`tempnam` is vulnerable to symlink attacks; consider using
1296 :func:`tmpfile` (section :ref:`os-newstreams`) instead.
1297
Georg Brandl9af94982008-09-13 17:41:16 +00001298 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001299
1300
1301.. function:: tmpnam()
1302
1303 Return a unique path name that is reasonable for creating a temporary file.
1304 This will be an absolute path that names a potential directory entry in a common
1305 location for temporary files. Applications are responsible for properly
1306 creating and managing files created using paths returned by :func:`tmpnam`; no
1307 automatic cleanup is provided.
1308
1309 .. warning::
1310
1311 Use of :func:`tmpnam` is vulnerable to symlink attacks; consider using
1312 :func:`tmpfile` (section :ref:`os-newstreams`) instead.
1313
1314 Availability: Unix, Windows. This function probably shouldn't be used on
1315 Windows, though: Microsoft's implementation of :func:`tmpnam` always creates a
1316 name in the root directory of the current drive, and that's generally a poor
1317 location for a temp file (depending on privileges, you may not even be able to
1318 open a file using this name).
1319
1320
1321.. data:: TMP_MAX
1322
1323 The maximum number of unique names that :func:`tmpnam` will generate before
1324 reusing names.
1325
1326
1327.. function:: unlink(path)
1328
Georg Brandl75439972009-08-24 17:24:27 +00001329 Remove (delete) the file *path*. This is the same function as
1330 :func:`remove`; the :func:`unlink` name is its traditional Unix
1331 name. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001332
1333
1334.. function:: utime(path, times)
1335
Benjamin Peterson5b02ef32008-08-16 03:13:07 +00001336 Set the access and modified times of the file specified by *path*. If *times*
1337 is ``None``, then the file's access and modified times are set to the current
1338 time. (The effect is similar to running the Unix program :program:`touch` on
1339 the path.) Otherwise, *times* must be a 2-tuple of numbers, of the form
1340 ``(atime, mtime)`` which is used to set the access and modified times,
1341 respectively. Whether a directory can be given for *path* depends on whether
1342 the operating system implements directories as files (for example, Windows
1343 does not). Note that the exact times you set here may not be returned by a
1344 subsequent :func:`stat` call, depending on the resolution with which your
1345 operating system records access and modification times; see :func:`stat`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001346
1347 .. versionchanged:: 2.0
1348 Added support for ``None`` for *times*.
1349
Georg Brandl9af94982008-09-13 17:41:16 +00001350 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001351
1352
1353.. function:: walk(top[, topdown=True [, onerror=None[, followlinks=False]]])
1354
1355 .. index::
1356 single: directory; walking
1357 single: directory; traversal
1358
Georg Brandlf725b952008-01-05 19:44:22 +00001359 Generate the file names in a directory tree by walking the tree
1360 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl8ec7f652007-08-15 14:28:01 +00001361 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
1362 filenames)``.
1363
1364 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
1365 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
1366 *filenames* is a list of the names of the non-directory files in *dirpath*.
1367 Note that the names in the lists contain no path components. To get a full path
1368 (which begins with *top*) to a file or directory in *dirpath*, do
1369 ``os.path.join(dirpath, name)``.
1370
Georg Brandlf725b952008-01-05 19:44:22 +00001371 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl8ec7f652007-08-15 14:28:01 +00001372 directory is generated before the triples for any of its subdirectories
Georg Brandlf725b952008-01-05 19:44:22 +00001373 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl8ec7f652007-08-15 14:28:01 +00001374 directory is generated after the triples for all of its subdirectories
Georg Brandlf725b952008-01-05 19:44:22 +00001375 (directories are generated bottom-up).
Georg Brandl8ec7f652007-08-15 14:28:01 +00001376
Georg Brandlf725b952008-01-05 19:44:22 +00001377 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl8ec7f652007-08-15 14:28:01 +00001378 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
1379 recurse into the subdirectories whose names remain in *dirnames*; this can be
1380 used to prune the search, impose a specific order of visiting, or even to inform
1381 :func:`walk` about directories the caller creates or renames before it resumes
Georg Brandlf725b952008-01-05 19:44:22 +00001382 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl8ec7f652007-08-15 14:28:01 +00001383 ineffective, because in bottom-up mode the directories in *dirnames* are
1384 generated before *dirpath* itself is generated.
1385
Georg Brandlf725b952008-01-05 19:44:22 +00001386 By default errors from the :func:`listdir` call are ignored. If optional
Georg Brandl8ec7f652007-08-15 14:28:01 +00001387 argument *onerror* is specified, it should be a function; it will be called with
1388 one argument, an :exc:`OSError` instance. It can report the error to continue
1389 with the walk, or raise the exception to abort the walk. Note that the filename
1390 is available as the ``filename`` attribute of the exception object.
1391
1392 By default, :func:`walk` will not walk down into symbolic links that resolve to
Georg Brandlf725b952008-01-05 19:44:22 +00001393 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl8ec7f652007-08-15 14:28:01 +00001394 symlinks, on systems that support them.
1395
1396 .. versionadded:: 2.6
1397 The *followlinks* parameter.
1398
1399 .. note::
1400
Georg Brandlf725b952008-01-05 19:44:22 +00001401 Be aware that setting *followlinks* to ``True`` can lead to infinite recursion if a
Georg Brandl8ec7f652007-08-15 14:28:01 +00001402 link points to a parent directory of itself. :func:`walk` does not keep track of
1403 the directories it visited already.
1404
1405 .. note::
1406
1407 If you pass a relative pathname, don't change the current working directory
1408 between resumptions of :func:`walk`. :func:`walk` never changes the current
1409 directory, and assumes that its caller doesn't either.
1410
1411 This example displays the number of bytes taken by non-directory files in each
1412 directory under the starting directory, except that it doesn't look under any
1413 CVS subdirectory::
1414
1415 import os
1416 from os.path import join, getsize
1417 for root, dirs, files in os.walk('python/Lib/email'):
1418 print root, "consumes",
1419 print sum(getsize(join(root, name)) for name in files),
1420 print "bytes in", len(files), "non-directory files"
1421 if 'CVS' in dirs:
1422 dirs.remove('CVS') # don't visit CVS directories
1423
Georg Brandlf725b952008-01-05 19:44:22 +00001424 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl8ec7f652007-08-15 14:28:01 +00001425 doesn't allow deleting a directory before the directory is empty::
1426
Georg Brandlf725b952008-01-05 19:44:22 +00001427 # Delete everything reachable from the directory named in "top",
Georg Brandl8ec7f652007-08-15 14:28:01 +00001428 # assuming there are no symbolic links.
1429 # CAUTION: This is dangerous! For example, if top == '/', it
1430 # could delete all your disk files.
1431 import os
1432 for root, dirs, files in os.walk(top, topdown=False):
1433 for name in files:
1434 os.remove(os.path.join(root, name))
1435 for name in dirs:
1436 os.rmdir(os.path.join(root, name))
1437
1438 .. versionadded:: 2.3
1439
1440
1441.. _os-process:
1442
1443Process Management
1444------------------
1445
1446These functions may be used to create and manage processes.
1447
1448The various :func:`exec\*` functions take a list of arguments for the new
1449program loaded into the process. In each case, the first of these arguments is
1450passed to the new program as its own name rather than as an argument a user may
1451have typed on a command line. For the C programmer, this is the ``argv[0]``
1452passed to a program's :cfunc:`main`. For example, ``os.execv('/bin/echo',
1453['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
1454to be ignored.
1455
1456
1457.. function:: abort()
1458
1459 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
1460 behavior is to produce a core dump; on Windows, the process immediately returns
1461 an exit code of ``3``. Be aware that programs which use :func:`signal.signal`
1462 to register a handler for :const:`SIGABRT` will behave differently.
Georg Brandl9af94982008-09-13 17:41:16 +00001463 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001464
1465
1466.. function:: execl(path, arg0, arg1, ...)
1467 execle(path, arg0, arg1, ..., env)
1468 execlp(file, arg0, arg1, ...)
1469 execlpe(file, arg0, arg1, ..., env)
1470 execv(path, args)
1471 execve(path, args, env)
1472 execvp(file, args)
1473 execvpe(file, args, env)
1474
1475 These functions all execute a new program, replacing the current process; they
1476 do not return. On Unix, the new executable is loaded into the current process,
Georg Brandlf725b952008-01-05 19:44:22 +00001477 and will have the same process id as the caller. Errors will be reported as
Georg Brandlc62ef8b2009-01-03 20:55:06 +00001478 :exc:`OSError` exceptions.
Andrew M. Kuchlingac771662008-09-28 00:15:27 +00001479
1480 The current process is replaced immediately. Open file objects and
1481 descriptors are not flushed, so if there may be data buffered
1482 on these open files, you should flush them using
1483 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
1484 :func:`exec\*` function.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001485
Georg Brandlf725b952008-01-05 19:44:22 +00001486 The "l" and "v" variants of the :func:`exec\*` functions differ in how
1487 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl8ec7f652007-08-15 14:28:01 +00001488 to work with if the number of parameters is fixed when the code is written; the
1489 individual parameters simply become additional parameters to the :func:`execl\*`
Georg Brandlf725b952008-01-05 19:44:22 +00001490 functions. The "v" variants are good when the number of parameters is
Georg Brandl8ec7f652007-08-15 14:28:01 +00001491 variable, with the arguments being passed in a list or tuple as the *args*
1492 parameter. In either case, the arguments to the child process should start with
1493 the name of the command being run, but this is not enforced.
1494
Georg Brandlf725b952008-01-05 19:44:22 +00001495 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001496 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
1497 :envvar:`PATH` environment variable to locate the program *file*. When the
1498 environment is being replaced (using one of the :func:`exec\*e` variants,
1499 discussed in the next paragraph), the new environment is used as the source of
1500 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
1501 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
1502 locate the executable; *path* must contain an appropriate absolute or relative
1503 path.
1504
1505 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Georg Brandlf725b952008-01-05 19:44:22 +00001506 that these all end in "e"), the *env* parameter must be a mapping which is
Georg Brandlfb246c42008-04-19 16:58:28 +00001507 used to define the environment variables for the new process (these are used
1508 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001509 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandlc62ef8b2009-01-03 20:55:06 +00001510 inherit the environment of the current process.
Andrew M. Kuchlingac771662008-09-28 00:15:27 +00001511
1512 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001513
1514
1515.. function:: _exit(n)
1516
1517 Exit to the system with status *n*, without calling cleanup handlers, flushing
Georg Brandl9af94982008-09-13 17:41:16 +00001518 stdio buffers, etc. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001519
1520 .. note::
1521
1522 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should normally only
1523 be used in the child process after a :func:`fork`.
1524
Georg Brandlf725b952008-01-05 19:44:22 +00001525The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001526although they are not required. These are typically used for system programs
1527written in Python, such as a mail server's external command delivery program.
1528
1529.. note::
1530
1531 Some of these may not be available on all Unix platforms, since there is some
1532 variation. These constants are defined where they are defined by the underlying
1533 platform.
1534
1535
1536.. data:: EX_OK
1537
Georg Brandl9af94982008-09-13 17:41:16 +00001538 Exit code that means no error occurred. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001539
1540 .. versionadded:: 2.3
1541
1542
1543.. data:: EX_USAGE
1544
1545 Exit code that means the command was used incorrectly, such as when the wrong
Georg Brandl9af94982008-09-13 17:41:16 +00001546 number of arguments are given. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001547
1548 .. versionadded:: 2.3
1549
1550
1551.. data:: EX_DATAERR
1552
Georg Brandl9af94982008-09-13 17:41:16 +00001553 Exit code that means the input data was incorrect. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001554
1555 .. versionadded:: 2.3
1556
1557
1558.. data:: EX_NOINPUT
1559
1560 Exit code that means an input file did not exist or was not readable.
Georg Brandl9af94982008-09-13 17:41:16 +00001561 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001562
1563 .. versionadded:: 2.3
1564
1565
1566.. data:: EX_NOUSER
1567
Georg Brandl9af94982008-09-13 17:41:16 +00001568 Exit code that means a specified user did not exist. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001569
1570 .. versionadded:: 2.3
1571
1572
1573.. data:: EX_NOHOST
1574
Georg Brandl9af94982008-09-13 17:41:16 +00001575 Exit code that means a specified host did not exist. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001576
1577 .. versionadded:: 2.3
1578
1579
1580.. data:: EX_UNAVAILABLE
1581
1582 Exit code that means that a required service is unavailable. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +00001583 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001584
1585 .. versionadded:: 2.3
1586
1587
1588.. data:: EX_SOFTWARE
1589
1590 Exit code that means an internal software error was detected. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +00001591 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001592
1593 .. versionadded:: 2.3
1594
1595
1596.. data:: EX_OSERR
1597
1598 Exit code that means an operating system error was detected, such as the
Georg Brandl9af94982008-09-13 17:41:16 +00001599 inability to fork or create a pipe. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001600
1601 .. versionadded:: 2.3
1602
1603
1604.. data:: EX_OSFILE
1605
1606 Exit code that means some system file did not exist, could not be opened, or had
Georg Brandl9af94982008-09-13 17:41:16 +00001607 some other kind of error. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001608
1609 .. versionadded:: 2.3
1610
1611
1612.. data:: EX_CANTCREAT
1613
1614 Exit code that means a user specified output file could not be created.
Georg Brandl9af94982008-09-13 17:41:16 +00001615 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001616
1617 .. versionadded:: 2.3
1618
1619
1620.. data:: EX_IOERR
1621
1622 Exit code that means that an error occurred while doing I/O on some file.
Georg Brandl9af94982008-09-13 17:41:16 +00001623 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001624
1625 .. versionadded:: 2.3
1626
1627
1628.. data:: EX_TEMPFAIL
1629
1630 Exit code that means a temporary failure occurred. This indicates something
1631 that may not really be an error, such as a network connection that couldn't be
Georg Brandl9af94982008-09-13 17:41:16 +00001632 made during a retryable operation. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001633
1634 .. versionadded:: 2.3
1635
1636
1637.. data:: EX_PROTOCOL
1638
1639 Exit code that means that a protocol exchange was illegal, invalid, or not
Georg Brandl9af94982008-09-13 17:41:16 +00001640 understood. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001641
1642 .. versionadded:: 2.3
1643
1644
1645.. data:: EX_NOPERM
1646
1647 Exit code that means that there were insufficient permissions to perform the
Georg Brandl9af94982008-09-13 17:41:16 +00001648 operation (but not intended for file system problems). Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001649
1650 .. versionadded:: 2.3
1651
1652
1653.. data:: EX_CONFIG
1654
1655 Exit code that means that some kind of configuration error occurred.
Georg Brandl9af94982008-09-13 17:41:16 +00001656 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001657
1658 .. versionadded:: 2.3
1659
1660
1661.. data:: EX_NOTFOUND
1662
1663 Exit code that means something like "an entry was not found". Availability:
Georg Brandl9af94982008-09-13 17:41:16 +00001664 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001665
1666 .. versionadded:: 2.3
1667
1668
1669.. function:: fork()
1670
Georg Brandlf725b952008-01-05 19:44:22 +00001671 Fork a child process. Return ``0`` in the child and the child's process id in the
Skip Montanaro75e51682008-03-15 02:32:49 +00001672 parent. If an error occurs :exc:`OSError` is raised.
Gregory P. Smith08067492008-09-30 20:41:13 +00001673
1674 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
1675 known issues when using fork() from a thread.
1676
Georg Brandl9af94982008-09-13 17:41:16 +00001677 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001678
1679
1680.. function:: forkpty()
1681
1682 Fork a child process, using a new pseudo-terminal as the child's controlling
1683 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
1684 new child's process id in the parent, and *fd* is the file descriptor of the
1685 master end of the pseudo-terminal. For a more portable approach, use the
Skip Montanaro75e51682008-03-15 02:32:49 +00001686 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Georg Brandl9af94982008-09-13 17:41:16 +00001687 Availability: some flavors of Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001688
1689
1690.. function:: kill(pid, sig)
1691
1692 .. index::
1693 single: process; killing
1694 single: process; signalling
1695
1696 Send signal *sig* to the process *pid*. Constants for the specific signals
1697 available on the host platform are defined in the :mod:`signal` module.
Georg Brandl9af94982008-09-13 17:41:16 +00001698 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001699
1700
1701.. function:: killpg(pgid, sig)
1702
1703 .. index::
1704 single: process; killing
1705 single: process; signalling
1706
Georg Brandl9af94982008-09-13 17:41:16 +00001707 Send the signal *sig* to the process group *pgid*. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001708
1709 .. versionadded:: 2.3
1710
1711
1712.. function:: nice(increment)
1713
1714 Add *increment* to the process's "niceness". Return the new niceness.
Georg Brandl9af94982008-09-13 17:41:16 +00001715 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001716
1717
1718.. function:: plock(op)
1719
1720 Lock program segments into memory. The value of *op* (defined in
Georg Brandl9af94982008-09-13 17:41:16 +00001721 ``<sys/lock.h>``) determines which segments are locked. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001722
1723
1724.. function:: popen(...)
1725 popen2(...)
1726 popen3(...)
1727 popen4(...)
1728 :noindex:
1729
1730 Run child processes, returning opened pipes for communications. These functions
1731 are described in section :ref:`os-newstreams`.
1732
1733
1734.. function:: spawnl(mode, path, ...)
1735 spawnle(mode, path, ..., env)
1736 spawnlp(mode, file, ...)
1737 spawnlpe(mode, file, ..., env)
1738 spawnv(mode, path, args)
1739 spawnve(mode, path, args, env)
1740 spawnvp(mode, file, args)
1741 spawnvpe(mode, file, args, env)
1742
1743 Execute the program *path* in a new process.
1744
1745 (Note that the :mod:`subprocess` module provides more powerful facilities for
1746 spawning new processes and retrieving their results; using that module is
R. David Murrayccb9d4b2009-06-09 00:44:22 +00001747 preferable to using these functions. Check especially the
1748 :ref:`subprocess-replacements` section.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001749
Georg Brandlf725b952008-01-05 19:44:22 +00001750 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl8ec7f652007-08-15 14:28:01 +00001751 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
1752 exits normally, or ``-signal``, where *signal* is the signal that killed the
Georg Brandlf725b952008-01-05 19:44:22 +00001753 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl8ec7f652007-08-15 14:28:01 +00001754 be used with the :func:`waitpid` function.
1755
Georg Brandlf725b952008-01-05 19:44:22 +00001756 The "l" and "v" variants of the :func:`spawn\*` functions differ in how
1757 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl8ec7f652007-08-15 14:28:01 +00001758 to work with if the number of parameters is fixed when the code is written; the
1759 individual parameters simply become additional parameters to the
Georg Brandlf725b952008-01-05 19:44:22 +00001760 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl8ec7f652007-08-15 14:28:01 +00001761 parameters is variable, with the arguments being passed in a list or tuple as
1762 the *args* parameter. In either case, the arguments to the child process must
1763 start with the name of the command being run.
1764
Georg Brandlf725b952008-01-05 19:44:22 +00001765 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001766 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
1767 :envvar:`PATH` environment variable to locate the program *file*. When the
1768 environment is being replaced (using one of the :func:`spawn\*e` variants,
1769 discussed in the next paragraph), the new environment is used as the source of
1770 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
1771 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
1772 :envvar:`PATH` variable to locate the executable; *path* must contain an
1773 appropriate absolute or relative path.
1774
1775 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Georg Brandlf725b952008-01-05 19:44:22 +00001776 (note that these all end in "e"), the *env* parameter must be a mapping
Georg Brandlfb246c42008-04-19 16:58:28 +00001777 which is used to define the environment variables for the new process (they are
1778 used instead of the current process' environment); the functions
Georg Brandl8ec7f652007-08-15 14:28:01 +00001779 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Georg Brandl22717df2009-03-31 18:26:55 +00001780 the new process to inherit the environment of the current process. Note that
1781 keys and values in the *env* dictionary must be strings; invalid keys or
1782 values will cause the function to fail, with a return value of ``127``.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001783
1784 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
1785 equivalent::
1786
1787 import os
1788 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
1789
1790 L = ['cp', 'index.html', '/dev/null']
1791 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
1792
1793 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
1794 and :func:`spawnvpe` are not available on Windows.
1795
1796 .. versionadded:: 1.6
1797
1798
1799.. data:: P_NOWAIT
1800 P_NOWAITO
1801
1802 Possible values for the *mode* parameter to the :func:`spawn\*` family of
1803 functions. If either of these values is given, the :func:`spawn\*` functions
Georg Brandlf725b952008-01-05 19:44:22 +00001804 will return as soon as the new process has been created, with the process id as
Georg Brandl9af94982008-09-13 17:41:16 +00001805 the return value. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001806
1807 .. versionadded:: 1.6
1808
1809
1810.. data:: P_WAIT
1811
1812 Possible value for the *mode* parameter to the :func:`spawn\*` family of
1813 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
1814 return until the new process has run to completion and will return the exit code
1815 of the process the run is successful, or ``-signal`` if a signal kills the
Georg Brandl9af94982008-09-13 17:41:16 +00001816 process. Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001817
1818 .. versionadded:: 1.6
1819
1820
1821.. data:: P_DETACH
1822 P_OVERLAY
1823
1824 Possible values for the *mode* parameter to the :func:`spawn\*` family of
1825 functions. These are less portable than those listed above. :const:`P_DETACH`
1826 is similar to :const:`P_NOWAIT`, but the new process is detached from the
1827 console of the calling process. If :const:`P_OVERLAY` is used, the current
1828 process will be replaced; the :func:`spawn\*` function will not return.
1829 Availability: Windows.
1830
1831 .. versionadded:: 1.6
1832
1833
1834.. function:: startfile(path[, operation])
1835
1836 Start a file with its associated application.
1837
1838 When *operation* is not specified or ``'open'``, this acts like double-clicking
1839 the file in Windows Explorer, or giving the file name as an argument to the
1840 :program:`start` command from the interactive command shell: the file is opened
1841 with whatever application (if any) its extension is associated.
1842
1843 When another *operation* is given, it must be a "command verb" that specifies
1844 what should be done with the file. Common verbs documented by Microsoft are
1845 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
1846 ``'find'`` (to be used on directories).
1847
1848 :func:`startfile` returns as soon as the associated application is launched.
1849 There is no option to wait for the application to close, and no way to retrieve
1850 the application's exit status. The *path* parameter is relative to the current
1851 directory. If you want to use an absolute path, make sure the first character
1852 is not a slash (``'/'``); the underlying Win32 :cfunc:`ShellExecute` function
1853 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
1854 the path is properly encoded for Win32. Availability: Windows.
1855
1856 .. versionadded:: 2.0
1857
1858 .. versionadded:: 2.5
1859 The *operation* parameter.
1860
1861
1862.. function:: system(command)
1863
1864 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl647e9d22009-10-14 15:57:46 +00001865 the Standard C function :cfunc:`system`, and has the same limitations.
Georg Brandl11abfe62009-10-18 07:58:12 +00001866 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of the
Georg Brandl647e9d22009-10-14 15:57:46 +00001867 executed command.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001868
1869 On Unix, the return value is the exit status of the process encoded in the
1870 format specified for :func:`wait`. Note that POSIX does not specify the meaning
1871 of the return value of the C :cfunc:`system` function, so the return value of
1872 the Python function is system-dependent.
1873
1874 On Windows, the return value is that returned by the system shell after running
1875 *command*, given by the Windows environment variable :envvar:`COMSPEC`: on
1876 :program:`command.com` systems (Windows 95, 98 and ME) this is always ``0``; on
1877 :program:`cmd.exe` systems (Windows NT, 2000 and XP) this is the exit status of
1878 the command run; on systems using a non-native shell, consult your shell
1879 documentation.
1880
Georg Brandl9af94982008-09-13 17:41:16 +00001881 Availability: Unix, Windows.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001882
1883 The :mod:`subprocess` module provides more powerful facilities for spawning new
1884 processes and retrieving their results; using that module is preferable to using
Georg Brandl0ba92b22008-06-22 09:05:29 +00001885 this function. Use the :mod:`subprocess` module. Check especially the
1886 :ref:`subprocess-replacements` section.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001887
1888
1889.. function:: times()
1890
1891 Return a 5-tuple of floating point numbers indicating accumulated (processor or
1892 other) times, in seconds. The items are: user time, system time, children's
1893 user time, children's system time, and elapsed real time since a fixed point in
1894 the past, in that order. See the Unix manual page :manpage:`times(2)` or the
Georg Brandl9af94982008-09-13 17:41:16 +00001895 corresponding Windows Platform API documentation. Availability: Unix,
Georg Brandl0a40ffb2008-02-13 07:20:22 +00001896 Windows. On Windows, only the first two items are filled, the others are zero.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001897
1898
1899.. function:: wait()
1900
1901 Wait for completion of a child process, and return a tuple containing its pid
1902 and exit status indication: a 16-bit number, whose low byte is the signal number
1903 that killed the process, and whose high byte is the exit status (if the signal
1904 number is zero); the high bit of the low byte is set if a core file was
Georg Brandl9af94982008-09-13 17:41:16 +00001905 produced. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001906
1907
1908.. function:: waitpid(pid, options)
1909
1910 The details of this function differ on Unix and Windows.
1911
1912 On Unix: Wait for completion of a child process given by process id *pid*, and
1913 return a tuple containing its process id and exit status indication (encoded as
1914 for :func:`wait`). The semantics of the call are affected by the value of the
1915 integer *options*, which should be ``0`` for normal operation.
1916
1917 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
1918 that specific process. If *pid* is ``0``, the request is for the status of any
1919 child in the process group of the current process. If *pid* is ``-1``, the
1920 request pertains to any child of the current process. If *pid* is less than
1921 ``-1``, status is requested for any process in the process group ``-pid`` (the
1922 absolute value of *pid*).
1923
Gregory P. Smith59de7f52008-08-15 23:14:00 +00001924 An :exc:`OSError` is raised with the value of errno when the syscall
1925 returns -1.
1926
Georg Brandl8ec7f652007-08-15 14:28:01 +00001927 On Windows: Wait for completion of a process given by process handle *pid*, and
1928 return a tuple containing *pid*, and its exit status shifted left by 8 bits
1929 (shifting makes cross-platform use of the function easier). A *pid* less than or
1930 equal to ``0`` has no special meaning on Windows, and raises an exception. The
1931 value of integer *options* has no effect. *pid* can refer to any process whose
1932 id is known, not necessarily a child process. The :func:`spawn` functions called
1933 with :const:`P_NOWAIT` return suitable process handles.
1934
1935
1936.. function:: wait3([options])
1937
1938 Similar to :func:`waitpid`, except no process id argument is given and a
1939 3-element tuple containing the child's process id, exit status indication, and
1940 resource usage information is returned. Refer to :mod:`resource`.\
1941 :func:`getrusage` for details on resource usage information. The option
1942 argument is the same as that provided to :func:`waitpid` and :func:`wait4`.
1943 Availability: Unix.
1944
1945 .. versionadded:: 2.5
1946
1947
1948.. function:: wait4(pid, options)
1949
1950 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
1951 process id, exit status indication, and resource usage information is returned.
1952 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage
1953 information. The arguments to :func:`wait4` are the same as those provided to
1954 :func:`waitpid`. Availability: Unix.
1955
1956 .. versionadded:: 2.5
1957
1958
1959.. data:: WNOHANG
1960
1961 The option for :func:`waitpid` to return immediately if no child process status
1962 is available immediately. The function returns ``(0, 0)`` in this case.
Georg Brandl9af94982008-09-13 17:41:16 +00001963 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001964
1965
1966.. data:: WCONTINUED
1967
1968 This option causes child processes to be reported if they have been continued
1969 from a job control stop since their status was last reported. Availability: Some
1970 Unix systems.
1971
1972 .. versionadded:: 2.3
1973
1974
1975.. data:: WUNTRACED
1976
1977 This option causes child processes to be reported if they have been stopped but
1978 their current state has not been reported since they were stopped. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +00001979 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001980
1981 .. versionadded:: 2.3
1982
1983The following functions take a process status code as returned by
1984:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
1985used to determine the disposition of a process.
1986
1987
1988.. function:: WCOREDUMP(status)
1989
Georg Brandlf725b952008-01-05 19:44:22 +00001990 Return ``True`` if a core dump was generated for the process, otherwise
Georg Brandl9af94982008-09-13 17:41:16 +00001991 return ``False``. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001992
1993 .. versionadded:: 2.3
1994
1995
1996.. function:: WIFCONTINUED(status)
1997
Georg Brandlf725b952008-01-05 19:44:22 +00001998 Return ``True`` if the process has been continued from a job control stop,
1999 otherwise return ``False``. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002000
2001 .. versionadded:: 2.3
2002
2003
2004.. function:: WIFSTOPPED(status)
2005
Georg Brandlf725b952008-01-05 19:44:22 +00002006 Return ``True`` if the process has been stopped, otherwise return
Georg Brandl8ec7f652007-08-15 14:28:01 +00002007 ``False``. Availability: Unix.
2008
2009
2010.. function:: WIFSIGNALED(status)
2011
Georg Brandlf725b952008-01-05 19:44:22 +00002012 Return ``True`` if the process exited due to a signal, otherwise return
Georg Brandl9af94982008-09-13 17:41:16 +00002013 ``False``. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002014
2015
2016.. function:: WIFEXITED(status)
2017
Georg Brandlf725b952008-01-05 19:44:22 +00002018 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Georg Brandl9af94982008-09-13 17:41:16 +00002019 otherwise return ``False``. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002020
2021
2022.. function:: WEXITSTATUS(status)
2023
2024 If ``WIFEXITED(status)`` is true, return the integer parameter to the
2025 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Georg Brandl9af94982008-09-13 17:41:16 +00002026 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002027
2028
2029.. function:: WSTOPSIG(status)
2030
Georg Brandl9af94982008-09-13 17:41:16 +00002031 Return the signal which caused the process to stop. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002032
2033
2034.. function:: WTERMSIG(status)
2035
Georg Brandl9af94982008-09-13 17:41:16 +00002036 Return the signal which caused the process to exit. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002037
2038
2039.. _os-path:
2040
2041Miscellaneous System Information
2042--------------------------------
2043
2044
2045.. function:: confstr(name)
2046
2047 Return string-valued system configuration values. *name* specifies the
2048 configuration value to retrieve; it may be a string which is the name of a
2049 defined system value; these names are specified in a number of standards (POSIX,
2050 Unix 95, Unix 98, and others). Some platforms define additional names as well.
2051 The names known to the host operating system are given as the keys of the
2052 ``confstr_names`` dictionary. For configuration variables not included in that
2053 mapping, passing an integer for *name* is also accepted. Availability:
Georg Brandl9af94982008-09-13 17:41:16 +00002054 Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002055
2056 If the configuration value specified by *name* isn't defined, ``None`` is
2057 returned.
2058
2059 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
2060 specific value for *name* is not supported by the host system, even if it is
2061 included in ``confstr_names``, an :exc:`OSError` is raised with
2062 :const:`errno.EINVAL` for the error number.
2063
2064
2065.. data:: confstr_names
2066
2067 Dictionary mapping names accepted by :func:`confstr` to the integer values
2068 defined for those names by the host operating system. This can be used to
Georg Brandl9af94982008-09-13 17:41:16 +00002069 determine the set of names known to the system. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002070
2071
2072.. function:: getloadavg()
2073
Georg Brandl57fe0f22008-01-12 10:53:29 +00002074 Return the number of processes in the system run queue averaged over the last
2075 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Georg Brandl6bb7bcf2008-05-30 19:12:13 +00002076 unobtainable. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002077
2078 .. versionadded:: 2.3
2079
2080
2081.. function:: sysconf(name)
2082
2083 Return integer-valued system configuration values. If the configuration value
2084 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
2085 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
2086 provides information on the known names is given by ``sysconf_names``.
Georg Brandl9af94982008-09-13 17:41:16 +00002087 Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002088
2089
2090.. data:: sysconf_names
2091
2092 Dictionary mapping names accepted by :func:`sysconf` to the integer values
2093 defined for those names by the host operating system. This can be used to
Georg Brandl9af94982008-09-13 17:41:16 +00002094 determine the set of names known to the system. Availability: Unix.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002095
Georg Brandlf725b952008-01-05 19:44:22 +00002096The following data values are used to support path manipulation operations. These
Georg Brandl8ec7f652007-08-15 14:28:01 +00002097are defined for all platforms.
2098
2099Higher-level operations on pathnames are defined in the :mod:`os.path` module.
2100
2101
2102.. data:: curdir
2103
2104 The constant string used by the operating system to refer to the current
Georg Brandl9af94982008-09-13 17:41:16 +00002105 directory. This is ``'.'`` for Windows and POSIX. Also available via
2106 :mod:`os.path`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002107
2108
2109.. data:: pardir
2110
2111 The constant string used by the operating system to refer to the parent
Georg Brandl9af94982008-09-13 17:41:16 +00002112 directory. This is ``'..'`` for Windows and POSIX. Also available via
2113 :mod:`os.path`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002114
2115
2116.. data:: sep
2117
Georg Brandl9af94982008-09-13 17:41:16 +00002118 The character used by the operating system to separate pathname components.
2119 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
2120 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl8ec7f652007-08-15 14:28:01 +00002121 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
2122 useful. Also available via :mod:`os.path`.
2123
2124
2125.. data:: altsep
2126
2127 An alternative character used by the operating system to separate pathname
2128 components, or ``None`` if only one separator character exists. This is set to
2129 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
2130 :mod:`os.path`.
2131
2132
2133.. data:: extsep
2134
2135 The character which separates the base filename from the extension; for example,
2136 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
2137
2138 .. versionadded:: 2.2
2139
2140
2141.. data:: pathsep
2142
2143 The character conventionally used by the operating system to separate search
2144 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
2145 Windows. Also available via :mod:`os.path`.
2146
2147
2148.. data:: defpath
2149
2150 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the
2151 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`.
2152
2153
2154.. data:: linesep
2155
2156 The string used to separate (or, rather, terminate) lines on the current
Georg Brandl9af94982008-09-13 17:41:16 +00002157 platform. This may be a single character, such as ``'\n'`` for POSIX, or
2158 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
2159 *os.linesep* as a line terminator when writing files opened in text mode (the
2160 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002161
2162
2163.. data:: devnull
2164
Georg Brandl9af94982008-09-13 17:41:16 +00002165 The file path of the null device. For example: ``'/dev/null'`` for POSIX.
2166 Also available via :mod:`os.path`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002167
2168 .. versionadded:: 2.4
2169
2170
2171.. _os-miscfunc:
2172
2173Miscellaneous Functions
2174-----------------------
2175
2176
2177.. function:: urandom(n)
2178
2179 Return a string of *n* random bytes suitable for cryptographic use.
2180
2181 This function returns random bytes from an OS-specific randomness source. The
2182 returned data should be unpredictable enough for cryptographic applications,
2183 though its exact quality depends on the OS implementation. On a UNIX-like
2184 system this will query /dev/urandom, and on Windows it will use CryptGenRandom.
2185 If a randomness source is not found, :exc:`NotImplementedError` will be raised.
2186
2187 .. versionadded:: 2.4
2188