blob: 29e789972c671d30d4ffda96a458212dece05d50 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`os` --- Miscellaneous operating system interfaces
2=======================================================
3
4.. module:: os
5 :synopsis: Miscellaneous operating system interfaces.
6
7
Christian Heimesa62da1d2008-01-12 19:39:10 +00008This module provides a portable way of using operating system dependent
9functionality. If you just want to read or write a file see :func:`open`, if
10you want to manipulate paths, see the :mod:`os.path` module, and if you want to
11read all the lines in all the files on the command line see the :mod:`fileinput`
12module. For creating temporary files and directories see the :mod:`tempfile`
13module, and for high-level file and directory handling see the :mod:`shutil`
14module.
Georg Brandl116aa622007-08-15 14:28:22 +000015
Christian Heimesa62da1d2008-01-12 19:39:10 +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 Brandl116aa622007-08-15 14:28:22 +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
Christian Heimesa62da1d2008-01-12 19:39:10 +000025.. note::
Georg Brandl116aa622007-08-15 14:28:22 +000026
Georg Brandl76e55382008-10-08 16:34:57 +000027 All functions accepting path or file names accept both bytes and string
28 objects, and result in an object of the same type, if a path or file name is
29 returned.
30
31.. note::
32
Georg Brandlc575c902008-09-13 17:46:05 +000033 If not separately noted, all functions that claim "Availability: Unix" are
34 supported on Mac OS X, which builds on a Unix core.
35
36.. note::
37
Christian Heimesa62da1d2008-01-12 19:39:10 +000038 All functions in this module raise :exc:`OSError` in the case of invalid or
39 inaccessible file names and paths, or other arguments that have the correct
40 type, but are not accepted by the operating system.
Georg Brandl116aa622007-08-15 14:28:22 +000041
Georg Brandl116aa622007-08-15 14:28:22 +000042.. exception:: error
43
Christian Heimesa62da1d2008-01-12 19:39:10 +000044 An alias for the built-in :exc:`OSError` exception.
Georg Brandl116aa622007-08-15 14:28:22 +000045
46
47.. data:: name
48
49 The name of the operating system dependent module imported. The following names
50 have currently been registered: ``'posix'``, ``'nt'``, ``'mac'``, ``'os2'``,
Skip Montanaro7a98be22007-08-16 14:35:24 +000051 ``'ce'``, ``'java'``.
Georg Brandl116aa622007-08-15 14:28:22 +000052
53
Martin v. Löwis011e8422009-05-05 04:43:17 +000054.. _os-filenames:
55
56File Names, Command Line Arguments, and Environment Variables
57-------------------------------------------------------------
58
59In Python, file names, command line arguments, and environment
60variables are represented using the string type. On some systems,
61decoding these strings to and from bytes is necessary before passing
62them to the operating system. Python uses the file system encoding to
63perform this conversion (see :func:`sys.getfilesystemencoding`).
64
65.. versionchanged:: 3.1
66 On some systems, conversion using the file system encoding may
Martin v. Löwis43c57782009-05-10 08:15:24 +000067 fail. In this case, Python uses the ``surrogateescape`` encoding
68 error handler, which means that undecodable bytes are replaced by a
Martin v. Löwis011e8422009-05-05 04:43:17 +000069 Unicode character U+DCxx on decoding, and these are again
70 translated to the original byte on encoding.
71
72
73The file system encoding must guarantee to successfully decode all
74bytes below 128. If the file system encoding fails to provide this
75guarantee, API functions may raise UnicodeErrors.
76
77
Georg Brandl116aa622007-08-15 14:28:22 +000078.. _os-procinfo:
79
80Process Parameters
81------------------
82
83These functions and data items provide information and operate on the current
84process and user.
85
86
87.. data:: environ
88
89 A mapping object representing the string environment. For example,
90 ``environ['HOME']`` is the pathname of your home directory (on some platforms),
91 and is equivalent to ``getenv("HOME")`` in C.
92
93 This mapping is captured the first time the :mod:`os` module is imported,
94 typically during Python startup as part of processing :file:`site.py`. Changes
95 to the environment made after this time are not reflected in ``os.environ``,
96 except for changes made by modifying ``os.environ`` directly.
97
98 If the platform supports the :func:`putenv` function, this mapping may be used
99 to modify the environment as well as query the environment. :func:`putenv` will
100 be called automatically when the mapping is modified.
101
102 .. note::
103
104 Calling :func:`putenv` directly does not change ``os.environ``, so it's better
105 to modify ``os.environ``.
106
107 .. note::
108
Georg Brandlc575c902008-09-13 17:46:05 +0000109 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
110 cause memory leaks. Refer to the system documentation for
111 :cfunc:`putenv`.
Georg Brandl116aa622007-08-15 14:28:22 +0000112
113 If :func:`putenv` is not provided, a modified copy of this mapping may be
114 passed to the appropriate process-creation functions to cause child processes
115 to use a modified environment.
116
Georg Brandl9afde1c2007-11-01 20:32:30 +0000117 If the platform supports the :func:`unsetenv` function, you can delete items in
Georg Brandl116aa622007-08-15 14:28:22 +0000118 this mapping to unset environment variables. :func:`unsetenv` will be called
Georg Brandl9afde1c2007-11-01 20:32:30 +0000119 automatically when an item is deleted from ``os.environ``, and when
120 one of the :meth:`pop` or :meth:`clear` methods is called.
121
Georg Brandl116aa622007-08-15 14:28:22 +0000122
123.. function:: chdir(path)
124 fchdir(fd)
125 getcwd()
126 :noindex:
127
128 These functions are described in :ref:`os-file-dir`.
129
130
131.. function:: ctermid()
132
133 Return the filename corresponding to the controlling terminal of the process.
134 Availability: Unix.
135
136
137.. function:: getegid()
138
139 Return the effective group id of the current process. This corresponds to the
Christian Heimesfaf2f632008-01-06 16:59:19 +0000140 "set id" bit on the file being executed in the current process. Availability:
Georg Brandl116aa622007-08-15 14:28:22 +0000141 Unix.
142
143
144.. function:: geteuid()
145
146 .. index:: single: user; effective id
147
Christian Heimesfaf2f632008-01-06 16:59:19 +0000148 Return the current process's effective user id. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000149
150
151.. function:: getgid()
152
153 .. index:: single: process; group
154
155 Return the real group id of the current process. Availability: Unix.
156
157
158.. function:: getgroups()
159
160 Return list of supplemental group ids associated with the current process.
161 Availability: Unix.
162
163
164.. function:: getlogin()
165
166 Return the name of the user logged in on the controlling terminal of the
167 process. For most purposes, it is more useful to use the environment variable
168 :envvar:`LOGNAME` to find out who the user is, or
169 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently
Christian Heimesfaf2f632008-01-06 16:59:19 +0000170 effective user id. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000171
172
173.. function:: getpgid(pid)
174
175 Return the process group id of the process with process id *pid*. If *pid* is 0,
176 the process group id of the current process is returned. Availability: Unix.
177
Georg Brandl116aa622007-08-15 14:28:22 +0000178
179.. function:: getpgrp()
180
181 .. index:: single: process; group
182
183 Return the id of the current process group. Availability: Unix.
184
185
186.. function:: getpid()
187
188 .. index:: single: process; id
189
190 Return the current process id. Availability: Unix, Windows.
191
192
193.. function:: getppid()
194
195 .. index:: single: process; id of parent
196
197 Return the parent's process id. Availability: Unix.
198
Georg Brandl1b83a452009-11-28 11:12:26 +0000199
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000200.. function:: getresuid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000201
202 Return a tuple (ruid, euid, suid) denoting the current process's
203 real, effective, and saved user ids. Availability: Unix.
204
Georg Brandl1b83a452009-11-28 11:12:26 +0000205 .. versionadded:: 3.2
206
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000207
Gregory P. Smithcf02c6a2009-11-27 17:54:17 +0000208.. function:: getresgid()
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000209
210 Return a tuple (rgid, egid, sgid) denoting the current process's
211 real, effective, and saved user ids. Availability: Unix.
212
Georg Brandl1b83a452009-11-28 11:12:26 +0000213 .. versionadded:: 3.2
214
Georg Brandl116aa622007-08-15 14:28:22 +0000215
216.. function:: getuid()
217
218 .. index:: single: user; id
219
Christian Heimesfaf2f632008-01-06 16:59:19 +0000220 Return the current process's user id. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000221
222
Georg Brandl18244152009-09-02 20:34:52 +0000223.. function:: getenv(key, default=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000224
Georg Brandl18244152009-09-02 20:34:52 +0000225 Return the value of the environment variable *key* if it exists, or
226 *default* if it doesn't. Availability: most flavors of Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000227
228
Georg Brandl18244152009-09-02 20:34:52 +0000229.. function:: putenv(key, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000230
231 .. index:: single: environment variables; setting
232
Georg Brandl18244152009-09-02 20:34:52 +0000233 Set the environment variable named *key* to the string *value*. Such
Georg Brandl116aa622007-08-15 14:28:22 +0000234 changes to the environment affect subprocesses started with :func:`os.system`,
235 :func:`popen` or :func:`fork` and :func:`execv`. Availability: most flavors of
236 Unix, Windows.
237
238 .. note::
239
Georg Brandlc575c902008-09-13 17:46:05 +0000240 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
241 cause memory leaks. Refer to the system documentation for putenv.
Georg Brandl116aa622007-08-15 14:28:22 +0000242
243 When :func:`putenv` is supported, assignments to items in ``os.environ`` are
244 automatically translated into corresponding calls to :func:`putenv`; however,
245 calls to :func:`putenv` don't update ``os.environ``, so it is actually
246 preferable to assign to items of ``os.environ``.
247
248
249.. function:: setegid(egid)
250
251 Set the current process's effective group id. Availability: Unix.
252
253
254.. function:: seteuid(euid)
255
256 Set the current process's effective user id. Availability: Unix.
257
258
259.. function:: setgid(gid)
260
261 Set the current process' group id. Availability: Unix.
262
263
264.. function:: setgroups(groups)
265
266 Set the list of supplemental group ids associated with the current process to
267 *groups*. *groups* must be a sequence, and each element must be an integer
Christian Heimesfaf2f632008-01-06 16:59:19 +0000268 identifying a group. This operation is typically available only to the superuser.
Georg Brandl116aa622007-08-15 14:28:22 +0000269 Availability: Unix.
270
Georg Brandl116aa622007-08-15 14:28:22 +0000271
272.. function:: setpgrp()
273
Christian Heimesfaf2f632008-01-06 16:59:19 +0000274 Call the system call :cfunc:`setpgrp` or :cfunc:`setpgrp(0, 0)` depending on
Georg Brandl116aa622007-08-15 14:28:22 +0000275 which version is implemented (if any). See the Unix manual for the semantics.
276 Availability: Unix.
277
278
279.. function:: setpgid(pid, pgrp)
280
Christian Heimesfaf2f632008-01-06 16:59:19 +0000281 Call the system call :cfunc:`setpgid` to set the process group id of the
Georg Brandl116aa622007-08-15 14:28:22 +0000282 process with id *pid* to the process group with id *pgrp*. See the Unix manual
283 for the semantics. Availability: Unix.
284
285
Georg Brandl116aa622007-08-15 14:28:22 +0000286.. function:: setregid(rgid, egid)
287
288 Set the current process's real and effective group ids. Availability: Unix.
289
Georg Brandl1b83a452009-11-28 11:12:26 +0000290
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000291.. function:: setresgid(rgid, egid, sgid)
292
293 Set the current process's real, effective, and saved group ids.
294 Availability: Unix.
295
Georg Brandl1b83a452009-11-28 11:12:26 +0000296 .. versionadded:: 3.2
297
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000298
299.. function:: setresuid(ruid, euid, suid)
300
301 Set the current process's real, effective, and saved user ids.
302 Availibility: Unix.
303
Georg Brandl1b83a452009-11-28 11:12:26 +0000304 .. versionadded:: 3.2
305
Martin v. Löwis7aed61a2009-11-27 14:09:49 +0000306
307.. function:: setreuid(ruid, euid)
308
309 Set the current process's real and effective user ids. Availability: Unix.
310
Georg Brandl116aa622007-08-15 14:28:22 +0000311
312.. function:: getsid(pid)
313
Christian Heimesfaf2f632008-01-06 16:59:19 +0000314 Call the system call :cfunc:`getsid`. See the Unix manual for the semantics.
Georg Brandl116aa622007-08-15 14:28:22 +0000315 Availability: Unix.
316
Georg Brandl116aa622007-08-15 14:28:22 +0000317
318.. function:: setsid()
319
Christian Heimesfaf2f632008-01-06 16:59:19 +0000320 Call the system call :cfunc:`setsid`. See the Unix manual for the semantics.
Georg Brandl116aa622007-08-15 14:28:22 +0000321 Availability: Unix.
322
323
324.. function:: setuid(uid)
325
326 .. index:: single: user; id, setting
327
Christian Heimesfaf2f632008-01-06 16:59:19 +0000328 Set the current process's user id. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000329
Georg Brandl116aa622007-08-15 14:28:22 +0000330
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000331.. placed in this section since it relates to errno.... a little weak
Georg Brandl116aa622007-08-15 14:28:22 +0000332.. function:: strerror(code)
333
334 Return the error message corresponding to the error code in *code*.
Alexandre Vassalotti8ae3e052008-05-16 00:41:41 +0000335 On platforms where :cfunc:`strerror` returns ``NULL`` when given an unknown
336 error number, :exc:`ValueError` is raised. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000337
338
339.. function:: umask(mask)
340
Christian Heimesfaf2f632008-01-06 16:59:19 +0000341 Set the current numeric umask and return the previous umask. Availability:
Georg Brandl116aa622007-08-15 14:28:22 +0000342 Unix, Windows.
343
344
345.. function:: uname()
346
347 .. index::
348 single: gethostname() (in module socket)
349 single: gethostbyaddr() (in module socket)
350
351 Return a 5-tuple containing information identifying the current operating
352 system. The tuple contains 5 strings: ``(sysname, nodename, release, version,
353 machine)``. Some systems truncate the nodename to 8 characters or to the
354 leading component; a better way to get the hostname is
355 :func:`socket.gethostname` or even
356 ``socket.gethostbyaddr(socket.gethostname())``. Availability: recent flavors of
357 Unix.
358
359
Georg Brandl18244152009-09-02 20:34:52 +0000360.. function:: unsetenv(key)
Georg Brandl116aa622007-08-15 14:28:22 +0000361
362 .. index:: single: environment variables; deleting
363
Georg Brandl18244152009-09-02 20:34:52 +0000364 Unset (delete) the environment variable named *key*. Such changes to the
Georg Brandl116aa622007-08-15 14:28:22 +0000365 environment affect subprocesses started with :func:`os.system`, :func:`popen` or
366 :func:`fork` and :func:`execv`. Availability: most flavors of Unix, Windows.
367
368 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is
369 automatically translated into a corresponding call to :func:`unsetenv`; however,
370 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually
371 preferable to delete items of ``os.environ``.
372
373
374.. _os-newstreams:
375
376File Object Creation
377--------------------
378
379These functions create new file objects. (See also :func:`open`.)
380
381
382.. function:: fdopen(fd[, mode[, bufsize]])
383
384 .. index:: single: I/O control; buffering
385
386 Return an open file object connected to the file descriptor *fd*. The *mode*
387 and *bufsize* arguments have the same meaning as the corresponding arguments to
Georg Brandlc575c902008-09-13 17:46:05 +0000388 the built-in :func:`open` function. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000389
Georg Brandl55ac8f02007-09-01 13:51:09 +0000390 When specified, the *mode* argument must start with one of the letters
391 ``'r'``, ``'w'``, or ``'a'``, otherwise a :exc:`ValueError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000392
Georg Brandl55ac8f02007-09-01 13:51:09 +0000393 On Unix, when the *mode* argument starts with ``'a'``, the *O_APPEND* flag is
394 set on the file descriptor (which the :cfunc:`fdopen` implementation already
395 does on most platforms).
Georg Brandl116aa622007-08-15 14:28:22 +0000396
397
Georg Brandl116aa622007-08-15 14:28:22 +0000398.. _os-fd-ops:
399
400File Descriptor Operations
401--------------------------
402
403These functions operate on I/O streams referenced using file descriptors.
404
405File descriptors are small integers corresponding to a file that has been opened
406by the current process. For example, standard input is usually file descriptor
4070, standard output is 1, and standard error is 2. Further files opened by a
408process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
409is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
410by file descriptors.
411
412
413.. function:: close(fd)
414
Georg Brandlc575c902008-09-13 17:46:05 +0000415 Close file descriptor *fd*. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000416
417 .. note::
418
419 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000420 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000421 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000422 :func:`fdopen`, use its :meth:`~file.close` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000423
424
Christian Heimesfdab48e2008-01-20 09:06:41 +0000425.. function:: closerange(fd_low, fd_high)
426
427 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
Georg Brandlc575c902008-09-13 17:46:05 +0000428 ignoring errors. Availability: Unix, Windows. Equivalent to::
Christian Heimesfdab48e2008-01-20 09:06:41 +0000429
Georg Brandlc9a5a0e2009-09-01 07:34:27 +0000430 for fd in range(fd_low, fd_high):
Christian Heimesfdab48e2008-01-20 09:06:41 +0000431 try:
432 os.close(fd)
433 except OSError:
434 pass
435
Christian Heimesfdab48e2008-01-20 09:06:41 +0000436
Georg Brandl81f11302007-12-21 08:45:42 +0000437.. function:: device_encoding(fd)
438
439 Return a string describing the encoding of the device associated with *fd*
440 if it is connected to a terminal; else return :const:`None`.
441
442
Georg Brandl116aa622007-08-15 14:28:22 +0000443.. function:: dup(fd)
444
Georg Brandlc575c902008-09-13 17:46:05 +0000445 Return a duplicate of file descriptor *fd*. Availability: Unix,
Georg Brandl116aa622007-08-15 14:28:22 +0000446 Windows.
447
448
449.. function:: dup2(fd, fd2)
450
451 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
Georg Brandlc575c902008-09-13 17:46:05 +0000452 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000453
454
Christian Heimes4e30a842007-11-30 22:12:06 +0000455.. function:: fchmod(fd, mode)
456
457 Change the mode of the file given by *fd* to the numeric *mode*. See the docs
458 for :func:`chmod` for possible values of *mode*. Availability: Unix.
459
460
461.. function:: fchown(fd, uid, gid)
462
463 Change the owner and group id of the file given by *fd* to the numeric *uid*
464 and *gid*. To leave one of the ids unchanged, set it to -1.
465 Availability: Unix.
466
467
Georg Brandl116aa622007-08-15 14:28:22 +0000468.. function:: fdatasync(fd)
469
470 Force write of file with filedescriptor *fd* to disk. Does not force update of
471 metadata. Availability: Unix.
472
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000473 .. note::
474 This function is not available on MacOS.
475
Georg Brandl116aa622007-08-15 14:28:22 +0000476
477.. function:: fpathconf(fd, name)
478
479 Return system configuration information relevant to an open file. *name*
480 specifies the configuration value to retrieve; it may be a string which is the
481 name of a defined system value; these names are specified in a number of
482 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
483 additional names as well. The names known to the host operating system are
484 given in the ``pathconf_names`` dictionary. For configuration variables not
485 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandlc575c902008-09-13 17:46:05 +0000486 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000487
488 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
489 specific value for *name* is not supported by the host system, even if it is
490 included in ``pathconf_names``, an :exc:`OSError` is raised with
491 :const:`errno.EINVAL` for the error number.
492
493
494.. function:: fstat(fd)
495
496 Return status for file descriptor *fd*, like :func:`stat`. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +0000497 Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000498
499
500.. function:: fstatvfs(fd)
501
502 Return information about the filesystem containing the file associated with file
503 descriptor *fd*, like :func:`statvfs`. Availability: Unix.
504
505
506.. function:: fsync(fd)
507
508 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the
509 native :cfunc:`fsync` function; on Windows, the MS :cfunc:`_commit` function.
510
511 If you're starting with a Python file object *f*, first do ``f.flush()``, and
512 then do ``os.fsync(f.fileno())``, to ensure that all internal buffers associated
Georg Brandlc575c902008-09-13 17:46:05 +0000513 with *f* are written to disk. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000514
515
516.. function:: ftruncate(fd, length)
517
518 Truncate the file corresponding to file descriptor *fd*, so that it is at most
Georg Brandlc575c902008-09-13 17:46:05 +0000519 *length* bytes in size. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000520
521
522.. function:: isatty(fd)
523
524 Return ``True`` if the file descriptor *fd* is open and connected to a
Georg Brandlc575c902008-09-13 17:46:05 +0000525 tty(-like) device, else ``False``. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000526
527
528.. function:: lseek(fd, pos, how)
529
Christian Heimesfaf2f632008-01-06 16:59:19 +0000530 Set the current position of file descriptor *fd* to position *pos*, modified
531 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
532 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
533 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
Georg Brandlc575c902008-09-13 17:46:05 +0000534 the file. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000535
536
537.. function:: open(file, flags[, mode])
538
Georg Brandlf4a41232008-05-26 17:55:52 +0000539 Open the file *file* and set various flags according to *flags* and possibly
540 its mode according to *mode*. The default *mode* is ``0o777`` (octal), and
541 the current umask value is first masked out. Return the file descriptor for
Georg Brandlc575c902008-09-13 17:46:05 +0000542 the newly opened file. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000543
544 For a description of the flag and mode values, see the C run-time documentation;
545 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
546 this module too (see below).
547
548 .. note::
549
Georg Brandl502d9a52009-07-26 15:02:41 +0000550 This function is intended for low-level I/O. For normal usage, use the
551 built-in function :func:`open`, which returns a "file object" with
552 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
553 wrap a file descriptor in a "file object", use :func:`fdopen`.
Georg Brandl116aa622007-08-15 14:28:22 +0000554
555
556.. function:: openpty()
557
558 .. index:: module: pty
559
560 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
561 slave)`` for the pty and the tty, respectively. For a (slightly) more portable
Georg Brandlc575c902008-09-13 17:46:05 +0000562 approach, use the :mod:`pty` module. Availability: some flavors of
Georg Brandl116aa622007-08-15 14:28:22 +0000563 Unix.
564
565
566.. function:: pipe()
567
568 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading
Georg Brandlc575c902008-09-13 17:46:05 +0000569 and writing, respectively. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000570
571
572.. function:: read(fd, n)
573
Georg Brandlb90be692009-07-29 16:14:16 +0000574 Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the
Georg Brandl116aa622007-08-15 14:28:22 +0000575 bytes read. If the end of the file referred to by *fd* has been reached, an
Georg Brandlb90be692009-07-29 16:14:16 +0000576 empty bytes object is returned. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
578 .. note::
579
580 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000581 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a "file object"
Georg Brandl116aa622007-08-15 14:28:22 +0000582 returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000583 :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
584 :meth:`~file.readline` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000585
586
587.. function:: tcgetpgrp(fd)
588
589 Return the process group associated with the terminal given by *fd* (an open
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000590 file descriptor as returned by :func:`os.open`). Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000591
592
593.. function:: tcsetpgrp(fd, pg)
594
595 Set the process group associated with the terminal given by *fd* (an open file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000596 descriptor as returned by :func:`os.open`) to *pg*. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000597
598
599.. function:: ttyname(fd)
600
601 Return a string which specifies the terminal device associated with
Georg Brandl9afde1c2007-11-01 20:32:30 +0000602 file descriptor *fd*. If *fd* is not associated with a terminal device, an
Georg Brandlc575c902008-09-13 17:46:05 +0000603 exception is raised. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000604
605
606.. function:: write(fd, str)
607
Georg Brandlb90be692009-07-29 16:14:16 +0000608 Write the bytestring in *str* to file descriptor *fd*. Return the number of
609 bytes actually written. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000610
611 .. note::
612
613 This function is intended for low-level I/O and must be applied to a file
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000614 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
Georg Brandl116aa622007-08-15 14:28:22 +0000615 object" returned by the built-in function :func:`open` or by :func:`popen` or
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000616 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
617 :meth:`~file.write` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000618
Georg Brandlaf265f42008-12-07 15:06:20 +0000619The following constants are options for the *flags* parameter to the
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000620:func:`~os.open` function. They can be combined using the bitwise OR operator
Georg Brandlaf265f42008-12-07 15:06:20 +0000621``|``. Some of them are not available on all platforms. For descriptions of
622their availability and use, consult the :manpage:`open(2)` manual page on Unix
Doug Hellmanneb097fc2009-09-20 20:56:56 +0000623or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000624
625
626.. data:: O_RDONLY
627 O_WRONLY
628 O_RDWR
629 O_APPEND
630 O_CREAT
631 O_EXCL
632 O_TRUNC
633
Georg Brandlaf265f42008-12-07 15:06:20 +0000634 These constants are available on Unix and Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000635
636
637.. data:: O_DSYNC
638 O_RSYNC
639 O_SYNC
640 O_NDELAY
641 O_NONBLOCK
642 O_NOCTTY
643 O_SHLOCK
644 O_EXLOCK
645
Georg Brandlaf265f42008-12-07 15:06:20 +0000646 These constants are only available on Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000647
648
649.. data:: O_BINARY
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000650 O_NOINHERIT
Georg Brandl116aa622007-08-15 14:28:22 +0000651 O_SHORT_LIVED
652 O_TEMPORARY
653 O_RANDOM
654 O_SEQUENTIAL
655 O_TEXT
656
Georg Brandlaf265f42008-12-07 15:06:20 +0000657 These constants are only available on Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000658
659
Alexandre Vassalottibee32532008-05-16 18:15:12 +0000660.. data:: O_ASYNC
661 O_DIRECT
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000662 O_DIRECTORY
663 O_NOFOLLOW
664 O_NOATIME
665
Georg Brandlaf265f42008-12-07 15:06:20 +0000666 These constants are GNU extensions and not present if they are not defined by
667 the C library.
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000668
669
Georg Brandl116aa622007-08-15 14:28:22 +0000670.. data:: SEEK_SET
671 SEEK_CUR
672 SEEK_END
673
674 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
Georg Brandlc575c902008-09-13 17:46:05 +0000675 respectively. Availability: Windows, Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000676
Georg Brandl116aa622007-08-15 14:28:22 +0000677
678.. _os-file-dir:
679
680Files and Directories
681---------------------
682
Georg Brandl116aa622007-08-15 14:28:22 +0000683.. function:: access(path, mode)
684
685 Use the real uid/gid to test for access to *path*. Note that most operations
686 will use the effective uid/gid, therefore this routine can be used in a
687 suid/sgid environment to test if the invoking user has the specified access to
688 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it
689 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
690 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed,
691 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
Georg Brandlc575c902008-09-13 17:46:05 +0000692 information. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000693
694 .. note::
695
Georg Brandl502d9a52009-07-26 15:02:41 +0000696 Using :func:`access` to check if a user is authorized to e.g. open a file
697 before actually doing so using :func:`open` creates a security hole,
698 because the user might exploit the short time interval between checking
699 and opening the file to manipulate it.
Georg Brandl116aa622007-08-15 14:28:22 +0000700
701 .. note::
702
703 I/O operations may fail even when :func:`access` indicates that they would
704 succeed, particularly for operations on network filesystems which may have
705 permissions semantics beyond the usual POSIX permission-bit model.
706
707
708.. data:: F_OK
709
710 Value to pass as the *mode* parameter of :func:`access` to test the existence of
711 *path*.
712
713
714.. data:: R_OK
715
716 Value to include in the *mode* parameter of :func:`access` to test the
717 readability of *path*.
718
719
720.. data:: W_OK
721
722 Value to include in the *mode* parameter of :func:`access` to test the
723 writability of *path*.
724
725
726.. data:: X_OK
727
728 Value to include in the *mode* parameter of :func:`access` to determine if
729 *path* can be executed.
730
731
732.. function:: chdir(path)
733
734 .. index:: single: directory; changing
735
Georg Brandlc575c902008-09-13 17:46:05 +0000736 Change the current working directory to *path*. Availability: Unix,
Georg Brandl116aa622007-08-15 14:28:22 +0000737 Windows.
738
739
740.. function:: fchdir(fd)
741
742 Change the current working directory to the directory represented by the file
743 descriptor *fd*. The descriptor must refer to an opened directory, not an open
744 file. Availability: Unix.
745
Georg Brandl116aa622007-08-15 14:28:22 +0000746
747.. function:: getcwd()
748
Martin v. Löwis011e8422009-05-05 04:43:17 +0000749 Return a string representing the current working directory.
750 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000751
Martin v. Löwisa731b992008-10-07 06:36:31 +0000752.. function:: getcwdb()
Georg Brandl116aa622007-08-15 14:28:22 +0000753
Georg Brandl76e55382008-10-08 16:34:57 +0000754 Return a bytestring representing the current working directory.
Georg Brandlc575c902008-09-13 17:46:05 +0000755 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000756
Georg Brandl116aa622007-08-15 14:28:22 +0000757
758.. function:: chflags(path, flags)
759
760 Set the flags of *path* to the numeric *flags*. *flags* may take a combination
761 (bitwise OR) of the following values (as defined in the :mod:`stat` module):
762
763 * ``UF_NODUMP``
764 * ``UF_IMMUTABLE``
765 * ``UF_APPEND``
766 * ``UF_OPAQUE``
767 * ``UF_NOUNLINK``
768 * ``SF_ARCHIVED``
769 * ``SF_IMMUTABLE``
770 * ``SF_APPEND``
771 * ``SF_NOUNLINK``
772 * ``SF_SNAPSHOT``
773
Georg Brandlc575c902008-09-13 17:46:05 +0000774 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000775
Georg Brandl116aa622007-08-15 14:28:22 +0000776
777.. function:: chroot(path)
778
779 Change the root directory of the current process to *path*. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +0000780 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000781
Georg Brandl116aa622007-08-15 14:28:22 +0000782
783.. function:: chmod(path, mode)
784
785 Change the mode of *path* to the numeric *mode*. *mode* may take one of the
Christian Heimesfaf2f632008-01-06 16:59:19 +0000786 following values (as defined in the :mod:`stat` module) or bitwise ORed
Georg Brandl116aa622007-08-15 14:28:22 +0000787 combinations of them:
788
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000789 * :data:`stat.S_ISUID`
790 * :data:`stat.S_ISGID`
791 * :data:`stat.S_ENFMT`
792 * :data:`stat.S_ISVTX`
793 * :data:`stat.S_IREAD`
794 * :data:`stat.S_IWRITE`
795 * :data:`stat.S_IEXEC`
796 * :data:`stat.S_IRWXU`
797 * :data:`stat.S_IRUSR`
798 * :data:`stat.S_IWUSR`
799 * :data:`stat.S_IXUSR`
800 * :data:`stat.S_IRWXG`
801 * :data:`stat.S_IRGRP`
802 * :data:`stat.S_IWGRP`
803 * :data:`stat.S_IXGRP`
804 * :data:`stat.S_IRWXO`
805 * :data:`stat.S_IROTH`
806 * :data:`stat.S_IWOTH`
807 * :data:`stat.S_IXOTH`
Georg Brandl116aa622007-08-15 14:28:22 +0000808
Georg Brandlc575c902008-09-13 17:46:05 +0000809 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000810
811 .. note::
812
813 Although Windows supports :func:`chmod`, you can only set the file's read-only
814 flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD``
815 constants or a corresponding integer value). All other bits are
816 ignored.
817
818
819.. function:: chown(path, uid, gid)
820
821 Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave
Georg Brandlc575c902008-09-13 17:46:05 +0000822 one of the ids unchanged, set it to -1. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000823
824
825.. function:: lchflags(path, flags)
826
827 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do not
828 follow symbolic links. Availability: Unix.
829
Georg Brandl116aa622007-08-15 14:28:22 +0000830
Christian Heimes93852662007-12-01 12:22:32 +0000831.. function:: lchmod(path, mode)
832
833 Change the mode of *path* to the numeric *mode*. If path is a symlink, this
834 affects the symlink rather than the target. See the docs for :func:`chmod`
835 for possible values of *mode*. Availability: Unix.
836
Christian Heimes93852662007-12-01 12:22:32 +0000837
Georg Brandl116aa622007-08-15 14:28:22 +0000838.. function:: lchown(path, uid, gid)
839
Christian Heimesfaf2f632008-01-06 16:59:19 +0000840 Change the owner and group id of *path* to the numeric *uid* and *gid*. This
Georg Brandlc575c902008-09-13 17:46:05 +0000841 function will not follow symbolic links. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000842
Georg Brandl116aa622007-08-15 14:28:22 +0000843
Benjamin Peterson5879d412009-03-30 14:51:56 +0000844.. function:: link(source, link_name)
Georg Brandl116aa622007-08-15 14:28:22 +0000845
Benjamin Peterson5879d412009-03-30 14:51:56 +0000846 Create a hard link pointing to *source* named *link_name*. Availability:
847 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000848
849
850.. function:: listdir(path)
851
Benjamin Peterson4469d0c2008-11-30 22:46:23 +0000852 Return a list containing the names of the entries in the directory given by
853 *path*. The list is in arbitrary order. It does not include the special
854 entries ``'.'`` and ``'..'`` even if they are present in the directory.
855 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000856
Martin v. Löwis011e8422009-05-05 04:43:17 +0000857 This function can be called with a bytes or string argument, and returns
858 filenames of the same datatype.
Georg Brandl116aa622007-08-15 14:28:22 +0000859
860
861.. function:: lstat(path)
862
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000863 Like :func:`stat`, but do not follow symbolic links. This is an alias for
864 :func:`stat` on platforms that do not support symbolic links, such as
865 Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000866
867
868.. function:: mkfifo(path[, mode])
869
Georg Brandlf4a41232008-05-26 17:55:52 +0000870 Create a FIFO (a named pipe) named *path* with numeric mode *mode*. The
871 default *mode* is ``0o666`` (octal). The current umask value is first masked
Georg Brandlc575c902008-09-13 17:46:05 +0000872 out from the mode. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000873
874 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they
875 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
876 rendezvous between "client" and "server" type processes: the server opens the
877 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo`
878 doesn't open the FIFO --- it just creates the rendezvous point.
879
880
Georg Brandl18244152009-09-02 20:34:52 +0000881.. function:: mknod(filename[, mode=0o600[, device]])
Georg Brandl116aa622007-08-15 14:28:22 +0000882
883 Create a filesystem node (file, device special file or named pipe) named
Georg Brandl18244152009-09-02 20:34:52 +0000884 *filename*. *mode* specifies both the permissions to use and the type of node
885 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``,
886 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are
887 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``,
888 *device* defines the newly created device special file (probably using
Georg Brandl116aa622007-08-15 14:28:22 +0000889 :func:`os.makedev`), otherwise it is ignored.
890
Georg Brandl116aa622007-08-15 14:28:22 +0000891
892.. function:: major(device)
893
Christian Heimesfaf2f632008-01-06 16:59:19 +0000894 Extract the device major number from a raw device number (usually the
Georg Brandl116aa622007-08-15 14:28:22 +0000895 :attr:`st_dev` or :attr:`st_rdev` field from :ctype:`stat`).
896
Georg Brandl116aa622007-08-15 14:28:22 +0000897
898.. function:: minor(device)
899
Christian Heimesfaf2f632008-01-06 16:59:19 +0000900 Extract the device minor number from a raw device number (usually the
Georg Brandl116aa622007-08-15 14:28:22 +0000901 :attr:`st_dev` or :attr:`st_rdev` field from :ctype:`stat`).
902
Georg Brandl116aa622007-08-15 14:28:22 +0000903
904.. function:: makedev(major, minor)
905
Christian Heimesfaf2f632008-01-06 16:59:19 +0000906 Compose a raw device number from the major and minor device numbers.
Georg Brandl116aa622007-08-15 14:28:22 +0000907
Georg Brandl116aa622007-08-15 14:28:22 +0000908
909.. function:: mkdir(path[, mode])
910
Georg Brandlf4a41232008-05-26 17:55:52 +0000911 Create a directory named *path* with numeric mode *mode*. The default *mode*
912 is ``0o777`` (octal). On some systems, *mode* is ignored. Where it is used,
Georg Brandlc575c902008-09-13 17:46:05 +0000913 the current umask value is first masked out. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000914
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000915 It is also possible to create temporary directories; see the
916 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
917
Georg Brandl116aa622007-08-15 14:28:22 +0000918
919.. function:: makedirs(path[, mode])
920
921 .. index::
922 single: directory; creating
923 single: UNC paths; and os.makedirs()
924
925 Recursive directory creation function. Like :func:`mkdir`, but makes all
Georg Brandlf4a41232008-05-26 17:55:52 +0000926 intermediate-level directories needed to contain the leaf directory. Throws
927 an :exc:`error` exception if the leaf directory already exists or cannot be
928 created. The default *mode* is ``0o777`` (octal). On some systems, *mode*
929 is ignored. Where it is used, the current umask value is first masked out.
Georg Brandl116aa622007-08-15 14:28:22 +0000930
931 .. note::
932
933 :func:`makedirs` will become confused if the path elements to create include
Christian Heimesfaf2f632008-01-06 16:59:19 +0000934 :data:`os.pardir`.
Georg Brandl116aa622007-08-15 14:28:22 +0000935
Georg Brandl55ac8f02007-09-01 13:51:09 +0000936 This function handles UNC paths correctly.
Georg Brandl116aa622007-08-15 14:28:22 +0000937
938
939.. function:: pathconf(path, name)
940
941 Return system configuration information relevant to a named file. *name*
942 specifies the configuration value to retrieve; it may be a string which is the
943 name of a defined system value; these names are specified in a number of
944 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define
945 additional names as well. The names known to the host operating system are
946 given in the ``pathconf_names`` dictionary. For configuration variables not
947 included in that mapping, passing an integer for *name* is also accepted.
Georg Brandlc575c902008-09-13 17:46:05 +0000948 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000949
950 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
951 specific value for *name* is not supported by the host system, even if it is
952 included in ``pathconf_names``, an :exc:`OSError` is raised with
953 :const:`errno.EINVAL` for the error number.
954
955
956.. data:: pathconf_names
957
958 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
959 the integer values defined for those names by the host operating system. This
960 can be used to determine the set of names known to the system. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +0000961 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000962
963
964.. function:: readlink(path)
965
966 Return a string representing the path to which the symbolic link points. The
967 result may be either an absolute or relative pathname; if it is relative, it may
968 be converted to an absolute pathname using ``os.path.join(os.path.dirname(path),
969 result)``.
970
Georg Brandl76e55382008-10-08 16:34:57 +0000971 If the *path* is a string object, the result will also be a string object,
972 and the call may raise an UnicodeDecodeError. If the *path* is a bytes
973 object, the result will be a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +0000974
Georg Brandlc575c902008-09-13 17:46:05 +0000975 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000976
977
978.. function:: remove(path)
979
Georg Brandla6053b42009-09-01 08:11:14 +0000980 Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
981 raised; see :func:`rmdir` below to remove a directory. This is identical to
982 the :func:`unlink` function documented below. On Windows, attempting to
983 remove a file that is in use causes an exception to be raised; on Unix, the
984 directory entry is removed but the storage allocated to the file is not made
985 available until the original file is no longer in use. Availability: Unix,
Georg Brandl116aa622007-08-15 14:28:22 +0000986 Windows.
987
988
989.. function:: removedirs(path)
990
991 .. index:: single: directory; deleting
992
Christian Heimesfaf2f632008-01-06 16:59:19 +0000993 Remove directories recursively. Works like :func:`rmdir` except that, if the
Georg Brandl116aa622007-08-15 14:28:22 +0000994 leaf directory is successfully removed, :func:`removedirs` tries to
995 successively remove every parent directory mentioned in *path* until an error
996 is raised (which is ignored, because it generally means that a parent directory
997 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove
998 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if
999 they are empty. Raises :exc:`OSError` if the leaf directory could not be
1000 successfully removed.
1001
Georg Brandl116aa622007-08-15 14:28:22 +00001002
1003.. function:: rename(src, dst)
1004
1005 Rename the file or directory *src* to *dst*. If *dst* is a directory,
1006 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
Christian Heimesfaf2f632008-01-06 16:59:19 +00001007 be replaced silently if the user has permission. The operation may fail on some
Georg Brandl116aa622007-08-15 14:28:22 +00001008 Unix flavors if *src* and *dst* are on different filesystems. If successful,
1009 the renaming will be an atomic operation (this is a POSIX requirement). On
1010 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
1011 file; there may be no way to implement an atomic rename when *dst* names an
Georg Brandlc575c902008-09-13 17:46:05 +00001012 existing file. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001013
1014
1015.. function:: renames(old, new)
1016
1017 Recursive directory or file renaming function. Works like :func:`rename`, except
1018 creation of any intermediate directories needed to make the new pathname good is
1019 attempted first. After the rename, directories corresponding to rightmost path
1020 segments of the old name will be pruned away using :func:`removedirs`.
1021
Georg Brandl116aa622007-08-15 14:28:22 +00001022 .. note::
1023
1024 This function can fail with the new directory structure made if you lack
1025 permissions needed to remove the leaf directory or file.
1026
1027
1028.. function:: rmdir(path)
1029
Georg Brandla6053b42009-09-01 08:11:14 +00001030 Remove (delete) the directory *path*. Only works when the directory is
1031 empty, otherwise, :exc:`OSError` is raised. In order to remove whole
1032 directory trees, :func:`shutil.rmtree` can be used. Availability: Unix,
1033 Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001034
1035
1036.. function:: stat(path)
1037
1038 Perform a :cfunc:`stat` system call on the given path. The return value is an
1039 object whose attributes correspond to the members of the :ctype:`stat`
1040 structure, namely: :attr:`st_mode` (protection bits), :attr:`st_ino` (inode
1041 number), :attr:`st_dev` (device), :attr:`st_nlink` (number of hard links),
Christian Heimesfaf2f632008-01-06 16:59:19 +00001042 :attr:`st_uid` (user id of owner), :attr:`st_gid` (group id of owner),
Georg Brandl116aa622007-08-15 14:28:22 +00001043 :attr:`st_size` (size of file, in bytes), :attr:`st_atime` (time of most recent
1044 access), :attr:`st_mtime` (time of most recent content modification),
1045 :attr:`st_ctime` (platform dependent; time of most recent metadata change on
1046 Unix, or the time of creation on Windows)::
1047
1048 >>> import os
1049 >>> statinfo = os.stat('somefile.txt')
1050 >>> statinfo
1051 (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
1052 >>> statinfo.st_size
1053 926L
1054 >>>
1055
Georg Brandl116aa622007-08-15 14:28:22 +00001056
1057 On some Unix systems (such as Linux), the following attributes may also be
1058 available: :attr:`st_blocks` (number of blocks allocated for file),
1059 :attr:`st_blksize` (filesystem blocksize), :attr:`st_rdev` (type of device if an
1060 inode device). :attr:`st_flags` (user defined flags for file).
1061
1062 On other Unix systems (such as FreeBSD), the following attributes may be
1063 available (but may be only filled out if root tries to use them): :attr:`st_gen`
1064 (file generation number), :attr:`st_birthtime` (time of file creation).
1065
1066 On Mac OS systems, the following attributes may also be available:
1067 :attr:`st_rsize`, :attr:`st_creator`, :attr:`st_type`.
1068
Georg Brandl116aa622007-08-15 14:28:22 +00001069 .. index:: module: stat
1070
1071 For backward compatibility, the return value of :func:`stat` is also accessible
1072 as a tuple of at least 10 integers giving the most important (and portable)
1073 members of the :ctype:`stat` structure, in the order :attr:`st_mode`,
1074 :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, :attr:`st_uid`,
1075 :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, :attr:`st_mtime`,
1076 :attr:`st_ctime`. More items may be added at the end by some implementations.
1077 The standard module :mod:`stat` defines functions and constants that are useful
1078 for extracting information from a :ctype:`stat` structure. (On Windows, some
1079 items are filled with dummy values.)
1080
1081 .. note::
1082
1083 The exact meaning and resolution of the :attr:`st_atime`, :attr:`st_mtime`, and
1084 :attr:`st_ctime` members depends on the operating system and the file system.
1085 For example, on Windows systems using the FAT or FAT32 file systems,
1086 :attr:`st_mtime` has 2-second resolution, and :attr:`st_atime` has only 1-day
1087 resolution. See your operating system documentation for details.
1088
Georg Brandlc575c902008-09-13 17:46:05 +00001089 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001090
Georg Brandl116aa622007-08-15 14:28:22 +00001091
1092.. function:: stat_float_times([newvalue])
1093
1094 Determine whether :class:`stat_result` represents time stamps as float objects.
1095 If *newvalue* is ``True``, future calls to :func:`stat` return floats, if it is
1096 ``False``, future calls return ints. If *newvalue* is omitted, return the
1097 current setting.
1098
1099 For compatibility with older Python versions, accessing :class:`stat_result` as
1100 a tuple always returns integers.
1101
Georg Brandl55ac8f02007-09-01 13:51:09 +00001102 Python now returns float values by default. Applications which do not work
1103 correctly with floating point time stamps can use this function to restore the
1104 old behaviour.
Georg Brandl116aa622007-08-15 14:28:22 +00001105
1106 The resolution of the timestamps (that is the smallest possible fraction)
1107 depends on the system. Some systems only support second resolution; on these
1108 systems, the fraction will always be zero.
1109
1110 It is recommended that this setting is only changed at program startup time in
1111 the *__main__* module; libraries should never change this setting. If an
1112 application uses a library that works incorrectly if floating point time stamps
1113 are processed, this application should turn the feature off until the library
1114 has been corrected.
1115
1116
1117.. function:: statvfs(path)
1118
1119 Perform a :cfunc:`statvfs` system call on the given path. The return value is
1120 an object whose attributes describe the filesystem on the given path, and
1121 correspond to the members of the :ctype:`statvfs` structure, namely:
1122 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
1123 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
1124 :attr:`f_flag`, :attr:`f_namemax`. Availability: Unix.
1125
Georg Brandl116aa622007-08-15 14:28:22 +00001126
Benjamin Peterson5879d412009-03-30 14:51:56 +00001127.. function:: symlink(source, link_name)
Georg Brandl116aa622007-08-15 14:28:22 +00001128
Benjamin Peterson5879d412009-03-30 14:51:56 +00001129 Create a symbolic link pointing to *source* named *link_name*. Availability:
1130 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001131
1132
Georg Brandl116aa622007-08-15 14:28:22 +00001133.. function:: unlink(path)
1134
Georg Brandla6053b42009-09-01 08:11:14 +00001135 Remove (delete) the file *path*. This is the same function as
1136 :func:`remove`; the :func:`unlink` name is its traditional Unix
1137 name. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001138
1139
1140.. function:: utime(path, times)
1141
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00001142 Set the access and modified times of the file specified by *path*. If *times*
1143 is ``None``, then the file's access and modified times are set to the current
1144 time. (The effect is similar to running the Unix program :program:`touch` on
1145 the path.) Otherwise, *times* must be a 2-tuple of numbers, of the form
1146 ``(atime, mtime)`` which is used to set the access and modified times,
1147 respectively. Whether a directory can be given for *path* depends on whether
1148 the operating system implements directories as files (for example, Windows
1149 does not). Note that the exact times you set here may not be returned by a
1150 subsequent :func:`stat` call, depending on the resolution with which your
1151 operating system records access and modification times; see :func:`stat`.
Georg Brandl116aa622007-08-15 14:28:22 +00001152
Georg Brandlc575c902008-09-13 17:46:05 +00001153 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001154
1155
Georg Brandl18244152009-09-02 20:34:52 +00001156.. function:: walk(top, topdown=True, onerror=None, followlinks=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001157
1158 .. index::
1159 single: directory; walking
1160 single: directory; traversal
1161
Christian Heimesfaf2f632008-01-06 16:59:19 +00001162 Generate the file names in a directory tree by walking the tree
1163 either top-down or bottom-up. For each directory in the tree rooted at directory
Georg Brandl116aa622007-08-15 14:28:22 +00001164 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames,
1165 filenames)``.
1166
1167 *dirpath* is a string, the path to the directory. *dirnames* is a list of the
1168 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``).
1169 *filenames* is a list of the names of the non-directory files in *dirpath*.
1170 Note that the names in the lists contain no path components. To get a full path
1171 (which begins with *top*) to a file or directory in *dirpath*, do
1172 ``os.path.join(dirpath, name)``.
1173
Christian Heimesfaf2f632008-01-06 16:59:19 +00001174 If optional argument *topdown* is ``True`` or not specified, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00001175 directory is generated before the triples for any of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00001176 (directories are generated top-down). If *topdown* is ``False``, the triple for a
Georg Brandl116aa622007-08-15 14:28:22 +00001177 directory is generated after the triples for all of its subdirectories
Christian Heimesfaf2f632008-01-06 16:59:19 +00001178 (directories are generated bottom-up).
Georg Brandl116aa622007-08-15 14:28:22 +00001179
Christian Heimesfaf2f632008-01-06 16:59:19 +00001180 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place
Georg Brandl116aa622007-08-15 14:28:22 +00001181 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only
1182 recurse into the subdirectories whose names remain in *dirnames*; this can be
1183 used to prune the search, impose a specific order of visiting, or even to inform
1184 :func:`walk` about directories the caller creates or renames before it resumes
Christian Heimesfaf2f632008-01-06 16:59:19 +00001185 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is
Georg Brandl116aa622007-08-15 14:28:22 +00001186 ineffective, because in bottom-up mode the directories in *dirnames* are
1187 generated before *dirpath* itself is generated.
1188
Christian Heimesfaf2f632008-01-06 16:59:19 +00001189 By default errors from the :func:`listdir` call are ignored. If optional
Georg Brandl116aa622007-08-15 14:28:22 +00001190 argument *onerror* is specified, it should be a function; it will be called with
1191 one argument, an :exc:`OSError` instance. It can report the error to continue
1192 with the walk, or raise the exception to abort the walk. Note that the filename
1193 is available as the ``filename`` attribute of the exception object.
1194
1195 By default, :func:`walk` will not walk down into symbolic links that resolve to
Christian Heimesfaf2f632008-01-06 16:59:19 +00001196 directories. Set *followlinks* to ``True`` to visit directories pointed to by
Georg Brandl116aa622007-08-15 14:28:22 +00001197 symlinks, on systems that support them.
1198
Georg Brandl116aa622007-08-15 14:28:22 +00001199 .. note::
1200
Christian Heimesfaf2f632008-01-06 16:59:19 +00001201 Be aware that setting *followlinks* to ``True`` can lead to infinite recursion if a
Georg Brandl116aa622007-08-15 14:28:22 +00001202 link points to a parent directory of itself. :func:`walk` does not keep track of
1203 the directories it visited already.
1204
1205 .. note::
1206
1207 If you pass a relative pathname, don't change the current working directory
1208 between resumptions of :func:`walk`. :func:`walk` never changes the current
1209 directory, and assumes that its caller doesn't either.
1210
1211 This example displays the number of bytes taken by non-directory files in each
1212 directory under the starting directory, except that it doesn't look under any
1213 CVS subdirectory::
1214
1215 import os
1216 from os.path import join, getsize
1217 for root, dirs, files in os.walk('python/Lib/email'):
Georg Brandl6911e3c2007-09-04 07:15:32 +00001218 print(root, "consumes", end=" ")
1219 print(sum(getsize(join(root, name)) for name in files), end=" ")
1220 print("bytes in", len(files), "non-directory files")
Georg Brandl116aa622007-08-15 14:28:22 +00001221 if 'CVS' in dirs:
1222 dirs.remove('CVS') # don't visit CVS directories
1223
Christian Heimesfaf2f632008-01-06 16:59:19 +00001224 In the next example, walking the tree bottom-up is essential: :func:`rmdir`
Georg Brandl116aa622007-08-15 14:28:22 +00001225 doesn't allow deleting a directory before the directory is empty::
1226
Christian Heimesfaf2f632008-01-06 16:59:19 +00001227 # Delete everything reachable from the directory named in "top",
Georg Brandl116aa622007-08-15 14:28:22 +00001228 # assuming there are no symbolic links.
1229 # CAUTION: This is dangerous! For example, if top == '/', it
1230 # could delete all your disk files.
1231 import os
1232 for root, dirs, files in os.walk(top, topdown=False):
1233 for name in files:
1234 os.remove(os.path.join(root, name))
1235 for name in dirs:
1236 os.rmdir(os.path.join(root, name))
1237
Georg Brandl116aa622007-08-15 14:28:22 +00001238
1239.. _os-process:
1240
1241Process Management
1242------------------
1243
1244These functions may be used to create and manage processes.
1245
1246The various :func:`exec\*` functions take a list of arguments for the new
1247program loaded into the process. In each case, the first of these arguments is
1248passed to the new program as its own name rather than as an argument a user may
1249have typed on a command line. For the C programmer, this is the ``argv[0]``
1250passed to a program's :cfunc:`main`. For example, ``os.execv('/bin/echo',
1251['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem
1252to be ignored.
1253
1254
1255.. function:: abort()
1256
1257 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default
1258 behavior is to produce a core dump; on Windows, the process immediately returns
1259 an exit code of ``3``. Be aware that programs which use :func:`signal.signal`
1260 to register a handler for :const:`SIGABRT` will behave differently.
Georg Brandlc575c902008-09-13 17:46:05 +00001261 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001262
1263
1264.. function:: execl(path, arg0, arg1, ...)
1265 execle(path, arg0, arg1, ..., env)
1266 execlp(file, arg0, arg1, ...)
1267 execlpe(file, arg0, arg1, ..., env)
1268 execv(path, args)
1269 execve(path, args, env)
1270 execvp(file, args)
1271 execvpe(file, args, env)
1272
1273 These functions all execute a new program, replacing the current process; they
1274 do not return. On Unix, the new executable is loaded into the current process,
Christian Heimesfaf2f632008-01-06 16:59:19 +00001275 and will have the same process id as the caller. Errors will be reported as
Georg Brandl48310cd2009-01-03 21:18:54 +00001276 :exc:`OSError` exceptions.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001277
1278 The current process is replaced immediately. Open file objects and
1279 descriptors are not flushed, so if there may be data buffered
1280 on these open files, you should flush them using
1281 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
1282 :func:`exec\*` function.
Georg Brandl116aa622007-08-15 14:28:22 +00001283
Christian Heimesfaf2f632008-01-06 16:59:19 +00001284 The "l" and "v" variants of the :func:`exec\*` functions differ in how
1285 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00001286 to work with if the number of parameters is fixed when the code is written; the
1287 individual parameters simply become additional parameters to the :func:`execl\*`
Christian Heimesfaf2f632008-01-06 16:59:19 +00001288 functions. The "v" variants are good when the number of parameters is
Georg Brandl116aa622007-08-15 14:28:22 +00001289 variable, with the arguments being passed in a list or tuple as the *args*
1290 parameter. In either case, the arguments to the child process should start with
1291 the name of the command being run, but this is not enforced.
1292
Christian Heimesfaf2f632008-01-06 16:59:19 +00001293 The variants which include a "p" near the end (:func:`execlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00001294 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the
1295 :envvar:`PATH` environment variable to locate the program *file*. When the
1296 environment is being replaced (using one of the :func:`exec\*e` variants,
1297 discussed in the next paragraph), the new environment is used as the source of
1298 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`,
1299 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to
1300 locate the executable; *path* must contain an appropriate absolute or relative
1301 path.
1302
1303 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note
Christian Heimesfaf2f632008-01-06 16:59:19 +00001304 that these all end in "e"), the *env* parameter must be a mapping which is
Christian Heimesa342c012008-04-20 21:01:16 +00001305 used to define the environment variables for the new process (these are used
1306 instead of the current process' environment); the functions :func:`execl`,
Georg Brandl116aa622007-08-15 14:28:22 +00001307 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
Georg Brandl48310cd2009-01-03 21:18:54 +00001308 inherit the environment of the current process.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001309
1310 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001311
1312
1313.. function:: _exit(n)
1314
1315 Exit to the system with status *n*, without calling cleanup handlers, flushing
Georg Brandlc575c902008-09-13 17:46:05 +00001316 stdio buffers, etc. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001317
1318 .. note::
1319
1320 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should normally only
1321 be used in the child process after a :func:`fork`.
1322
Christian Heimesfaf2f632008-01-06 16:59:19 +00001323The following exit codes are defined and can be used with :func:`_exit`,
Georg Brandl116aa622007-08-15 14:28:22 +00001324although they are not required. These are typically used for system programs
1325written in Python, such as a mail server's external command delivery program.
1326
1327.. note::
1328
1329 Some of these may not be available on all Unix platforms, since there is some
1330 variation. These constants are defined where they are defined by the underlying
1331 platform.
1332
1333
1334.. data:: EX_OK
1335
Georg Brandlc575c902008-09-13 17:46:05 +00001336 Exit code that means no error occurred. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001337
Georg Brandl116aa622007-08-15 14:28:22 +00001338
1339.. data:: EX_USAGE
1340
1341 Exit code that means the command was used incorrectly, such as when the wrong
Georg Brandlc575c902008-09-13 17:46:05 +00001342 number of arguments are given. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001343
Georg Brandl116aa622007-08-15 14:28:22 +00001344
1345.. data:: EX_DATAERR
1346
Georg Brandlc575c902008-09-13 17:46:05 +00001347 Exit code that means the input data was incorrect. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001348
Georg Brandl116aa622007-08-15 14:28:22 +00001349
1350.. data:: EX_NOINPUT
1351
1352 Exit code that means an input file did not exist or was not readable.
Georg Brandlc575c902008-09-13 17:46:05 +00001353 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001354
Georg Brandl116aa622007-08-15 14:28:22 +00001355
1356.. data:: EX_NOUSER
1357
Georg Brandlc575c902008-09-13 17:46:05 +00001358 Exit code that means a specified user did not exist. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001359
Georg Brandl116aa622007-08-15 14:28:22 +00001360
1361.. data:: EX_NOHOST
1362
Georg Brandlc575c902008-09-13 17:46:05 +00001363 Exit code that means a specified host did not exist. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001364
Georg Brandl116aa622007-08-15 14:28:22 +00001365
1366.. data:: EX_UNAVAILABLE
1367
1368 Exit code that means that a required service is unavailable. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001369 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001370
Georg Brandl116aa622007-08-15 14:28:22 +00001371
1372.. data:: EX_SOFTWARE
1373
1374 Exit code that means an internal software error was detected. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001375 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001376
Georg Brandl116aa622007-08-15 14:28:22 +00001377
1378.. data:: EX_OSERR
1379
1380 Exit code that means an operating system error was detected, such as the
Georg Brandlc575c902008-09-13 17:46:05 +00001381 inability to fork or create a pipe. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001382
Georg Brandl116aa622007-08-15 14:28:22 +00001383
1384.. data:: EX_OSFILE
1385
1386 Exit code that means some system file did not exist, could not be opened, or had
Georg Brandlc575c902008-09-13 17:46:05 +00001387 some other kind of error. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001388
Georg Brandl116aa622007-08-15 14:28:22 +00001389
1390.. data:: EX_CANTCREAT
1391
1392 Exit code that means a user specified output file could not be created.
Georg Brandlc575c902008-09-13 17:46:05 +00001393 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
Georg Brandl116aa622007-08-15 14:28:22 +00001395
1396.. data:: EX_IOERR
1397
1398 Exit code that means that an error occurred while doing I/O on some file.
Georg Brandlc575c902008-09-13 17:46:05 +00001399 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001400
Georg Brandl116aa622007-08-15 14:28:22 +00001401
1402.. data:: EX_TEMPFAIL
1403
1404 Exit code that means a temporary failure occurred. This indicates something
1405 that may not really be an error, such as a network connection that couldn't be
Georg Brandlc575c902008-09-13 17:46:05 +00001406 made during a retryable operation. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001407
Georg Brandl116aa622007-08-15 14:28:22 +00001408
1409.. data:: EX_PROTOCOL
1410
1411 Exit code that means that a protocol exchange was illegal, invalid, or not
Georg Brandlc575c902008-09-13 17:46:05 +00001412 understood. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001413
Georg Brandl116aa622007-08-15 14:28:22 +00001414
1415.. data:: EX_NOPERM
1416
1417 Exit code that means that there were insufficient permissions to perform the
Georg Brandlc575c902008-09-13 17:46:05 +00001418 operation (but not intended for file system problems). Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001419
Georg Brandl116aa622007-08-15 14:28:22 +00001420
1421.. data:: EX_CONFIG
1422
1423 Exit code that means that some kind of configuration error occurred.
Georg Brandlc575c902008-09-13 17:46:05 +00001424 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001425
Georg Brandl116aa622007-08-15 14:28:22 +00001426
1427.. data:: EX_NOTFOUND
1428
1429 Exit code that means something like "an entry was not found". Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001430 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001431
Georg Brandl116aa622007-08-15 14:28:22 +00001432
1433.. function:: fork()
1434
Christian Heimesfaf2f632008-01-06 16:59:19 +00001435 Fork a child process. Return ``0`` in the child and the child's process id in the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001436 parent. If an error occurs :exc:`OSError` is raised.
Benjamin Petersonbcd8ac32008-10-10 22:20:52 +00001437
1438 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have
1439 known issues when using fork() from a thread.
1440
Georg Brandlc575c902008-09-13 17:46:05 +00001441 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001442
1443
1444.. function:: forkpty()
1445
1446 Fork a child process, using a new pseudo-terminal as the child's controlling
1447 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the
1448 new child's process id in the parent, and *fd* is the file descriptor of the
1449 master end of the pseudo-terminal. For a more portable approach, use the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001450 :mod:`pty` module. If an error occurs :exc:`OSError` is raised.
Georg Brandlc575c902008-09-13 17:46:05 +00001451 Availability: some flavors of Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001452
1453
1454.. function:: kill(pid, sig)
1455
1456 .. index::
1457 single: process; killing
1458 single: process; signalling
1459
1460 Send signal *sig* to the process *pid*. Constants for the specific signals
1461 available on the host platform are defined in the :mod:`signal` module.
Georg Brandlc575c902008-09-13 17:46:05 +00001462 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001463
1464
1465.. function:: killpg(pgid, sig)
1466
1467 .. index::
1468 single: process; killing
1469 single: process; signalling
1470
Georg Brandlc575c902008-09-13 17:46:05 +00001471 Send the signal *sig* to the process group *pgid*. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001472
Georg Brandl116aa622007-08-15 14:28:22 +00001473
1474.. function:: nice(increment)
1475
1476 Add *increment* to the process's "niceness". Return the new niceness.
Georg Brandlc575c902008-09-13 17:46:05 +00001477 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001478
1479
1480.. function:: plock(op)
1481
1482 Lock program segments into memory. The value of *op* (defined in
Georg Brandlc575c902008-09-13 17:46:05 +00001483 ``<sys/lock.h>``) determines which segments are locked. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001484
1485
1486.. function:: popen(...)
1487 :noindex:
1488
1489 Run child processes, returning opened pipes for communications. These functions
1490 are described in section :ref:`os-newstreams`.
1491
1492
1493.. function:: spawnl(mode, path, ...)
1494 spawnle(mode, path, ..., env)
1495 spawnlp(mode, file, ...)
1496 spawnlpe(mode, file, ..., env)
1497 spawnv(mode, path, args)
1498 spawnve(mode, path, args, env)
1499 spawnvp(mode, file, args)
1500 spawnvpe(mode, file, args, env)
1501
1502 Execute the program *path* in a new process.
1503
1504 (Note that the :mod:`subprocess` module provides more powerful facilities for
1505 spawning new processes and retrieving their results; using that module is
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001506 preferable to using these functions. Check especially the
1507 :ref:`subprocess-replacements` section.)
Georg Brandl116aa622007-08-15 14:28:22 +00001508
Christian Heimesfaf2f632008-01-06 16:59:19 +00001509 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
Georg Brandl116aa622007-08-15 14:28:22 +00001510 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
1511 exits normally, or ``-signal``, where *signal* is the signal that killed the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001512 process. On Windows, the process id will actually be the process handle, so can
Georg Brandl116aa622007-08-15 14:28:22 +00001513 be used with the :func:`waitpid` function.
1514
Christian Heimesfaf2f632008-01-06 16:59:19 +00001515 The "l" and "v" variants of the :func:`spawn\*` functions differ in how
1516 command-line arguments are passed. The "l" variants are perhaps the easiest
Georg Brandl116aa622007-08-15 14:28:22 +00001517 to work with if the number of parameters is fixed when the code is written; the
1518 individual parameters simply become additional parameters to the
Christian Heimesfaf2f632008-01-06 16:59:19 +00001519 :func:`spawnl\*` functions. The "v" variants are good when the number of
Georg Brandl116aa622007-08-15 14:28:22 +00001520 parameters is variable, with the arguments being passed in a list or tuple as
1521 the *args* parameter. In either case, the arguments to the child process must
1522 start with the name of the command being run.
1523
Christian Heimesfaf2f632008-01-06 16:59:19 +00001524 The variants which include a second "p" near the end (:func:`spawnlp`,
Georg Brandl116aa622007-08-15 14:28:22 +00001525 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the
1526 :envvar:`PATH` environment variable to locate the program *file*. When the
1527 environment is being replaced (using one of the :func:`spawn\*e` variants,
1528 discussed in the next paragraph), the new environment is used as the source of
1529 the :envvar:`PATH` variable. The other variants, :func:`spawnl`,
1530 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the
1531 :envvar:`PATH` variable to locate the executable; *path* must contain an
1532 appropriate absolute or relative path.
1533
1534 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe`
Christian Heimesfaf2f632008-01-06 16:59:19 +00001535 (note that these all end in "e"), the *env* parameter must be a mapping
Christian Heimesa342c012008-04-20 21:01:16 +00001536 which is used to define the environment variables for the new process (they are
1537 used instead of the current process' environment); the functions
Georg Brandl116aa622007-08-15 14:28:22 +00001538 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause
Benjamin Petersond23f8222009-04-05 19:13:16 +00001539 the new process to inherit the environment of the current process. Note that
1540 keys and values in the *env* dictionary must be strings; invalid keys or
1541 values will cause the function to fail, with a return value of ``127``.
Georg Brandl116aa622007-08-15 14:28:22 +00001542
1543 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are
1544 equivalent::
1545
1546 import os
1547 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
1548
1549 L = ['cp', 'index.html', '/dev/null']
1550 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
1551
1552 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp`
1553 and :func:`spawnvpe` are not available on Windows.
1554
Georg Brandl116aa622007-08-15 14:28:22 +00001555
1556.. data:: P_NOWAIT
1557 P_NOWAITO
1558
1559 Possible values for the *mode* parameter to the :func:`spawn\*` family of
1560 functions. If either of these values is given, the :func:`spawn\*` functions
Christian Heimesfaf2f632008-01-06 16:59:19 +00001561 will return as soon as the new process has been created, with the process id as
Georg Brandlc575c902008-09-13 17:46:05 +00001562 the return value. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001563
Georg Brandl116aa622007-08-15 14:28:22 +00001564
1565.. data:: P_WAIT
1566
1567 Possible value for the *mode* parameter to the :func:`spawn\*` family of
1568 functions. If this is given as *mode*, the :func:`spawn\*` functions will not
1569 return until the new process has run to completion and will return the exit code
1570 of the process the run is successful, or ``-signal`` if a signal kills the
Georg Brandlc575c902008-09-13 17:46:05 +00001571 process. Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001572
Georg Brandl116aa622007-08-15 14:28:22 +00001573
1574.. data:: P_DETACH
1575 P_OVERLAY
1576
1577 Possible values for the *mode* parameter to the :func:`spawn\*` family of
1578 functions. These are less portable than those listed above. :const:`P_DETACH`
1579 is similar to :const:`P_NOWAIT`, but the new process is detached from the
1580 console of the calling process. If :const:`P_OVERLAY` is used, the current
1581 process will be replaced; the :func:`spawn\*` function will not return.
1582 Availability: Windows.
1583
Georg Brandl116aa622007-08-15 14:28:22 +00001584
1585.. function:: startfile(path[, operation])
1586
1587 Start a file with its associated application.
1588
1589 When *operation* is not specified or ``'open'``, this acts like double-clicking
1590 the file in Windows Explorer, or giving the file name as an argument to the
1591 :program:`start` command from the interactive command shell: the file is opened
1592 with whatever application (if any) its extension is associated.
1593
1594 When another *operation* is given, it must be a "command verb" that specifies
1595 what should be done with the file. Common verbs documented by Microsoft are
1596 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and
1597 ``'find'`` (to be used on directories).
1598
1599 :func:`startfile` returns as soon as the associated application is launched.
1600 There is no option to wait for the application to close, and no way to retrieve
1601 the application's exit status. The *path* parameter is relative to the current
1602 directory. If you want to use an absolute path, make sure the first character
1603 is not a slash (``'/'``); the underlying Win32 :cfunc:`ShellExecute` function
1604 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that
1605 the path is properly encoded for Win32. Availability: Windows.
1606
Georg Brandl116aa622007-08-15 14:28:22 +00001607
1608.. function:: system(command)
1609
1610 Execute the command (a string) in a subshell. This is implemented by calling
Georg Brandl495f7b52009-10-27 15:28:25 +00001611 the Standard C function :cfunc:`system`, and has the same limitations.
1612 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of the
1613 executed command.
Georg Brandl116aa622007-08-15 14:28:22 +00001614
1615 On Unix, the return value is the exit status of the process encoded in the
1616 format specified for :func:`wait`. Note that POSIX does not specify the meaning
1617 of the return value of the C :cfunc:`system` function, so the return value of
1618 the Python function is system-dependent.
1619
1620 On Windows, the return value is that returned by the system shell after running
1621 *command*, given by the Windows environment variable :envvar:`COMSPEC`: on
1622 :program:`command.com` systems (Windows 95, 98 and ME) this is always ``0``; on
1623 :program:`cmd.exe` systems (Windows NT, 2000 and XP) this is the exit status of
1624 the command run; on systems using a non-native shell, consult your shell
1625 documentation.
1626
Georg Brandlc575c902008-09-13 17:46:05 +00001627 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001628
1629 The :mod:`subprocess` module provides more powerful facilities for spawning new
1630 processes and retrieving their results; using that module is preferable to using
Benjamin Petersondcf97b92008-07-02 17:30:14 +00001631 this function. Use the :mod:`subprocess` module. Check especially the
1632 :ref:`subprocess-replacements` section.
Georg Brandl116aa622007-08-15 14:28:22 +00001633
1634
1635.. function:: times()
1636
1637 Return a 5-tuple of floating point numbers indicating accumulated (processor or
1638 other) times, in seconds. The items are: user time, system time, children's
1639 user time, children's system time, and elapsed real time since a fixed point in
1640 the past, in that order. See the Unix manual page :manpage:`times(2)` or the
Georg Brandlc575c902008-09-13 17:46:05 +00001641 corresponding Windows Platform API documentation. Availability: Unix,
Christian Heimes68f5fbe2008-02-14 08:27:37 +00001642 Windows. On Windows, only the first two items are filled, the others are zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001643
1644
1645.. function:: wait()
1646
1647 Wait for completion of a child process, and return a tuple containing its pid
1648 and exit status indication: a 16-bit number, whose low byte is the signal number
1649 that killed the process, and whose high byte is the exit status (if the signal
1650 number is zero); the high bit of the low byte is set if a core file was
Georg Brandlc575c902008-09-13 17:46:05 +00001651 produced. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001652
1653
1654.. function:: waitpid(pid, options)
1655
1656 The details of this function differ on Unix and Windows.
1657
1658 On Unix: Wait for completion of a child process given by process id *pid*, and
1659 return a tuple containing its process id and exit status indication (encoded as
1660 for :func:`wait`). The semantics of the call are affected by the value of the
1661 integer *options*, which should be ``0`` for normal operation.
1662
1663 If *pid* is greater than ``0``, :func:`waitpid` requests status information for
1664 that specific process. If *pid* is ``0``, the request is for the status of any
1665 child in the process group of the current process. If *pid* is ``-1``, the
1666 request pertains to any child of the current process. If *pid* is less than
1667 ``-1``, status is requested for any process in the process group ``-pid`` (the
1668 absolute value of *pid*).
1669
Benjamin Peterson4cd6a952008-08-17 20:23:46 +00001670 An :exc:`OSError` is raised with the value of errno when the syscall
1671 returns -1.
1672
Georg Brandl116aa622007-08-15 14:28:22 +00001673 On Windows: Wait for completion of a process given by process handle *pid*, and
1674 return a tuple containing *pid*, and its exit status shifted left by 8 bits
1675 (shifting makes cross-platform use of the function easier). A *pid* less than or
1676 equal to ``0`` has no special meaning on Windows, and raises an exception. The
1677 value of integer *options* has no effect. *pid* can refer to any process whose
1678 id is known, not necessarily a child process. The :func:`spawn` functions called
1679 with :const:`P_NOWAIT` return suitable process handles.
1680
1681
1682.. function:: wait3([options])
1683
1684 Similar to :func:`waitpid`, except no process id argument is given and a
1685 3-element tuple containing the child's process id, exit status indication, and
1686 resource usage information is returned. Refer to :mod:`resource`.\
1687 :func:`getrusage` for details on resource usage information. The option
1688 argument is the same as that provided to :func:`waitpid` and :func:`wait4`.
1689 Availability: Unix.
1690
Georg Brandl116aa622007-08-15 14:28:22 +00001691
1692.. function:: wait4(pid, options)
1693
1694 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's
1695 process id, exit status indication, and resource usage information is returned.
1696 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage
1697 information. The arguments to :func:`wait4` are the same as those provided to
1698 :func:`waitpid`. Availability: Unix.
1699
Georg Brandl116aa622007-08-15 14:28:22 +00001700
1701.. data:: WNOHANG
1702
1703 The option for :func:`waitpid` to return immediately if no child process status
1704 is available immediately. The function returns ``(0, 0)`` in this case.
Georg Brandlc575c902008-09-13 17:46:05 +00001705 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001706
1707
1708.. data:: WCONTINUED
1709
1710 This option causes child processes to be reported if they have been continued
1711 from a job control stop since their status was last reported. Availability: Some
1712 Unix systems.
1713
Georg Brandl116aa622007-08-15 14:28:22 +00001714
1715.. data:: WUNTRACED
1716
1717 This option causes child processes to be reported if they have been stopped but
1718 their current state has not been reported since they were stopped. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001719 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001720
Georg Brandl116aa622007-08-15 14:28:22 +00001721
1722The following functions take a process status code as returned by
1723:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be
1724used to determine the disposition of a process.
1725
Georg Brandl116aa622007-08-15 14:28:22 +00001726.. function:: WCOREDUMP(status)
1727
Christian Heimesfaf2f632008-01-06 16:59:19 +00001728 Return ``True`` if a core dump was generated for the process, otherwise
Georg Brandlc575c902008-09-13 17:46:05 +00001729 return ``False``. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001730
Georg Brandl116aa622007-08-15 14:28:22 +00001731
1732.. function:: WIFCONTINUED(status)
1733
Christian Heimesfaf2f632008-01-06 16:59:19 +00001734 Return ``True`` if the process has been continued from a job control stop,
1735 otherwise return ``False``. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001736
Georg Brandl116aa622007-08-15 14:28:22 +00001737
1738.. function:: WIFSTOPPED(status)
1739
Christian Heimesfaf2f632008-01-06 16:59:19 +00001740 Return ``True`` if the process has been stopped, otherwise return
Georg Brandl116aa622007-08-15 14:28:22 +00001741 ``False``. Availability: Unix.
1742
1743
1744.. function:: WIFSIGNALED(status)
1745
Christian Heimesfaf2f632008-01-06 16:59:19 +00001746 Return ``True`` if the process exited due to a signal, otherwise return
Georg Brandlc575c902008-09-13 17:46:05 +00001747 ``False``. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001748
1749
1750.. function:: WIFEXITED(status)
1751
Christian Heimesfaf2f632008-01-06 16:59:19 +00001752 Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
Georg Brandlc575c902008-09-13 17:46:05 +00001753 otherwise return ``False``. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001754
1755
1756.. function:: WEXITSTATUS(status)
1757
1758 If ``WIFEXITED(status)`` is true, return the integer parameter to the
1759 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless.
Georg Brandlc575c902008-09-13 17:46:05 +00001760 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001761
1762
1763.. function:: WSTOPSIG(status)
1764
Georg Brandlc575c902008-09-13 17:46:05 +00001765 Return the signal which caused the process to stop. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001766
1767
1768.. function:: WTERMSIG(status)
1769
Georg Brandlc575c902008-09-13 17:46:05 +00001770 Return the signal which caused the process to exit. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001771
1772
1773.. _os-path:
1774
1775Miscellaneous System Information
1776--------------------------------
1777
1778
1779.. function:: confstr(name)
1780
1781 Return string-valued system configuration values. *name* specifies the
1782 configuration value to retrieve; it may be a string which is the name of a
1783 defined system value; these names are specified in a number of standards (POSIX,
1784 Unix 95, Unix 98, and others). Some platforms define additional names as well.
1785 The names known to the host operating system are given as the keys of the
1786 ``confstr_names`` dictionary. For configuration variables not included in that
1787 mapping, passing an integer for *name* is also accepted. Availability:
Georg Brandlc575c902008-09-13 17:46:05 +00001788 Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001789
1790 If the configuration value specified by *name* isn't defined, ``None`` is
1791 returned.
1792
1793 If *name* is a string and is not known, :exc:`ValueError` is raised. If a
1794 specific value for *name* is not supported by the host system, even if it is
1795 included in ``confstr_names``, an :exc:`OSError` is raised with
1796 :const:`errno.EINVAL` for the error number.
1797
1798
1799.. data:: confstr_names
1800
1801 Dictionary mapping names accepted by :func:`confstr` to the integer values
1802 defined for those names by the host operating system. This can be used to
Georg Brandlc575c902008-09-13 17:46:05 +00001803 determine the set of names known to the system. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001804
1805
1806.. function:: getloadavg()
1807
Christian Heimesa62da1d2008-01-12 19:39:10 +00001808 Return the number of processes in the system run queue averaged over the last
1809 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was
Georg Brandlf08a9dd2008-06-10 16:57:31 +00001810 unobtainable. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001811
Georg Brandl116aa622007-08-15 14:28:22 +00001812
1813.. function:: sysconf(name)
1814
1815 Return integer-valued system configuration values. If the configuration value
1816 specified by *name* isn't defined, ``-1`` is returned. The comments regarding
1817 the *name* parameter for :func:`confstr` apply here as well; the dictionary that
1818 provides information on the known names is given by ``sysconf_names``.
Georg Brandlc575c902008-09-13 17:46:05 +00001819 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001820
1821
1822.. data:: sysconf_names
1823
1824 Dictionary mapping names accepted by :func:`sysconf` to the integer values
1825 defined for those names by the host operating system. This can be used to
Georg Brandlc575c902008-09-13 17:46:05 +00001826 determine the set of names known to the system. Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +00001827
Christian Heimesfaf2f632008-01-06 16:59:19 +00001828The following data values are used to support path manipulation operations. These
Georg Brandl116aa622007-08-15 14:28:22 +00001829are defined for all platforms.
1830
1831Higher-level operations on pathnames are defined in the :mod:`os.path` module.
1832
1833
1834.. data:: curdir
1835
1836 The constant string used by the operating system to refer to the current
Georg Brandlc575c902008-09-13 17:46:05 +00001837 directory. This is ``'.'`` for Windows and POSIX. Also available via
1838 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00001839
1840
1841.. data:: pardir
1842
1843 The constant string used by the operating system to refer to the parent
Georg Brandlc575c902008-09-13 17:46:05 +00001844 directory. This is ``'..'`` for Windows and POSIX. Also available via
1845 :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00001846
1847
1848.. data:: sep
1849
Georg Brandlc575c902008-09-13 17:46:05 +00001850 The character used by the operating system to separate pathname components.
1851 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this
1852 is not sufficient to be able to parse or concatenate pathnames --- use
Georg Brandl116aa622007-08-15 14:28:22 +00001853 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
1854 useful. Also available via :mod:`os.path`.
1855
1856
1857.. data:: altsep
1858
1859 An alternative character used by the operating system to separate pathname
1860 components, or ``None`` if only one separator character exists. This is set to
1861 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via
1862 :mod:`os.path`.
1863
1864
1865.. data:: extsep
1866
1867 The character which separates the base filename from the extension; for example,
1868 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`.
1869
Georg Brandl116aa622007-08-15 14:28:22 +00001870
1871.. data:: pathsep
1872
1873 The character conventionally used by the operating system to separate search
1874 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for
1875 Windows. Also available via :mod:`os.path`.
1876
1877
1878.. data:: defpath
1879
1880 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the
1881 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`.
1882
1883
1884.. data:: linesep
1885
1886 The string used to separate (or, rather, terminate) lines on the current
Georg Brandlc575c902008-09-13 17:46:05 +00001887 platform. This may be a single character, such as ``'\n'`` for POSIX, or
1888 multiple characters, for example, ``'\r\n'`` for Windows. Do not use
1889 *os.linesep* as a line terminator when writing files opened in text mode (the
1890 default); use a single ``'\n'`` instead, on all platforms.
Georg Brandl116aa622007-08-15 14:28:22 +00001891
1892
1893.. data:: devnull
1894
Georg Brandlc575c902008-09-13 17:46:05 +00001895 The file path of the null device. For example: ``'/dev/null'`` for POSIX.
1896 Also available via :mod:`os.path`.
Georg Brandl116aa622007-08-15 14:28:22 +00001897
Georg Brandl116aa622007-08-15 14:28:22 +00001898
1899.. _os-miscfunc:
1900
1901Miscellaneous Functions
1902-----------------------
1903
1904
1905.. function:: urandom(n)
1906
1907 Return a string of *n* random bytes suitable for cryptographic use.
1908
1909 This function returns random bytes from an OS-specific randomness source. The
1910 returned data should be unpredictable enough for cryptographic applications,
1911 though its exact quality depends on the OS implementation. On a UNIX-like
1912 system this will query /dev/urandom, and on Windows it will use CryptGenRandom.
1913 If a randomness source is not found, :exc:`NotImplementedError` will be raised.