|
1 :mod:`os` --- Miscellaneous operating system interfaces |
|
2 ======================================================= |
|
3 |
|
4 .. module:: os |
|
5 :synopsis: Miscellaneous operating system interfaces. |
|
6 |
|
7 |
|
8 This module provides a portable way of using operating system dependent |
|
9 functionality. If you just want to read or write a file see :func:`open`, if |
|
10 you want to manipulate paths, see the :mod:`os.path` module, and if you want to |
|
11 read all the lines in all the files on the command line see the :mod:`fileinput` |
|
12 module. For creating temporary files and directories see the :mod:`tempfile` |
|
13 module, and for high-level file and directory handling see the :mod:`shutil` |
|
14 module. |
|
15 |
|
16 The design of all built-in operating system dependent modules of Python is such |
|
17 that as long as the same functionality is available, it uses the same interface; |
|
18 for example, the function ``os.stat(path)`` returns stat information about |
|
19 *path* in the same format (which happens to have originated with the POSIX |
|
20 interface). |
|
21 |
|
22 Extensions peculiar to a particular operating system are also available through |
|
23 the :mod:`os` module, but using them is of course a threat to portability! |
|
24 |
|
25 .. note:: |
|
26 |
|
27 If not separately noted, all functions that claim "Availability: Unix" are |
|
28 supported on Mac OS X, which builds on a Unix core. |
|
29 |
|
30 .. note:: |
|
31 |
|
32 All functions in this module raise :exc:`OSError` in the case of invalid or |
|
33 inaccessible file names and paths, or other arguments that have the correct |
|
34 type, but are not accepted by the operating system. |
|
35 |
|
36 |
|
37 .. exception:: error |
|
38 |
|
39 An alias for the built-in :exc:`OSError` exception. |
|
40 |
|
41 |
|
42 .. data:: name |
|
43 |
|
44 The name of the operating system dependent module imported. The following names |
|
45 have currently been registered: ``'posix'``, ``'nt'``, ``'mac'``, ``'os2'``, |
|
46 ``'ce'``, ``'java'``, ``'riscos'``. |
|
47 |
|
48 |
|
49 .. data:: path |
|
50 |
|
51 The corresponding operating system dependent standard module for pathname |
|
52 operations, such as :mod:`posixpath` or :mod:`ntpath`. Thus, given the proper |
|
53 imports, ``os.path.split(file)`` is equivalent to but more portable than |
|
54 ``posixpath.split(file)``. Note that this is also an importable module: it may |
|
55 be imported directly as :mod:`os.path`. |
|
56 |
|
57 |
|
58 .. _os-procinfo: |
|
59 |
|
60 Process Parameters |
|
61 ------------------ |
|
62 |
|
63 These functions and data items provide information and operate on the current |
|
64 process and user. |
|
65 |
|
66 |
|
67 .. data:: environ |
|
68 |
|
69 A mapping object representing the string environment. For example, |
|
70 ``environ['HOME']`` is the pathname of your home directory (on some platforms), |
|
71 and is equivalent to ``getenv("HOME")`` in C. |
|
72 |
|
73 This mapping is captured the first time the :mod:`os` module is imported, |
|
74 typically during Python startup as part of processing :file:`site.py`. Changes |
|
75 to the environment made after this time are not reflected in ``os.environ``, |
|
76 except for changes made by modifying ``os.environ`` directly. |
|
77 |
|
78 If the platform supports the :func:`putenv` function, this mapping may be used |
|
79 to modify the environment as well as query the environment. :func:`putenv` will |
|
80 be called automatically when the mapping is modified. |
|
81 |
|
82 .. note:: |
|
83 |
|
84 Calling :func:`putenv` directly does not change ``os.environ``, so it's better |
|
85 to modify ``os.environ``. |
|
86 |
|
87 .. note:: |
|
88 |
|
89 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may |
|
90 cause memory leaks. Refer to the system documentation for |
|
91 :cfunc:`putenv`. |
|
92 |
|
93 If :func:`putenv` is not provided, a modified copy of this mapping may be |
|
94 passed to the appropriate process-creation functions to cause child processes |
|
95 to use a modified environment. |
|
96 |
|
97 If the platform supports the :func:`unsetenv` function, you can delete items in |
|
98 this mapping to unset environment variables. :func:`unsetenv` will be called |
|
99 automatically when an item is deleted from ``os.environ``, and when |
|
100 one of the :meth:`pop` or :meth:`clear` methods is called. |
|
101 |
|
102 .. versionchanged:: 2.6 |
|
103 Also unset environment variables when calling :meth:`os.environ.clear` |
|
104 and :meth:`os.environ.pop`. |
|
105 |
|
106 |
|
107 .. function:: chdir(path) |
|
108 fchdir(fd) |
|
109 getcwd() |
|
110 :noindex: |
|
111 |
|
112 These functions are described in :ref:`os-file-dir`. |
|
113 |
|
114 |
|
115 .. function:: ctermid() |
|
116 |
|
117 Return the filename corresponding to the controlling terminal of the process. |
|
118 Availability: Unix. |
|
119 |
|
120 |
|
121 .. function:: getegid() |
|
122 |
|
123 Return the effective group id of the current process. This corresponds to the |
|
124 "set id" bit on the file being executed in the current process. Availability: |
|
125 Unix. |
|
126 |
|
127 |
|
128 .. function:: geteuid() |
|
129 |
|
130 .. index:: single: user; effective id |
|
131 |
|
132 Return the current process's effective user id. Availability: Unix. |
|
133 |
|
134 |
|
135 .. function:: getgid() |
|
136 |
|
137 .. index:: single: process; group |
|
138 |
|
139 Return the real group id of the current process. Availability: Unix. |
|
140 |
|
141 |
|
142 .. function:: getgroups() |
|
143 |
|
144 Return list of supplemental group ids associated with the current process. |
|
145 Availability: Unix. |
|
146 |
|
147 |
|
148 .. function:: getlogin() |
|
149 |
|
150 Return the name of the user logged in on the controlling terminal of the |
|
151 process. For most purposes, it is more useful to use the environment variable |
|
152 :envvar:`LOGNAME` to find out who the user is, or |
|
153 ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the currently |
|
154 effective user id. Availability: Unix. |
|
155 |
|
156 |
|
157 .. function:: getpgid(pid) |
|
158 |
|
159 Return the process group id of the process with process id *pid*. If *pid* is 0, |
|
160 the process group id of the current process is returned. Availability: Unix. |
|
161 |
|
162 .. versionadded:: 2.3 |
|
163 |
|
164 |
|
165 .. function:: getpgrp() |
|
166 |
|
167 .. index:: single: process; group |
|
168 |
|
169 Return the id of the current process group. Availability: Unix. |
|
170 |
|
171 |
|
172 .. function:: getpid() |
|
173 |
|
174 .. index:: single: process; id |
|
175 |
|
176 Return the current process id. Availability: Unix, Windows. |
|
177 |
|
178 |
|
179 .. function:: getppid() |
|
180 |
|
181 .. index:: single: process; id of parent |
|
182 |
|
183 Return the parent's process id. Availability: Unix. |
|
184 |
|
185 |
|
186 .. function:: getuid() |
|
187 |
|
188 .. index:: single: user; id |
|
189 |
|
190 Return the current process's user id. Availability: Unix. |
|
191 |
|
192 |
|
193 .. function:: getenv(varname[, value]) |
|
194 |
|
195 Return the value of the environment variable *varname* if it exists, or *value* |
|
196 if it doesn't. *value* defaults to ``None``. Availability: most flavors of |
|
197 Unix, Windows. |
|
198 |
|
199 |
|
200 .. function:: putenv(varname, value) |
|
201 |
|
202 .. index:: single: environment variables; setting |
|
203 |
|
204 Set the environment variable named *varname* to the string *value*. Such |
|
205 changes to the environment affect subprocesses started with :func:`os.system`, |
|
206 :func:`popen` or :func:`fork` and :func:`execv`. Availability: most flavors of |
|
207 Unix, Windows. |
|
208 |
|
209 .. note:: |
|
210 |
|
211 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may |
|
212 cause memory leaks. Refer to the system documentation for putenv. |
|
213 |
|
214 When :func:`putenv` is supported, assignments to items in ``os.environ`` are |
|
215 automatically translated into corresponding calls to :func:`putenv`; however, |
|
216 calls to :func:`putenv` don't update ``os.environ``, so it is actually |
|
217 preferable to assign to items of ``os.environ``. |
|
218 |
|
219 |
|
220 .. function:: setegid(egid) |
|
221 |
|
222 Set the current process's effective group id. Availability: Unix. |
|
223 |
|
224 |
|
225 .. function:: seteuid(euid) |
|
226 |
|
227 Set the current process's effective user id. Availability: Unix. |
|
228 |
|
229 |
|
230 .. function:: setgid(gid) |
|
231 |
|
232 Set the current process' group id. Availability: Unix. |
|
233 |
|
234 |
|
235 .. function:: setgroups(groups) |
|
236 |
|
237 Set the list of supplemental group ids associated with the current process to |
|
238 *groups*. *groups* must be a sequence, and each element must be an integer |
|
239 identifying a group. This operation is typically available only to the superuser. |
|
240 Availability: Unix. |
|
241 |
|
242 .. versionadded:: 2.2 |
|
243 |
|
244 |
|
245 .. function:: setpgrp() |
|
246 |
|
247 Call the system call :cfunc:`setpgrp` or :cfunc:`setpgrp(0, 0)` depending on |
|
248 which version is implemented (if any). See the Unix manual for the semantics. |
|
249 Availability: Unix. |
|
250 |
|
251 |
|
252 .. function:: setpgid(pid, pgrp) |
|
253 |
|
254 Call the system call :cfunc:`setpgid` to set the process group id of the |
|
255 process with id *pid* to the process group with id *pgrp*. See the Unix manual |
|
256 for the semantics. Availability: Unix. |
|
257 |
|
258 |
|
259 .. function:: setreuid(ruid, euid) |
|
260 |
|
261 Set the current process's real and effective user ids. Availability: Unix. |
|
262 |
|
263 |
|
264 .. function:: setregid(rgid, egid) |
|
265 |
|
266 Set the current process's real and effective group ids. Availability: Unix. |
|
267 |
|
268 |
|
269 .. function:: getsid(pid) |
|
270 |
|
271 Call the system call :cfunc:`getsid`. See the Unix manual for the semantics. |
|
272 Availability: Unix. |
|
273 |
|
274 .. versionadded:: 2.4 |
|
275 |
|
276 |
|
277 .. function:: setsid() |
|
278 |
|
279 Call the system call :cfunc:`setsid`. See the Unix manual for the semantics. |
|
280 Availability: Unix. |
|
281 |
|
282 |
|
283 .. function:: setuid(uid) |
|
284 |
|
285 .. index:: single: user; id, setting |
|
286 |
|
287 Set the current process's user id. Availability: Unix. |
|
288 |
|
289 |
|
290 .. placed in this section since it relates to errno.... a little weak |
|
291 .. function:: strerror(code) |
|
292 |
|
293 Return the error message corresponding to the error code in *code*. |
|
294 On platforms where :cfunc:`strerror` returns ``NULL`` when given an unknown |
|
295 error number, :exc:`ValueError` is raised. Availability: Unix, Windows. |
|
296 |
|
297 |
|
298 .. function:: umask(mask) |
|
299 |
|
300 Set the current numeric umask and return the previous umask. Availability: |
|
301 Unix, Windows. |
|
302 |
|
303 |
|
304 .. function:: uname() |
|
305 |
|
306 .. index:: |
|
307 single: gethostname() (in module socket) |
|
308 single: gethostbyaddr() (in module socket) |
|
309 |
|
310 Return a 5-tuple containing information identifying the current operating |
|
311 system. The tuple contains 5 strings: ``(sysname, nodename, release, version, |
|
312 machine)``. Some systems truncate the nodename to 8 characters or to the |
|
313 leading component; a better way to get the hostname is |
|
314 :func:`socket.gethostname` or even |
|
315 ``socket.gethostbyaddr(socket.gethostname())``. Availability: recent flavors of |
|
316 Unix. |
|
317 |
|
318 |
|
319 .. function:: unsetenv(varname) |
|
320 |
|
321 .. index:: single: environment variables; deleting |
|
322 |
|
323 Unset (delete) the environment variable named *varname*. Such changes to the |
|
324 environment affect subprocesses started with :func:`os.system`, :func:`popen` or |
|
325 :func:`fork` and :func:`execv`. Availability: most flavors of Unix, Windows. |
|
326 |
|
327 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is |
|
328 automatically translated into a corresponding call to :func:`unsetenv`; however, |
|
329 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually |
|
330 preferable to delete items of ``os.environ``. |
|
331 |
|
332 |
|
333 .. _os-newstreams: |
|
334 |
|
335 File Object Creation |
|
336 -------------------- |
|
337 |
|
338 These functions create new file objects. (See also :func:`open`.) |
|
339 |
|
340 |
|
341 .. function:: fdopen(fd[, mode[, bufsize]]) |
|
342 |
|
343 .. index:: single: I/O control; buffering |
|
344 |
|
345 Return an open file object connected to the file descriptor *fd*. The *mode* |
|
346 and *bufsize* arguments have the same meaning as the corresponding arguments to |
|
347 the built-in :func:`open` function. Availability: Unix, Windows. |
|
348 |
|
349 .. versionchanged:: 2.3 |
|
350 When specified, the *mode* argument must now start with one of the letters |
|
351 ``'r'``, ``'w'``, or ``'a'``, otherwise a :exc:`ValueError` is raised. |
|
352 |
|
353 .. versionchanged:: 2.5 |
|
354 On Unix, when the *mode* argument starts with ``'a'``, the *O_APPEND* flag is |
|
355 set on the file descriptor (which the :cfunc:`fdopen` implementation already |
|
356 does on most platforms). |
|
357 |
|
358 |
|
359 .. function:: popen(command[, mode[, bufsize]]) |
|
360 |
|
361 Open a pipe to or from *command*. The return value is an open file object |
|
362 connected to the pipe, which can be read or written depending on whether *mode* |
|
363 is ``'r'`` (default) or ``'w'``. The *bufsize* argument has the same meaning as |
|
364 the corresponding argument to the built-in :func:`open` function. The exit |
|
365 status of the command (encoded in the format specified for :func:`wait`) is |
|
366 available as the return value of the :meth:`close` method of the file object, |
|
367 except that when the exit status is zero (termination without errors), ``None`` |
|
368 is returned. Availability: Unix, Windows. |
|
369 |
|
370 .. deprecated:: 2.6 |
|
371 This function is obsolete. Use the :mod:`subprocess` module. Check |
|
372 especially the :ref:`subprocess-replacements` section. |
|
373 |
|
374 .. versionchanged:: 2.0 |
|
375 This function worked unreliably under Windows in earlier versions of Python. |
|
376 This was due to the use of the :cfunc:`_popen` function from the libraries |
|
377 provided with Windows. Newer versions of Python do not use the broken |
|
378 implementation from the Windows libraries. |
|
379 |
|
380 |
|
381 .. function:: tmpfile() |
|
382 |
|
383 Return a new file object opened in update mode (``w+b``). The file has no |
|
384 directory entries associated with it and will be automatically deleted once |
|
385 there are no file descriptors for the file. Availability: Unix, |
|
386 Windows. |
|
387 |
|
388 There are a number of different :func:`popen\*` functions that provide slightly |
|
389 different ways to create subprocesses. |
|
390 |
|
391 .. deprecated:: 2.6 |
|
392 All of the :func:`popen\*` functions are obsolete. Use the :mod:`subprocess` |
|
393 module. |
|
394 |
|
395 For each of the :func:`popen\*` variants, if *bufsize* is specified, it |
|
396 specifies the buffer size for the I/O pipes. *mode*, if provided, should be the |
|
397 string ``'b'`` or ``'t'``; on Windows this is needed to determine whether the |
|
398 file objects should be opened in binary or text mode. The default value for |
|
399 *mode* is ``'t'``. |
|
400 |
|
401 Also, for each of these variants, on Unix, *cmd* may be a sequence, in which |
|
402 case arguments will be passed directly to the program without shell intervention |
|
403 (as with :func:`os.spawnv`). If *cmd* is a string it will be passed to the shell |
|
404 (as with :func:`os.system`). |
|
405 |
|
406 These methods do not make it possible to retrieve the exit status from the child |
|
407 processes. The only way to control the input and output streams and also |
|
408 retrieve the return codes is to use the :mod:`subprocess` module; these are only |
|
409 available on Unix. |
|
410 |
|
411 For a discussion of possible deadlock conditions related to the use of these |
|
412 functions, see :ref:`popen2-flow-control`. |
|
413 |
|
414 |
|
415 .. function:: popen2(cmd[, mode[, bufsize]]) |
|
416 |
|
417 Execute *cmd* as a sub-process and return the file objects ``(child_stdin, |
|
418 child_stdout)``. |
|
419 |
|
420 .. deprecated:: 2.6 |
|
421 This function is obsolete. Use the :mod:`subprocess` module. Check |
|
422 especially the :ref:`subprocess-replacements` section. |
|
423 |
|
424 Availability: Unix, Windows. |
|
425 |
|
426 .. versionadded:: 2.0 |
|
427 |
|
428 |
|
429 .. function:: popen3(cmd[, mode[, bufsize]]) |
|
430 |
|
431 Execute *cmd* as a sub-process and return the file objects ``(child_stdin, |
|
432 child_stdout, child_stderr)``. |
|
433 |
|
434 .. deprecated:: 2.6 |
|
435 This function is obsolete. Use the :mod:`subprocess` module. Check |
|
436 especially the :ref:`subprocess-replacements` section. |
|
437 |
|
438 Availability: Unix, Windows. |
|
439 |
|
440 .. versionadded:: 2.0 |
|
441 |
|
442 |
|
443 .. function:: popen4(cmd[, mode[, bufsize]]) |
|
444 |
|
445 Execute *cmd* as a sub-process and return the file objects ``(child_stdin, |
|
446 child_stdout_and_stderr)``. |
|
447 |
|
448 .. deprecated:: 2.6 |
|
449 This function is obsolete. Use the :mod:`subprocess` module. Check |
|
450 especially the :ref:`subprocess-replacements` section. |
|
451 |
|
452 Availability: Unix, Windows. |
|
453 |
|
454 .. versionadded:: 2.0 |
|
455 |
|
456 (Note that ``child_stdin, child_stdout, and child_stderr`` are named from the |
|
457 point of view of the child process, so *child_stdin* is the child's standard |
|
458 input.) |
|
459 |
|
460 This functionality is also available in the :mod:`popen2` module using functions |
|
461 of the same names, but the return values of those functions have a different |
|
462 order. |
|
463 |
|
464 |
|
465 .. _os-fd-ops: |
|
466 |
|
467 File Descriptor Operations |
|
468 -------------------------- |
|
469 |
|
470 These functions operate on I/O streams referenced using file descriptors. |
|
471 |
|
472 File descriptors are small integers corresponding to a file that has been opened |
|
473 by the current process. For example, standard input is usually file descriptor |
|
474 0, standard output is 1, and standard error is 2. Further files opened by a |
|
475 process will then be assigned 3, 4, 5, and so forth. The name "file descriptor" |
|
476 is slightly deceptive; on Unix platforms, sockets and pipes are also referenced |
|
477 by file descriptors. |
|
478 |
|
479 |
|
480 .. function:: close(fd) |
|
481 |
|
482 Close file descriptor *fd*. Availability: Unix, Windows. |
|
483 |
|
484 .. note:: |
|
485 |
|
486 This function is intended for low-level I/O and must be applied to a file |
|
487 descriptor as returned by :func:`open` or :func:`pipe`. To close a "file |
|
488 object" returned by the built-in function :func:`open` or by :func:`popen` or |
|
489 :func:`fdopen`, use its :meth:`close` method. |
|
490 |
|
491 |
|
492 .. function:: closerange(fd_low, fd_high) |
|
493 |
|
494 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive), |
|
495 ignoring errors. Availability: Unix, Windows. Equivalent to:: |
|
496 |
|
497 for fd in xrange(fd_low, fd_high): |
|
498 try: |
|
499 os.close(fd) |
|
500 except OSError: |
|
501 pass |
|
502 |
|
503 .. versionadded:: 2.6 |
|
504 |
|
505 |
|
506 .. function:: dup(fd) |
|
507 |
|
508 Return a duplicate of file descriptor *fd*. Availability: Unix, |
|
509 Windows. |
|
510 |
|
511 |
|
512 .. function:: dup2(fd, fd2) |
|
513 |
|
514 Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary. |
|
515 Availability: Unix, Windows. |
|
516 |
|
517 |
|
518 .. function:: fchmod(fd, mode) |
|
519 |
|
520 Change the mode of the file given by *fd* to the numeric *mode*. See the docs |
|
521 for :func:`chmod` for possible values of *mode*. Availability: Unix. |
|
522 |
|
523 .. versionadded:: 2.6 |
|
524 |
|
525 |
|
526 .. function:: fchown(fd, uid, gid) |
|
527 |
|
528 Change the owner and group id of the file given by *fd* to the numeric *uid* |
|
529 and *gid*. To leave one of the ids unchanged, set it to -1. |
|
530 Availability: Unix. |
|
531 |
|
532 .. versionadded:: 2.6 |
|
533 |
|
534 |
|
535 .. function:: fdatasync(fd) |
|
536 |
|
537 Force write of file with filedescriptor *fd* to disk. Does not force update of |
|
538 metadata. Availability: Unix. |
|
539 |
|
540 |
|
541 .. function:: fpathconf(fd, name) |
|
542 |
|
543 Return system configuration information relevant to an open file. *name* |
|
544 specifies the configuration value to retrieve; it may be a string which is the |
|
545 name of a defined system value; these names are specified in a number of |
|
546 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define |
|
547 additional names as well. The names known to the host operating system are |
|
548 given in the ``pathconf_names`` dictionary. For configuration variables not |
|
549 included in that mapping, passing an integer for *name* is also accepted. |
|
550 Availability: Unix. |
|
551 |
|
552 If *name* is a string and is not known, :exc:`ValueError` is raised. If a |
|
553 specific value for *name* is not supported by the host system, even if it is |
|
554 included in ``pathconf_names``, an :exc:`OSError` is raised with |
|
555 :const:`errno.EINVAL` for the error number. |
|
556 |
|
557 |
|
558 .. function:: fstat(fd) |
|
559 |
|
560 Return status for file descriptor *fd*, like :func:`stat`. Availability: |
|
561 Unix, Windows. |
|
562 |
|
563 |
|
564 .. function:: fstatvfs(fd) |
|
565 |
|
566 Return information about the filesystem containing the file associated with file |
|
567 descriptor *fd*, like :func:`statvfs`. Availability: Unix. |
|
568 |
|
569 |
|
570 .. function:: fsync(fd) |
|
571 |
|
572 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the |
|
573 native :cfunc:`fsync` function; on Windows, the MS :cfunc:`_commit` function. |
|
574 |
|
575 If you're starting with a Python file object *f*, first do ``f.flush()``, and |
|
576 then do ``os.fsync(f.fileno())``, to ensure that all internal buffers associated |
|
577 with *f* are written to disk. Availability: Unix, and Windows |
|
578 starting in 2.2.3. |
|
579 |
|
580 |
|
581 .. function:: ftruncate(fd, length) |
|
582 |
|
583 Truncate the file corresponding to file descriptor *fd*, so that it is at most |
|
584 *length* bytes in size. Availability: Unix. |
|
585 |
|
586 |
|
587 .. function:: isatty(fd) |
|
588 |
|
589 Return ``True`` if the file descriptor *fd* is open and connected to a |
|
590 tty(-like) device, else ``False``. Availability: Unix. |
|
591 |
|
592 |
|
593 .. function:: lseek(fd, pos, how) |
|
594 |
|
595 Set the current position of file descriptor *fd* to position *pos*, modified |
|
596 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the |
|
597 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the |
|
598 current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of |
|
599 the file. Availability: Unix, Windows. |
|
600 |
|
601 |
|
602 .. function:: open(file, flags[, mode]) |
|
603 |
|
604 Open the file *file* and set various flags according to *flags* and possibly its |
|
605 mode according to *mode*. The default *mode* is ``0777`` (octal), and the |
|
606 current umask value is first masked out. Return the file descriptor for the |
|
607 newly opened file. Availability: Unix, Windows. |
|
608 |
|
609 For a description of the flag and mode values, see the C run-time documentation; |
|
610 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in |
|
611 this module too (see below). |
|
612 |
|
613 .. note:: |
|
614 |
|
615 This function is intended for low-level I/O. For normal usage, use the built-in |
|
616 function :func:`open`, which returns a "file object" with :meth:`read` and |
|
617 :meth:`write` methods (and many more). To wrap a file descriptor in a "file |
|
618 object", use :func:`fdopen`. |
|
619 |
|
620 |
|
621 .. function:: openpty() |
|
622 |
|
623 .. index:: module: pty |
|
624 |
|
625 Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master, |
|
626 slave)`` for the pty and the tty, respectively. For a (slightly) more portable |
|
627 approach, use the :mod:`pty` module. Availability: some flavors of |
|
628 Unix. |
|
629 |
|
630 |
|
631 .. function:: pipe() |
|
632 |
|
633 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for reading |
|
634 and writing, respectively. Availability: Unix, Windows. |
|
635 |
|
636 |
|
637 .. function:: read(fd, n) |
|
638 |
|
639 Read at most *n* bytes from file descriptor *fd*. Return a string containing the |
|
640 bytes read. If the end of the file referred to by *fd* has been reached, an |
|
641 empty string is returned. Availability: Unix, Windows. |
|
642 |
|
643 .. note:: |
|
644 |
|
645 This function is intended for low-level I/O and must be applied to a file |
|
646 descriptor as returned by :func:`open` or :func:`pipe`. To read a "file object" |
|
647 returned by the built-in function :func:`open` or by :func:`popen` or |
|
648 :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`read` or :meth:`readline` |
|
649 methods. |
|
650 |
|
651 |
|
652 .. function:: tcgetpgrp(fd) |
|
653 |
|
654 Return the process group associated with the terminal given by *fd* (an open |
|
655 file descriptor as returned by :func:`open`). Availability: Unix. |
|
656 |
|
657 |
|
658 .. function:: tcsetpgrp(fd, pg) |
|
659 |
|
660 Set the process group associated with the terminal given by *fd* (an open file |
|
661 descriptor as returned by :func:`open`) to *pg*. Availability: Unix. |
|
662 |
|
663 |
|
664 .. function:: ttyname(fd) |
|
665 |
|
666 Return a string which specifies the terminal device associated with |
|
667 file descriptor *fd*. If *fd* is not associated with a terminal device, an |
|
668 exception is raised. Availability: Unix. |
|
669 |
|
670 |
|
671 .. function:: write(fd, str) |
|
672 |
|
673 Write the string *str* to file descriptor *fd*. Return the number of bytes |
|
674 actually written. Availability: Unix, Windows. |
|
675 |
|
676 .. note:: |
|
677 |
|
678 This function is intended for low-level I/O and must be applied to a file |
|
679 descriptor as returned by :func:`open` or :func:`pipe`. To write a "file |
|
680 object" returned by the built-in function :func:`open` or by :func:`popen` or |
|
681 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its :meth:`write` |
|
682 method. |
|
683 |
|
684 The following data items are available for use in constructing the *flags* |
|
685 parameter to the :func:`open` function. Some items will not be available on all |
|
686 platforms. For descriptions of their availability and use, consult |
|
687 :manpage:`open(2)`. |
|
688 |
|
689 |
|
690 .. data:: O_RDONLY |
|
691 O_WRONLY |
|
692 O_RDWR |
|
693 O_APPEND |
|
694 O_CREAT |
|
695 O_EXCL |
|
696 O_TRUNC |
|
697 |
|
698 Options for the *flag* argument to the :func:`open` function. These can be |
|
699 combined using the bitwise OR operator ``|``. Availability: Unix, Windows. |
|
700 |
|
701 |
|
702 .. data:: O_DSYNC |
|
703 O_RSYNC |
|
704 O_SYNC |
|
705 O_NDELAY |
|
706 O_NONBLOCK |
|
707 O_NOCTTY |
|
708 O_SHLOCK |
|
709 O_EXLOCK |
|
710 |
|
711 More options for the *flag* argument to the :func:`open` function. Availability: |
|
712 Unix. |
|
713 |
|
714 |
|
715 .. data:: O_BINARY |
|
716 O_NOINHERIT |
|
717 O_SHORT_LIVED |
|
718 O_TEMPORARY |
|
719 O_RANDOM |
|
720 O_SEQUENTIAL |
|
721 O_TEXT |
|
722 |
|
723 Options for the *flag* argument to the :func:`open` function. These can be |
|
724 combined using the bitwise OR operator ``|``. Availability: Windows. |
|
725 |
|
726 |
|
727 .. data:: O_ASYNC |
|
728 O_DIRECT |
|
729 O_DIRECTORY |
|
730 O_NOFOLLOW |
|
731 O_NOATIME |
|
732 |
|
733 Options for the *flag* argument to the :func:`open` function. These are |
|
734 GNU extensions and not present if they are not defined by the C library. |
|
735 |
|
736 |
|
737 .. data:: SEEK_SET |
|
738 SEEK_CUR |
|
739 SEEK_END |
|
740 |
|
741 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2, |
|
742 respectively. Availability: Windows, Unix. |
|
743 |
|
744 .. versionadded:: 2.5 |
|
745 |
|
746 |
|
747 .. _os-file-dir: |
|
748 |
|
749 Files and Directories |
|
750 --------------------- |
|
751 |
|
752 .. function:: access(path, mode) |
|
753 |
|
754 Use the real uid/gid to test for access to *path*. Note that most operations |
|
755 will use the effective uid/gid, therefore this routine can be used in a |
|
756 suid/sgid environment to test if the invoking user has the specified access to |
|
757 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it |
|
758 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and |
|
759 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed, |
|
760 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more |
|
761 information. Availability: Unix, Windows. |
|
762 |
|
763 .. note:: |
|
764 |
|
765 Using :func:`access` to check if a user is authorized to e.g. open a file before |
|
766 actually doing so using :func:`open` creates a security hole, because the user |
|
767 might exploit the short time interval between checking and opening the file to |
|
768 manipulate it. |
|
769 |
|
770 .. note:: |
|
771 |
|
772 I/O operations may fail even when :func:`access` indicates that they would |
|
773 succeed, particularly for operations on network filesystems which may have |
|
774 permissions semantics beyond the usual POSIX permission-bit model. |
|
775 |
|
776 |
|
777 .. data:: F_OK |
|
778 |
|
779 Value to pass as the *mode* parameter of :func:`access` to test the existence of |
|
780 *path*. |
|
781 |
|
782 |
|
783 .. data:: R_OK |
|
784 |
|
785 Value to include in the *mode* parameter of :func:`access` to test the |
|
786 readability of *path*. |
|
787 |
|
788 |
|
789 .. data:: W_OK |
|
790 |
|
791 Value to include in the *mode* parameter of :func:`access` to test the |
|
792 writability of *path*. |
|
793 |
|
794 |
|
795 .. data:: X_OK |
|
796 |
|
797 Value to include in the *mode* parameter of :func:`access` to determine if |
|
798 *path* can be executed. |
|
799 |
|
800 |
|
801 .. function:: chdir(path) |
|
802 |
|
803 .. index:: single: directory; changing |
|
804 |
|
805 Change the current working directory to *path*. Availability: Unix, |
|
806 Windows. |
|
807 |
|
808 |
|
809 .. function:: fchdir(fd) |
|
810 |
|
811 Change the current working directory to the directory represented by the file |
|
812 descriptor *fd*. The descriptor must refer to an opened directory, not an open |
|
813 file. Availability: Unix. |
|
814 |
|
815 .. versionadded:: 2.3 |
|
816 |
|
817 |
|
818 .. function:: getcwd() |
|
819 |
|
820 Return a string representing the current working directory. Availability: |
|
821 Unix, Windows. |
|
822 |
|
823 |
|
824 .. function:: getcwdu() |
|
825 |
|
826 Return a Unicode object representing the current working directory. |
|
827 Availability: Unix, Windows. |
|
828 |
|
829 .. versionadded:: 2.3 |
|
830 |
|
831 |
|
832 .. function:: chflags(path, flags) |
|
833 |
|
834 Set the flags of *path* to the numeric *flags*. *flags* may take a combination |
|
835 (bitwise OR) of the following values (as defined in the :mod:`stat` module): |
|
836 |
|
837 * ``UF_NODUMP`` |
|
838 * ``UF_IMMUTABLE`` |
|
839 * ``UF_APPEND`` |
|
840 * ``UF_OPAQUE`` |
|
841 * ``UF_NOUNLINK`` |
|
842 * ``SF_ARCHIVED`` |
|
843 * ``SF_IMMUTABLE`` |
|
844 * ``SF_APPEND`` |
|
845 * ``SF_NOUNLINK`` |
|
846 * ``SF_SNAPSHOT`` |
|
847 |
|
848 Availability: Unix. |
|
849 |
|
850 .. versionadded:: 2.6 |
|
851 |
|
852 |
|
853 .. function:: chroot(path) |
|
854 |
|
855 Change the root directory of the current process to *path*. Availability: |
|
856 Unix. |
|
857 |
|
858 .. versionadded:: 2.2 |
|
859 |
|
860 |
|
861 .. function:: chmod(path, mode) |
|
862 |
|
863 Change the mode of *path* to the numeric *mode*. *mode* may take one of the |
|
864 following values (as defined in the :mod:`stat` module) or bitwise ORed |
|
865 combinations of them: |
|
866 |
|
867 |
|
868 * ``stat.S_ISUID`` |
|
869 * ``stat.S_ISGID`` |
|
870 * ``stat.S_ENFMT`` |
|
871 * ``stat.S_ISVTX`` |
|
872 * ``stat.S_IREAD`` |
|
873 * ``stat.S_IWRITE`` |
|
874 * ``stat.S_IEXEC`` |
|
875 * ``stat.S_IRWXU`` |
|
876 * ``stat.S_IRUSR`` |
|
877 * ``stat.S_IWUSR`` |
|
878 * ``stat.S_IXUSR`` |
|
879 * ``stat.S_IRWXG`` |
|
880 * ``stat.S_IRGRP`` |
|
881 * ``stat.S_IWGRP`` |
|
882 * ``stat.S_IXGRP`` |
|
883 * ``stat.S_IRWXO`` |
|
884 * ``stat.S_IROTH`` |
|
885 * ``stat.S_IWOTH`` |
|
886 * ``stat.S_IXOTH`` |
|
887 |
|
888 Availability: Unix, Windows. |
|
889 |
|
890 .. note:: |
|
891 |
|
892 Although Windows supports :func:`chmod`, you can only set the file's read-only |
|
893 flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD`` |
|
894 constants or a corresponding integer value). All other bits are |
|
895 ignored. |
|
896 |
|
897 |
|
898 .. function:: chown(path, uid, gid) |
|
899 |
|
900 Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave |
|
901 one of the ids unchanged, set it to -1. Availability: Unix. |
|
902 |
|
903 |
|
904 .. function:: lchflags(path, flags) |
|
905 |
|
906 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do not |
|
907 follow symbolic links. Availability: Unix. |
|
908 |
|
909 .. versionadded:: 2.6 |
|
910 |
|
911 |
|
912 .. function:: lchmod(path, mode) |
|
913 |
|
914 Change the mode of *path* to the numeric *mode*. If path is a symlink, this |
|
915 affects the symlink rather than the target. See the docs for :func:`chmod` |
|
916 for possible values of *mode*. Availability: Unix. |
|
917 |
|
918 .. versionadded:: 2.6 |
|
919 |
|
920 |
|
921 .. function:: lchown(path, uid, gid) |
|
922 |
|
923 Change the owner and group id of *path* to the numeric *uid* and *gid*. This |
|
924 function will not follow symbolic links. Availability: Unix. |
|
925 |
|
926 .. versionadded:: 2.3 |
|
927 |
|
928 |
|
929 .. function:: link(src, dst) |
|
930 |
|
931 Create a hard link pointing to *src* named *dst*. Availability: Unix. |
|
932 |
|
933 |
|
934 .. function:: listdir(path) |
|
935 |
|
936 Return a list containing the names of the entries in the directory. The list is |
|
937 in arbitrary order. It does not include the special entries ``'.'`` and |
|
938 ``'..'`` even if they are present in the directory. Availability: |
|
939 Unix, Windows. |
|
940 |
|
941 .. versionchanged:: 2.3 |
|
942 On Windows NT/2k/XP and Unix, if *path* is a Unicode object, the result will be |
|
943 a list of Unicode objects. |
|
944 |
|
945 |
|
946 .. function:: lstat(path) |
|
947 |
|
948 Like :func:`stat`, but do not follow symbolic links. This is an alias for |
|
949 :func:`stat` on platforms that do not support symbolic links, such as |
|
950 Windows. |
|
951 |
|
952 |
|
953 .. function:: mkfifo(path[, mode]) |
|
954 |
|
955 Create a FIFO (a named pipe) named *path* with numeric mode *mode*. The default |
|
956 *mode* is ``0666`` (octal). The current umask value is first masked out from |
|
957 the mode. Availability: Unix. |
|
958 |
|
959 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they |
|
960 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as |
|
961 rendezvous between "client" and "server" type processes: the server opens the |
|
962 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo` |
|
963 doesn't open the FIFO --- it just creates the rendezvous point. |
|
964 |
|
965 |
|
966 .. function:: mknod(filename[, mode=0600, device]) |
|
967 |
|
968 Create a filesystem node (file, device special file or named pipe) named |
|
969 *filename*. *mode* specifies both the permissions to use and the type of node to |
|
970 be created, being combined (bitwise OR) with one of ``stat.S_IFREG``, |
|
971 ``stat.S_IFCHR``, ``stat.S_IFBLK``, |
|
972 and ``stat.S_IFIFO`` (those constants are available in :mod:`stat`). |
|
973 For ``stat.S_IFCHR`` and |
|
974 ``stat.S_IFBLK``, *device* defines the newly created device special file (probably using |
|
975 :func:`os.makedev`), otherwise it is ignored. |
|
976 |
|
977 .. versionadded:: 2.3 |
|
978 |
|
979 |
|
980 .. function:: major(device) |
|
981 |
|
982 Extract the device major number from a raw device number (usually the |
|
983 :attr:`st_dev` or :attr:`st_rdev` field from :ctype:`stat`). |
|
984 |
|
985 .. versionadded:: 2.3 |
|
986 |
|
987 |
|
988 .. function:: minor(device) |
|
989 |
|
990 Extract the device minor number from a raw device number (usually the |
|
991 :attr:`st_dev` or :attr:`st_rdev` field from :ctype:`stat`). |
|
992 |
|
993 .. versionadded:: 2.3 |
|
994 |
|
995 |
|
996 .. function:: makedev(major, minor) |
|
997 |
|
998 Compose a raw device number from the major and minor device numbers. |
|
999 |
|
1000 .. versionadded:: 2.3 |
|
1001 |
|
1002 |
|
1003 .. function:: mkdir(path[, mode]) |
|
1004 |
|
1005 Create a directory named *path* with numeric mode *mode*. The default *mode* is |
|
1006 ``0777`` (octal). On some systems, *mode* is ignored. Where it is used, the |
|
1007 current umask value is first masked out. Availability: Unix, Windows. |
|
1008 |
|
1009 It is also possible to create temporary directories; see the |
|
1010 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function. |
|
1011 |
|
1012 |
|
1013 .. function:: makedirs(path[, mode]) |
|
1014 |
|
1015 .. index:: |
|
1016 single: directory; creating |
|
1017 single: UNC paths; and os.makedirs() |
|
1018 |
|
1019 Recursive directory creation function. Like :func:`mkdir`, but makes all |
|
1020 intermediate-level directories needed to contain the leaf directory. Throws an |
|
1021 :exc:`error` exception if the leaf directory already exists or cannot be |
|
1022 created. The default *mode* is ``0777`` (octal). On some systems, *mode* is |
|
1023 ignored. Where it is used, the current umask value is first masked out. |
|
1024 |
|
1025 .. note:: |
|
1026 |
|
1027 :func:`makedirs` will become confused if the path elements to create include |
|
1028 :data:`os.pardir`. |
|
1029 |
|
1030 .. versionadded:: 1.5.2 |
|
1031 |
|
1032 .. versionchanged:: 2.3 |
|
1033 This function now handles UNC paths correctly. |
|
1034 |
|
1035 |
|
1036 .. function:: pathconf(path, name) |
|
1037 |
|
1038 Return system configuration information relevant to a named file. *name* |
|
1039 specifies the configuration value to retrieve; it may be a string which is the |
|
1040 name of a defined system value; these names are specified in a number of |
|
1041 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define |
|
1042 additional names as well. The names known to the host operating system are |
|
1043 given in the ``pathconf_names`` dictionary. For configuration variables not |
|
1044 included in that mapping, passing an integer for *name* is also accepted. |
|
1045 Availability: Unix. |
|
1046 |
|
1047 If *name* is a string and is not known, :exc:`ValueError` is raised. If a |
|
1048 specific value for *name* is not supported by the host system, even if it is |
|
1049 included in ``pathconf_names``, an :exc:`OSError` is raised with |
|
1050 :const:`errno.EINVAL` for the error number. |
|
1051 |
|
1052 |
|
1053 .. data:: pathconf_names |
|
1054 |
|
1055 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to |
|
1056 the integer values defined for those names by the host operating system. This |
|
1057 can be used to determine the set of names known to the system. Availability: |
|
1058 Unix. |
|
1059 |
|
1060 |
|
1061 .. function:: readlink(path) |
|
1062 |
|
1063 Return a string representing the path to which the symbolic link points. The |
|
1064 result may be either an absolute or relative pathname; if it is relative, it may |
|
1065 be converted to an absolute pathname using ``os.path.join(os.path.dirname(path), |
|
1066 result)``. |
|
1067 |
|
1068 .. versionchanged:: 2.6 |
|
1069 If the *path* is a Unicode object the result will also be a Unicode object. |
|
1070 |
|
1071 Availability: Unix. |
|
1072 |
|
1073 |
|
1074 .. function:: remove(path) |
|
1075 |
|
1076 Remove the file *path*. If *path* is a directory, :exc:`OSError` is raised; see |
|
1077 :func:`rmdir` below to remove a directory. This is identical to the |
|
1078 :func:`unlink` function documented below. On Windows, attempting to remove a |
|
1079 file that is in use causes an exception to be raised; on Unix, the directory |
|
1080 entry is removed but the storage allocated to the file is not made available |
|
1081 until the original file is no longer in use. Availability: Unix, |
|
1082 Windows. |
|
1083 |
|
1084 |
|
1085 .. function:: removedirs(path) |
|
1086 |
|
1087 .. index:: single: directory; deleting |
|
1088 |
|
1089 Remove directories recursively. Works like :func:`rmdir` except that, if the |
|
1090 leaf directory is successfully removed, :func:`removedirs` tries to |
|
1091 successively remove every parent directory mentioned in *path* until an error |
|
1092 is raised (which is ignored, because it generally means that a parent directory |
|
1093 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove |
|
1094 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if |
|
1095 they are empty. Raises :exc:`OSError` if the leaf directory could not be |
|
1096 successfully removed. |
|
1097 |
|
1098 .. versionadded:: 1.5.2 |
|
1099 |
|
1100 |
|
1101 .. function:: rename(src, dst) |
|
1102 |
|
1103 Rename the file or directory *src* to *dst*. If *dst* is a directory, |
|
1104 :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will |
|
1105 be replaced silently if the user has permission. The operation may fail on some |
|
1106 Unix flavors if *src* and *dst* are on different filesystems. If successful, |
|
1107 the renaming will be an atomic operation (this is a POSIX requirement). On |
|
1108 Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a |
|
1109 file; there may be no way to implement an atomic rename when *dst* names an |
|
1110 existing file. Availability: Unix, Windows. |
|
1111 |
|
1112 |
|
1113 .. function:: renames(old, new) |
|
1114 |
|
1115 Recursive directory or file renaming function. Works like :func:`rename`, except |
|
1116 creation of any intermediate directories needed to make the new pathname good is |
|
1117 attempted first. After the rename, directories corresponding to rightmost path |
|
1118 segments of the old name will be pruned away using :func:`removedirs`. |
|
1119 |
|
1120 .. versionadded:: 1.5.2 |
|
1121 |
|
1122 .. note:: |
|
1123 |
|
1124 This function can fail with the new directory structure made if you lack |
|
1125 permissions needed to remove the leaf directory or file. |
|
1126 |
|
1127 |
|
1128 .. function:: rmdir(path) |
|
1129 |
|
1130 Remove the directory *path*. Availability: Unix, Windows. |
|
1131 |
|
1132 |
|
1133 .. function:: stat(path) |
|
1134 |
|
1135 Perform a :cfunc:`stat` system call on the given path. The return value is an |
|
1136 object whose attributes correspond to the members of the :ctype:`stat` |
|
1137 structure, namely: :attr:`st_mode` (protection bits), :attr:`st_ino` (inode |
|
1138 number), :attr:`st_dev` (device), :attr:`st_nlink` (number of hard links), |
|
1139 :attr:`st_uid` (user id of owner), :attr:`st_gid` (group id of owner), |
|
1140 :attr:`st_size` (size of file, in bytes), :attr:`st_atime` (time of most recent |
|
1141 access), :attr:`st_mtime` (time of most recent content modification), |
|
1142 :attr:`st_ctime` (platform dependent; time of most recent metadata change on |
|
1143 Unix, or the time of creation on Windows):: |
|
1144 |
|
1145 >>> import os |
|
1146 >>> statinfo = os.stat('somefile.txt') |
|
1147 >>> statinfo |
|
1148 (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732) |
|
1149 >>> statinfo.st_size |
|
1150 926L |
|
1151 >>> |
|
1152 |
|
1153 .. versionchanged:: 2.3 |
|
1154 If :func:`stat_float_times` returns ``True``, the time values are floats, measuring |
|
1155 seconds. Fractions of a second may be reported if the system supports that. On |
|
1156 Mac OS, the times are always floats. See :func:`stat_float_times` for further |
|
1157 discussion. |
|
1158 |
|
1159 On some Unix systems (such as Linux), the following attributes may also be |
|
1160 available: :attr:`st_blocks` (number of blocks allocated for file), |
|
1161 :attr:`st_blksize` (filesystem blocksize), :attr:`st_rdev` (type of device if an |
|
1162 inode device). :attr:`st_flags` (user defined flags for file). |
|
1163 |
|
1164 On other Unix systems (such as FreeBSD), the following attributes may be |
|
1165 available (but may be only filled out if root tries to use them): :attr:`st_gen` |
|
1166 (file generation number), :attr:`st_birthtime` (time of file creation). |
|
1167 |
|
1168 On Mac OS systems, the following attributes may also be available: |
|
1169 :attr:`st_rsize`, :attr:`st_creator`, :attr:`st_type`. |
|
1170 |
|
1171 On RISCOS systems, the following attributes are also available: :attr:`st_ftype` |
|
1172 (file type), :attr:`st_attrs` (attributes), :attr:`st_obtype` (object type). |
|
1173 |
|
1174 .. index:: module: stat |
|
1175 |
|
1176 For backward compatibility, the return value of :func:`stat` is also accessible |
|
1177 as a tuple of at least 10 integers giving the most important (and portable) |
|
1178 members of the :ctype:`stat` structure, in the order :attr:`st_mode`, |
|
1179 :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, :attr:`st_uid`, |
|
1180 :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, :attr:`st_mtime`, |
|
1181 :attr:`st_ctime`. More items may be added at the end by some implementations. |
|
1182 The standard module :mod:`stat` defines functions and constants that are useful |
|
1183 for extracting information from a :ctype:`stat` structure. (On Windows, some |
|
1184 items are filled with dummy values.) |
|
1185 |
|
1186 .. note:: |
|
1187 |
|
1188 The exact meaning and resolution of the :attr:`st_atime`, :attr:`st_mtime`, and |
|
1189 :attr:`st_ctime` members depends on the operating system and the file system. |
|
1190 For example, on Windows systems using the FAT or FAT32 file systems, |
|
1191 :attr:`st_mtime` has 2-second resolution, and :attr:`st_atime` has only 1-day |
|
1192 resolution. See your operating system documentation for details. |
|
1193 |
|
1194 Availability: Unix, Windows. |
|
1195 |
|
1196 .. versionchanged:: 2.2 |
|
1197 Added access to values as attributes of the returned object. |
|
1198 |
|
1199 .. versionchanged:: 2.5 |
|
1200 Added :attr:`st_gen` and :attr:`st_birthtime`. |
|
1201 |
|
1202 |
|
1203 .. function:: stat_float_times([newvalue]) |
|
1204 |
|
1205 Determine whether :class:`stat_result` represents time stamps as float objects. |
|
1206 If *newvalue* is ``True``, future calls to :func:`stat` return floats, if it is |
|
1207 ``False``, future calls return ints. If *newvalue* is omitted, return the |
|
1208 current setting. |
|
1209 |
|
1210 For compatibility with older Python versions, accessing :class:`stat_result` as |
|
1211 a tuple always returns integers. |
|
1212 |
|
1213 .. versionchanged:: 2.5 |
|
1214 Python now returns float values by default. Applications which do not work |
|
1215 correctly with floating point time stamps can use this function to restore the |
|
1216 old behaviour. |
|
1217 |
|
1218 The resolution of the timestamps (that is the smallest possible fraction) |
|
1219 depends on the system. Some systems only support second resolution; on these |
|
1220 systems, the fraction will always be zero. |
|
1221 |
|
1222 It is recommended that this setting is only changed at program startup time in |
|
1223 the *__main__* module; libraries should never change this setting. If an |
|
1224 application uses a library that works incorrectly if floating point time stamps |
|
1225 are processed, this application should turn the feature off until the library |
|
1226 has been corrected. |
|
1227 |
|
1228 |
|
1229 .. function:: statvfs(path) |
|
1230 |
|
1231 Perform a :cfunc:`statvfs` system call on the given path. The return value is |
|
1232 an object whose attributes describe the filesystem on the given path, and |
|
1233 correspond to the members of the :ctype:`statvfs` structure, namely: |
|
1234 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`, |
|
1235 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`, |
|
1236 :attr:`f_flag`, :attr:`f_namemax`. Availability: Unix. |
|
1237 |
|
1238 .. index:: module: statvfs |
|
1239 |
|
1240 For backward compatibility, the return value is also accessible as a tuple whose |
|
1241 values correspond to the attributes, in the order given above. The standard |
|
1242 module :mod:`statvfs` defines constants that are useful for extracting |
|
1243 information from a :ctype:`statvfs` structure when accessing it as a sequence; |
|
1244 this remains useful when writing code that needs to work with versions of Python |
|
1245 that don't support accessing the fields as attributes. |
|
1246 |
|
1247 .. versionchanged:: 2.2 |
|
1248 Added access to values as attributes of the returned object. |
|
1249 |
|
1250 |
|
1251 .. function:: symlink(src, dst) |
|
1252 |
|
1253 Create a symbolic link pointing to *src* named *dst*. Availability: Unix. |
|
1254 |
|
1255 |
|
1256 .. function:: tempnam([dir[, prefix]]) |
|
1257 |
|
1258 Return a unique path name that is reasonable for creating a temporary file. |
|
1259 This will be an absolute path that names a potential directory entry in the |
|
1260 directory *dir* or a common location for temporary files if *dir* is omitted or |
|
1261 ``None``. If given and not ``None``, *prefix* is used to provide a short prefix |
|
1262 to the filename. Applications are responsible for properly creating and |
|
1263 managing files created using paths returned by :func:`tempnam`; no automatic |
|
1264 cleanup is provided. On Unix, the environment variable :envvar:`TMPDIR` |
|
1265 overrides *dir*, while on Windows :envvar:`TMP` is used. The specific |
|
1266 behavior of this function depends on the C library implementation; some aspects |
|
1267 are underspecified in system documentation. |
|
1268 |
|
1269 .. warning:: |
|
1270 |
|
1271 Use of :func:`tempnam` is vulnerable to symlink attacks; consider using |
|
1272 :func:`tmpfile` (section :ref:`os-newstreams`) instead. |
|
1273 |
|
1274 Availability: Unix, Windows. |
|
1275 |
|
1276 |
|
1277 .. function:: tmpnam() |
|
1278 |
|
1279 Return a unique path name that is reasonable for creating a temporary file. |
|
1280 This will be an absolute path that names a potential directory entry in a common |
|
1281 location for temporary files. Applications are responsible for properly |
|
1282 creating and managing files created using paths returned by :func:`tmpnam`; no |
|
1283 automatic cleanup is provided. |
|
1284 |
|
1285 .. warning:: |
|
1286 |
|
1287 Use of :func:`tmpnam` is vulnerable to symlink attacks; consider using |
|
1288 :func:`tmpfile` (section :ref:`os-newstreams`) instead. |
|
1289 |
|
1290 Availability: Unix, Windows. This function probably shouldn't be used on |
|
1291 Windows, though: Microsoft's implementation of :func:`tmpnam` always creates a |
|
1292 name in the root directory of the current drive, and that's generally a poor |
|
1293 location for a temp file (depending on privileges, you may not even be able to |
|
1294 open a file using this name). |
|
1295 |
|
1296 |
|
1297 .. data:: TMP_MAX |
|
1298 |
|
1299 The maximum number of unique names that :func:`tmpnam` will generate before |
|
1300 reusing names. |
|
1301 |
|
1302 |
|
1303 .. function:: unlink(path) |
|
1304 |
|
1305 Remove the file *path*. This is the same function as :func:`remove`; the |
|
1306 :func:`unlink` name is its traditional Unix name. Availability: Unix, |
|
1307 Windows. |
|
1308 |
|
1309 |
|
1310 .. function:: utime(path, times) |
|
1311 |
|
1312 Set the access and modified times of the file specified by *path*. If *times* |
|
1313 is ``None``, then the file's access and modified times are set to the current |
|
1314 time. (The effect is similar to running the Unix program :program:`touch` on |
|
1315 the path.) Otherwise, *times* must be a 2-tuple of numbers, of the form |
|
1316 ``(atime, mtime)`` which is used to set the access and modified times, |
|
1317 respectively. Whether a directory can be given for *path* depends on whether |
|
1318 the operating system implements directories as files (for example, Windows |
|
1319 does not). Note that the exact times you set here may not be returned by a |
|
1320 subsequent :func:`stat` call, depending on the resolution with which your |
|
1321 operating system records access and modification times; see :func:`stat`. |
|
1322 |
|
1323 .. versionchanged:: 2.0 |
|
1324 Added support for ``None`` for *times*. |
|
1325 |
|
1326 Availability: Unix, Windows. |
|
1327 |
|
1328 |
|
1329 .. function:: walk(top[, topdown=True [, onerror=None[, followlinks=False]]]) |
|
1330 |
|
1331 .. index:: |
|
1332 single: directory; walking |
|
1333 single: directory; traversal |
|
1334 |
|
1335 Generate the file names in a directory tree by walking the tree |
|
1336 either top-down or bottom-up. For each directory in the tree rooted at directory |
|
1337 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames, |
|
1338 filenames)``. |
|
1339 |
|
1340 *dirpath* is a string, the path to the directory. *dirnames* is a list of the |
|
1341 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``). |
|
1342 *filenames* is a list of the names of the non-directory files in *dirpath*. |
|
1343 Note that the names in the lists contain no path components. To get a full path |
|
1344 (which begins with *top*) to a file or directory in *dirpath*, do |
|
1345 ``os.path.join(dirpath, name)``. |
|
1346 |
|
1347 If optional argument *topdown* is ``True`` or not specified, the triple for a |
|
1348 directory is generated before the triples for any of its subdirectories |
|
1349 (directories are generated top-down). If *topdown* is ``False``, the triple for a |
|
1350 directory is generated after the triples for all of its subdirectories |
|
1351 (directories are generated bottom-up). |
|
1352 |
|
1353 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place |
|
1354 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only |
|
1355 recurse into the subdirectories whose names remain in *dirnames*; this can be |
|
1356 used to prune the search, impose a specific order of visiting, or even to inform |
|
1357 :func:`walk` about directories the caller creates or renames before it resumes |
|
1358 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` is |
|
1359 ineffective, because in bottom-up mode the directories in *dirnames* are |
|
1360 generated before *dirpath* itself is generated. |
|
1361 |
|
1362 By default errors from the :func:`listdir` call are ignored. If optional |
|
1363 argument *onerror* is specified, it should be a function; it will be called with |
|
1364 one argument, an :exc:`OSError` instance. It can report the error to continue |
|
1365 with the walk, or raise the exception to abort the walk. Note that the filename |
|
1366 is available as the ``filename`` attribute of the exception object. |
|
1367 |
|
1368 By default, :func:`walk` will not walk down into symbolic links that resolve to |
|
1369 directories. Set *followlinks* to ``True`` to visit directories pointed to by |
|
1370 symlinks, on systems that support them. |
|
1371 |
|
1372 .. versionadded:: 2.6 |
|
1373 The *followlinks* parameter. |
|
1374 |
|
1375 .. note:: |
|
1376 |
|
1377 Be aware that setting *followlinks* to ``True`` can lead to infinite recursion if a |
|
1378 link points to a parent directory of itself. :func:`walk` does not keep track of |
|
1379 the directories it visited already. |
|
1380 |
|
1381 .. note:: |
|
1382 |
|
1383 If you pass a relative pathname, don't change the current working directory |
|
1384 between resumptions of :func:`walk`. :func:`walk` never changes the current |
|
1385 directory, and assumes that its caller doesn't either. |
|
1386 |
|
1387 This example displays the number of bytes taken by non-directory files in each |
|
1388 directory under the starting directory, except that it doesn't look under any |
|
1389 CVS subdirectory:: |
|
1390 |
|
1391 import os |
|
1392 from os.path import join, getsize |
|
1393 for root, dirs, files in os.walk('python/Lib/email'): |
|
1394 print root, "consumes", |
|
1395 print sum(getsize(join(root, name)) for name in files), |
|
1396 print "bytes in", len(files), "non-directory files" |
|
1397 if 'CVS' in dirs: |
|
1398 dirs.remove('CVS') # don't visit CVS directories |
|
1399 |
|
1400 In the next example, walking the tree bottom-up is essential: :func:`rmdir` |
|
1401 doesn't allow deleting a directory before the directory is empty:: |
|
1402 |
|
1403 # Delete everything reachable from the directory named in "top", |
|
1404 # assuming there are no symbolic links. |
|
1405 # CAUTION: This is dangerous! For example, if top == '/', it |
|
1406 # could delete all your disk files. |
|
1407 import os |
|
1408 for root, dirs, files in os.walk(top, topdown=False): |
|
1409 for name in files: |
|
1410 os.remove(os.path.join(root, name)) |
|
1411 for name in dirs: |
|
1412 os.rmdir(os.path.join(root, name)) |
|
1413 |
|
1414 .. versionadded:: 2.3 |
|
1415 |
|
1416 |
|
1417 .. _os-process: |
|
1418 |
|
1419 Process Management |
|
1420 ------------------ |
|
1421 |
|
1422 These functions may be used to create and manage processes. |
|
1423 |
|
1424 The various :func:`exec\*` functions take a list of arguments for the new |
|
1425 program loaded into the process. In each case, the first of these arguments is |
|
1426 passed to the new program as its own name rather than as an argument a user may |
|
1427 have typed on a command line. For the C programmer, this is the ``argv[0]`` |
|
1428 passed to a program's :cfunc:`main`. For example, ``os.execv('/bin/echo', |
|
1429 ['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem |
|
1430 to be ignored. |
|
1431 |
|
1432 |
|
1433 .. function:: abort() |
|
1434 |
|
1435 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default |
|
1436 behavior is to produce a core dump; on Windows, the process immediately returns |
|
1437 an exit code of ``3``. Be aware that programs which use :func:`signal.signal` |
|
1438 to register a handler for :const:`SIGABRT` will behave differently. |
|
1439 Availability: Unix, Windows. |
|
1440 |
|
1441 |
|
1442 .. function:: execl(path, arg0, arg1, ...) |
|
1443 execle(path, arg0, arg1, ..., env) |
|
1444 execlp(file, arg0, arg1, ...) |
|
1445 execlpe(file, arg0, arg1, ..., env) |
|
1446 execv(path, args) |
|
1447 execve(path, args, env) |
|
1448 execvp(file, args) |
|
1449 execvpe(file, args, env) |
|
1450 |
|
1451 These functions all execute a new program, replacing the current process; they |
|
1452 do not return. On Unix, the new executable is loaded into the current process, |
|
1453 and will have the same process id as the caller. Errors will be reported as |
|
1454 :exc:`OSError` exceptions. |
|
1455 |
|
1456 The current process is replaced immediately. Open file objects and |
|
1457 descriptors are not flushed, so if there may be data buffered |
|
1458 on these open files, you should flush them using |
|
1459 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an |
|
1460 :func:`exec\*` function. |
|
1461 |
|
1462 The "l" and "v" variants of the :func:`exec\*` functions differ in how |
|
1463 command-line arguments are passed. The "l" variants are perhaps the easiest |
|
1464 to work with if the number of parameters is fixed when the code is written; the |
|
1465 individual parameters simply become additional parameters to the :func:`execl\*` |
|
1466 functions. The "v" variants are good when the number of parameters is |
|
1467 variable, with the arguments being passed in a list or tuple as the *args* |
|
1468 parameter. In either case, the arguments to the child process should start with |
|
1469 the name of the command being run, but this is not enforced. |
|
1470 |
|
1471 The variants which include a "p" near the end (:func:`execlp`, |
|
1472 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the |
|
1473 :envvar:`PATH` environment variable to locate the program *file*. When the |
|
1474 environment is being replaced (using one of the :func:`exec\*e` variants, |
|
1475 discussed in the next paragraph), the new environment is used as the source of |
|
1476 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`, |
|
1477 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to |
|
1478 locate the executable; *path* must contain an appropriate absolute or relative |
|
1479 path. |
|
1480 |
|
1481 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note |
|
1482 that these all end in "e"), the *env* parameter must be a mapping which is |
|
1483 used to define the environment variables for the new process (these are used |
|
1484 instead of the current process' environment); the functions :func:`execl`, |
|
1485 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to |
|
1486 inherit the environment of the current process. |
|
1487 |
|
1488 Availability: Unix, Windows. |
|
1489 |
|
1490 |
|
1491 .. function:: _exit(n) |
|
1492 |
|
1493 Exit to the system with status *n*, without calling cleanup handlers, flushing |
|
1494 stdio buffers, etc. Availability: Unix, Windows. |
|
1495 |
|
1496 .. note:: |
|
1497 |
|
1498 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should normally only |
|
1499 be used in the child process after a :func:`fork`. |
|
1500 |
|
1501 The following exit codes are defined and can be used with :func:`_exit`, |
|
1502 although they are not required. These are typically used for system programs |
|
1503 written in Python, such as a mail server's external command delivery program. |
|
1504 |
|
1505 .. note:: |
|
1506 |
|
1507 Some of these may not be available on all Unix platforms, since there is some |
|
1508 variation. These constants are defined where they are defined by the underlying |
|
1509 platform. |
|
1510 |
|
1511 |
|
1512 .. data:: EX_OK |
|
1513 |
|
1514 Exit code that means no error occurred. Availability: Unix. |
|
1515 |
|
1516 .. versionadded:: 2.3 |
|
1517 |
|
1518 |
|
1519 .. data:: EX_USAGE |
|
1520 |
|
1521 Exit code that means the command was used incorrectly, such as when the wrong |
|
1522 number of arguments are given. Availability: Unix. |
|
1523 |
|
1524 .. versionadded:: 2.3 |
|
1525 |
|
1526 |
|
1527 .. data:: EX_DATAERR |
|
1528 |
|
1529 Exit code that means the input data was incorrect. Availability: Unix. |
|
1530 |
|
1531 .. versionadded:: 2.3 |
|
1532 |
|
1533 |
|
1534 .. data:: EX_NOINPUT |
|
1535 |
|
1536 Exit code that means an input file did not exist or was not readable. |
|
1537 Availability: Unix. |
|
1538 |
|
1539 .. versionadded:: 2.3 |
|
1540 |
|
1541 |
|
1542 .. data:: EX_NOUSER |
|
1543 |
|
1544 Exit code that means a specified user did not exist. Availability: Unix. |
|
1545 |
|
1546 .. versionadded:: 2.3 |
|
1547 |
|
1548 |
|
1549 .. data:: EX_NOHOST |
|
1550 |
|
1551 Exit code that means a specified host did not exist. Availability: Unix. |
|
1552 |
|
1553 .. versionadded:: 2.3 |
|
1554 |
|
1555 |
|
1556 .. data:: EX_UNAVAILABLE |
|
1557 |
|
1558 Exit code that means that a required service is unavailable. Availability: |
|
1559 Unix. |
|
1560 |
|
1561 .. versionadded:: 2.3 |
|
1562 |
|
1563 |
|
1564 .. data:: EX_SOFTWARE |
|
1565 |
|
1566 Exit code that means an internal software error was detected. Availability: |
|
1567 Unix. |
|
1568 |
|
1569 .. versionadded:: 2.3 |
|
1570 |
|
1571 |
|
1572 .. data:: EX_OSERR |
|
1573 |
|
1574 Exit code that means an operating system error was detected, such as the |
|
1575 inability to fork or create a pipe. Availability: Unix. |
|
1576 |
|
1577 .. versionadded:: 2.3 |
|
1578 |
|
1579 |
|
1580 .. data:: EX_OSFILE |
|
1581 |
|
1582 Exit code that means some system file did not exist, could not be opened, or had |
|
1583 some other kind of error. Availability: Unix. |
|
1584 |
|
1585 .. versionadded:: 2.3 |
|
1586 |
|
1587 |
|
1588 .. data:: EX_CANTCREAT |
|
1589 |
|
1590 Exit code that means a user specified output file could not be created. |
|
1591 Availability: Unix. |
|
1592 |
|
1593 .. versionadded:: 2.3 |
|
1594 |
|
1595 |
|
1596 .. data:: EX_IOERR |
|
1597 |
|
1598 Exit code that means that an error occurred while doing I/O on some file. |
|
1599 Availability: Unix. |
|
1600 |
|
1601 .. versionadded:: 2.3 |
|
1602 |
|
1603 |
|
1604 .. data:: EX_TEMPFAIL |
|
1605 |
|
1606 Exit code that means a temporary failure occurred. This indicates something |
|
1607 that may not really be an error, such as a network connection that couldn't be |
|
1608 made during a retryable operation. Availability: Unix. |
|
1609 |
|
1610 .. versionadded:: 2.3 |
|
1611 |
|
1612 |
|
1613 .. data:: EX_PROTOCOL |
|
1614 |
|
1615 Exit code that means that a protocol exchange was illegal, invalid, or not |
|
1616 understood. Availability: Unix. |
|
1617 |
|
1618 .. versionadded:: 2.3 |
|
1619 |
|
1620 |
|
1621 .. data:: EX_NOPERM |
|
1622 |
|
1623 Exit code that means that there were insufficient permissions to perform the |
|
1624 operation (but not intended for file system problems). Availability: Unix. |
|
1625 |
|
1626 .. versionadded:: 2.3 |
|
1627 |
|
1628 |
|
1629 .. data:: EX_CONFIG |
|
1630 |
|
1631 Exit code that means that some kind of configuration error occurred. |
|
1632 Availability: Unix. |
|
1633 |
|
1634 .. versionadded:: 2.3 |
|
1635 |
|
1636 |
|
1637 .. data:: EX_NOTFOUND |
|
1638 |
|
1639 Exit code that means something like "an entry was not found". Availability: |
|
1640 Unix. |
|
1641 |
|
1642 .. versionadded:: 2.3 |
|
1643 |
|
1644 |
|
1645 .. function:: fork() |
|
1646 |
|
1647 Fork a child process. Return ``0`` in the child and the child's process id in the |
|
1648 parent. If an error occurs :exc:`OSError` is raised. |
|
1649 |
|
1650 Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have |
|
1651 known issues when using fork() from a thread. |
|
1652 |
|
1653 Availability: Unix. |
|
1654 |
|
1655 |
|
1656 .. function:: forkpty() |
|
1657 |
|
1658 Fork a child process, using a new pseudo-terminal as the child's controlling |
|
1659 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the |
|
1660 new child's process id in the parent, and *fd* is the file descriptor of the |
|
1661 master end of the pseudo-terminal. For a more portable approach, use the |
|
1662 :mod:`pty` module. If an error occurs :exc:`OSError` is raised. |
|
1663 Availability: some flavors of Unix. |
|
1664 |
|
1665 |
|
1666 .. function:: kill(pid, sig) |
|
1667 |
|
1668 .. index:: |
|
1669 single: process; killing |
|
1670 single: process; signalling |
|
1671 |
|
1672 Send signal *sig* to the process *pid*. Constants for the specific signals |
|
1673 available on the host platform are defined in the :mod:`signal` module. |
|
1674 Availability: Unix. |
|
1675 |
|
1676 |
|
1677 .. function:: killpg(pgid, sig) |
|
1678 |
|
1679 .. index:: |
|
1680 single: process; killing |
|
1681 single: process; signalling |
|
1682 |
|
1683 Send the signal *sig* to the process group *pgid*. Availability: Unix. |
|
1684 |
|
1685 .. versionadded:: 2.3 |
|
1686 |
|
1687 |
|
1688 .. function:: nice(increment) |
|
1689 |
|
1690 Add *increment* to the process's "niceness". Return the new niceness. |
|
1691 Availability: Unix. |
|
1692 |
|
1693 |
|
1694 .. function:: plock(op) |
|
1695 |
|
1696 Lock program segments into memory. The value of *op* (defined in |
|
1697 ``<sys/lock.h>``) determines which segments are locked. Availability: Unix. |
|
1698 |
|
1699 |
|
1700 .. function:: popen(...) |
|
1701 popen2(...) |
|
1702 popen3(...) |
|
1703 popen4(...) |
|
1704 :noindex: |
|
1705 |
|
1706 Run child processes, returning opened pipes for communications. These functions |
|
1707 are described in section :ref:`os-newstreams`. |
|
1708 |
|
1709 |
|
1710 .. function:: spawnl(mode, path, ...) |
|
1711 spawnle(mode, path, ..., env) |
|
1712 spawnlp(mode, file, ...) |
|
1713 spawnlpe(mode, file, ..., env) |
|
1714 spawnv(mode, path, args) |
|
1715 spawnve(mode, path, args, env) |
|
1716 spawnvp(mode, file, args) |
|
1717 spawnvpe(mode, file, args, env) |
|
1718 |
|
1719 Execute the program *path* in a new process. |
|
1720 |
|
1721 (Note that the :mod:`subprocess` module provides more powerful facilities for |
|
1722 spawning new processes and retrieving their results; using that module is |
|
1723 preferable to using these functions. Check specially the *Replacing Older |
|
1724 Functions with the subprocess Module* section in that documentation page.) |
|
1725 |
|
1726 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new |
|
1727 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it |
|
1728 exits normally, or ``-signal``, where *signal* is the signal that killed the |
|
1729 process. On Windows, the process id will actually be the process handle, so can |
|
1730 be used with the :func:`waitpid` function. |
|
1731 |
|
1732 The "l" and "v" variants of the :func:`spawn\*` functions differ in how |
|
1733 command-line arguments are passed. The "l" variants are perhaps the easiest |
|
1734 to work with if the number of parameters is fixed when the code is written; the |
|
1735 individual parameters simply become additional parameters to the |
|
1736 :func:`spawnl\*` functions. The "v" variants are good when the number of |
|
1737 parameters is variable, with the arguments being passed in a list or tuple as |
|
1738 the *args* parameter. In either case, the arguments to the child process must |
|
1739 start with the name of the command being run. |
|
1740 |
|
1741 The variants which include a second "p" near the end (:func:`spawnlp`, |
|
1742 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the |
|
1743 :envvar:`PATH` environment variable to locate the program *file*. When the |
|
1744 environment is being replaced (using one of the :func:`spawn\*e` variants, |
|
1745 discussed in the next paragraph), the new environment is used as the source of |
|
1746 the :envvar:`PATH` variable. The other variants, :func:`spawnl`, |
|
1747 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the |
|
1748 :envvar:`PATH` variable to locate the executable; *path* must contain an |
|
1749 appropriate absolute or relative path. |
|
1750 |
|
1751 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe` |
|
1752 (note that these all end in "e"), the *env* parameter must be a mapping |
|
1753 which is used to define the environment variables for the new process (they are |
|
1754 used instead of the current process' environment); the functions |
|
1755 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause |
|
1756 the new process to inherit the environment of the current process. |
|
1757 |
|
1758 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are |
|
1759 equivalent:: |
|
1760 |
|
1761 import os |
|
1762 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') |
|
1763 |
|
1764 L = ['cp', 'index.html', '/dev/null'] |
|
1765 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ) |
|
1766 |
|
1767 Availability: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp` |
|
1768 and :func:`spawnvpe` are not available on Windows. |
|
1769 |
|
1770 .. versionadded:: 1.6 |
|
1771 |
|
1772 |
|
1773 .. data:: P_NOWAIT |
|
1774 P_NOWAITO |
|
1775 |
|
1776 Possible values for the *mode* parameter to the :func:`spawn\*` family of |
|
1777 functions. If either of these values is given, the :func:`spawn\*` functions |
|
1778 will return as soon as the new process has been created, with the process id as |
|
1779 the return value. Availability: Unix, Windows. |
|
1780 |
|
1781 .. versionadded:: 1.6 |
|
1782 |
|
1783 |
|
1784 .. data:: P_WAIT |
|
1785 |
|
1786 Possible value for the *mode* parameter to the :func:`spawn\*` family of |
|
1787 functions. If this is given as *mode*, the :func:`spawn\*` functions will not |
|
1788 return until the new process has run to completion and will return the exit code |
|
1789 of the process the run is successful, or ``-signal`` if a signal kills the |
|
1790 process. Availability: Unix, Windows. |
|
1791 |
|
1792 .. versionadded:: 1.6 |
|
1793 |
|
1794 |
|
1795 .. data:: P_DETACH |
|
1796 P_OVERLAY |
|
1797 |
|
1798 Possible values for the *mode* parameter to the :func:`spawn\*` family of |
|
1799 functions. These are less portable than those listed above. :const:`P_DETACH` |
|
1800 is similar to :const:`P_NOWAIT`, but the new process is detached from the |
|
1801 console of the calling process. If :const:`P_OVERLAY` is used, the current |
|
1802 process will be replaced; the :func:`spawn\*` function will not return. |
|
1803 Availability: Windows. |
|
1804 |
|
1805 .. versionadded:: 1.6 |
|
1806 |
|
1807 |
|
1808 .. function:: startfile(path[, operation]) |
|
1809 |
|
1810 Start a file with its associated application. |
|
1811 |
|
1812 When *operation* is not specified or ``'open'``, this acts like double-clicking |
|
1813 the file in Windows Explorer, or giving the file name as an argument to the |
|
1814 :program:`start` command from the interactive command shell: the file is opened |
|
1815 with whatever application (if any) its extension is associated. |
|
1816 |
|
1817 When another *operation* is given, it must be a "command verb" that specifies |
|
1818 what should be done with the file. Common verbs documented by Microsoft are |
|
1819 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and |
|
1820 ``'find'`` (to be used on directories). |
|
1821 |
|
1822 :func:`startfile` returns as soon as the associated application is launched. |
|
1823 There is no option to wait for the application to close, and no way to retrieve |
|
1824 the application's exit status. The *path* parameter is relative to the current |
|
1825 directory. If you want to use an absolute path, make sure the first character |
|
1826 is not a slash (``'/'``); the underlying Win32 :cfunc:`ShellExecute` function |
|
1827 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that |
|
1828 the path is properly encoded for Win32. Availability: Windows. |
|
1829 |
|
1830 .. versionadded:: 2.0 |
|
1831 |
|
1832 .. versionadded:: 2.5 |
|
1833 The *operation* parameter. |
|
1834 |
|
1835 |
|
1836 .. function:: system(command) |
|
1837 |
|
1838 Execute the command (a string) in a subshell. This is implemented by calling |
|
1839 the Standard C function :cfunc:`system`, and has the same limitations. Changes |
|
1840 to :data:`os.environ`, :data:`sys.stdin`, etc. are not reflected in the |
|
1841 environment of the executed command. |
|
1842 |
|
1843 On Unix, the return value is the exit status of the process encoded in the |
|
1844 format specified for :func:`wait`. Note that POSIX does not specify the meaning |
|
1845 of the return value of the C :cfunc:`system` function, so the return value of |
|
1846 the Python function is system-dependent. |
|
1847 |
|
1848 On Windows, the return value is that returned by the system shell after running |
|
1849 *command*, given by the Windows environment variable :envvar:`COMSPEC`: on |
|
1850 :program:`command.com` systems (Windows 95, 98 and ME) this is always ``0``; on |
|
1851 :program:`cmd.exe` systems (Windows NT, 2000 and XP) this is the exit status of |
|
1852 the command run; on systems using a non-native shell, consult your shell |
|
1853 documentation. |
|
1854 |
|
1855 Availability: Unix, Windows. |
|
1856 |
|
1857 The :mod:`subprocess` module provides more powerful facilities for spawning new |
|
1858 processes and retrieving their results; using that module is preferable to using |
|
1859 this function. Use the :mod:`subprocess` module. Check especially the |
|
1860 :ref:`subprocess-replacements` section. |
|
1861 |
|
1862 |
|
1863 .. function:: times() |
|
1864 |
|
1865 Return a 5-tuple of floating point numbers indicating accumulated (processor or |
|
1866 other) times, in seconds. The items are: user time, system time, children's |
|
1867 user time, children's system time, and elapsed real time since a fixed point in |
|
1868 the past, in that order. See the Unix manual page :manpage:`times(2)` or the |
|
1869 corresponding Windows Platform API documentation. Availability: Unix, |
|
1870 Windows. On Windows, only the first two items are filled, the others are zero. |
|
1871 |
|
1872 |
|
1873 .. function:: wait() |
|
1874 |
|
1875 Wait for completion of a child process, and return a tuple containing its pid |
|
1876 and exit status indication: a 16-bit number, whose low byte is the signal number |
|
1877 that killed the process, and whose high byte is the exit status (if the signal |
|
1878 number is zero); the high bit of the low byte is set if a core file was |
|
1879 produced. Availability: Unix. |
|
1880 |
|
1881 |
|
1882 .. function:: waitpid(pid, options) |
|
1883 |
|
1884 The details of this function differ on Unix and Windows. |
|
1885 |
|
1886 On Unix: Wait for completion of a child process given by process id *pid*, and |
|
1887 return a tuple containing its process id and exit status indication (encoded as |
|
1888 for :func:`wait`). The semantics of the call are affected by the value of the |
|
1889 integer *options*, which should be ``0`` for normal operation. |
|
1890 |
|
1891 If *pid* is greater than ``0``, :func:`waitpid` requests status information for |
|
1892 that specific process. If *pid* is ``0``, the request is for the status of any |
|
1893 child in the process group of the current process. If *pid* is ``-1``, the |
|
1894 request pertains to any child of the current process. If *pid* is less than |
|
1895 ``-1``, status is requested for any process in the process group ``-pid`` (the |
|
1896 absolute value of *pid*). |
|
1897 |
|
1898 An :exc:`OSError` is raised with the value of errno when the syscall |
|
1899 returns -1. |
|
1900 |
|
1901 On Windows: Wait for completion of a process given by process handle *pid*, and |
|
1902 return a tuple containing *pid*, and its exit status shifted left by 8 bits |
|
1903 (shifting makes cross-platform use of the function easier). A *pid* less than or |
|
1904 equal to ``0`` has no special meaning on Windows, and raises an exception. The |
|
1905 value of integer *options* has no effect. *pid* can refer to any process whose |
|
1906 id is known, not necessarily a child process. The :func:`spawn` functions called |
|
1907 with :const:`P_NOWAIT` return suitable process handles. |
|
1908 |
|
1909 |
|
1910 .. function:: wait3([options]) |
|
1911 |
|
1912 Similar to :func:`waitpid`, except no process id argument is given and a |
|
1913 3-element tuple containing the child's process id, exit status indication, and |
|
1914 resource usage information is returned. Refer to :mod:`resource`.\ |
|
1915 :func:`getrusage` for details on resource usage information. The option |
|
1916 argument is the same as that provided to :func:`waitpid` and :func:`wait4`. |
|
1917 Availability: Unix. |
|
1918 |
|
1919 .. versionadded:: 2.5 |
|
1920 |
|
1921 |
|
1922 .. function:: wait4(pid, options) |
|
1923 |
|
1924 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's |
|
1925 process id, exit status indication, and resource usage information is returned. |
|
1926 Refer to :mod:`resource`.\ :func:`getrusage` for details on resource usage |
|
1927 information. The arguments to :func:`wait4` are the same as those provided to |
|
1928 :func:`waitpid`. Availability: Unix. |
|
1929 |
|
1930 .. versionadded:: 2.5 |
|
1931 |
|
1932 |
|
1933 .. data:: WNOHANG |
|
1934 |
|
1935 The option for :func:`waitpid` to return immediately if no child process status |
|
1936 is available immediately. The function returns ``(0, 0)`` in this case. |
|
1937 Availability: Unix. |
|
1938 |
|
1939 |
|
1940 .. data:: WCONTINUED |
|
1941 |
|
1942 This option causes child processes to be reported if they have been continued |
|
1943 from a job control stop since their status was last reported. Availability: Some |
|
1944 Unix systems. |
|
1945 |
|
1946 .. versionadded:: 2.3 |
|
1947 |
|
1948 |
|
1949 .. data:: WUNTRACED |
|
1950 |
|
1951 This option causes child processes to be reported if they have been stopped but |
|
1952 their current state has not been reported since they were stopped. Availability: |
|
1953 Unix. |
|
1954 |
|
1955 .. versionadded:: 2.3 |
|
1956 |
|
1957 The following functions take a process status code as returned by |
|
1958 :func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be |
|
1959 used to determine the disposition of a process. |
|
1960 |
|
1961 |
|
1962 .. function:: WCOREDUMP(status) |
|
1963 |
|
1964 Return ``True`` if a core dump was generated for the process, otherwise |
|
1965 return ``False``. Availability: Unix. |
|
1966 |
|
1967 .. versionadded:: 2.3 |
|
1968 |
|
1969 |
|
1970 .. function:: WIFCONTINUED(status) |
|
1971 |
|
1972 Return ``True`` if the process has been continued from a job control stop, |
|
1973 otherwise return ``False``. Availability: Unix. |
|
1974 |
|
1975 .. versionadded:: 2.3 |
|
1976 |
|
1977 |
|
1978 .. function:: WIFSTOPPED(status) |
|
1979 |
|
1980 Return ``True`` if the process has been stopped, otherwise return |
|
1981 ``False``. Availability: Unix. |
|
1982 |
|
1983 |
|
1984 .. function:: WIFSIGNALED(status) |
|
1985 |
|
1986 Return ``True`` if the process exited due to a signal, otherwise return |
|
1987 ``False``. Availability: Unix. |
|
1988 |
|
1989 |
|
1990 .. function:: WIFEXITED(status) |
|
1991 |
|
1992 Return ``True`` if the process exited using the :manpage:`exit(2)` system call, |
|
1993 otherwise return ``False``. Availability: Unix. |
|
1994 |
|
1995 |
|
1996 .. function:: WEXITSTATUS(status) |
|
1997 |
|
1998 If ``WIFEXITED(status)`` is true, return the integer parameter to the |
|
1999 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless. |
|
2000 Availability: Unix. |
|
2001 |
|
2002 |
|
2003 .. function:: WSTOPSIG(status) |
|
2004 |
|
2005 Return the signal which caused the process to stop. Availability: Unix. |
|
2006 |
|
2007 |
|
2008 .. function:: WTERMSIG(status) |
|
2009 |
|
2010 Return the signal which caused the process to exit. Availability: Unix. |
|
2011 |
|
2012 |
|
2013 .. _os-path: |
|
2014 |
|
2015 Miscellaneous System Information |
|
2016 -------------------------------- |
|
2017 |
|
2018 |
|
2019 .. function:: confstr(name) |
|
2020 |
|
2021 Return string-valued system configuration values. *name* specifies the |
|
2022 configuration value to retrieve; it may be a string which is the name of a |
|
2023 defined system value; these names are specified in a number of standards (POSIX, |
|
2024 Unix 95, Unix 98, and others). Some platforms define additional names as well. |
|
2025 The names known to the host operating system are given as the keys of the |
|
2026 ``confstr_names`` dictionary. For configuration variables not included in that |
|
2027 mapping, passing an integer for *name* is also accepted. Availability: |
|
2028 Unix. |
|
2029 |
|
2030 If the configuration value specified by *name* isn't defined, ``None`` is |
|
2031 returned. |
|
2032 |
|
2033 If *name* is a string and is not known, :exc:`ValueError` is raised. If a |
|
2034 specific value for *name* is not supported by the host system, even if it is |
|
2035 included in ``confstr_names``, an :exc:`OSError` is raised with |
|
2036 :const:`errno.EINVAL` for the error number. |
|
2037 |
|
2038 |
|
2039 .. data:: confstr_names |
|
2040 |
|
2041 Dictionary mapping names accepted by :func:`confstr` to the integer values |
|
2042 defined for those names by the host operating system. This can be used to |
|
2043 determine the set of names known to the system. Availability: Unix. |
|
2044 |
|
2045 |
|
2046 .. function:: getloadavg() |
|
2047 |
|
2048 Return the number of processes in the system run queue averaged over the last |
|
2049 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was |
|
2050 unobtainable. Availability: Unix. |
|
2051 |
|
2052 .. versionadded:: 2.3 |
|
2053 |
|
2054 |
|
2055 .. function:: sysconf(name) |
|
2056 |
|
2057 Return integer-valued system configuration values. If the configuration value |
|
2058 specified by *name* isn't defined, ``-1`` is returned. The comments regarding |
|
2059 the *name* parameter for :func:`confstr` apply here as well; the dictionary that |
|
2060 provides information on the known names is given by ``sysconf_names``. |
|
2061 Availability: Unix. |
|
2062 |
|
2063 |
|
2064 .. data:: sysconf_names |
|
2065 |
|
2066 Dictionary mapping names accepted by :func:`sysconf` to the integer values |
|
2067 defined for those names by the host operating system. This can be used to |
|
2068 determine the set of names known to the system. Availability: Unix. |
|
2069 |
|
2070 The following data values are used to support path manipulation operations. These |
|
2071 are defined for all platforms. |
|
2072 |
|
2073 Higher-level operations on pathnames are defined in the :mod:`os.path` module. |
|
2074 |
|
2075 |
|
2076 .. data:: curdir |
|
2077 |
|
2078 The constant string used by the operating system to refer to the current |
|
2079 directory. This is ``'.'`` for Windows and POSIX. Also available via |
|
2080 :mod:`os.path`. |
|
2081 |
|
2082 |
|
2083 .. data:: pardir |
|
2084 |
|
2085 The constant string used by the operating system to refer to the parent |
|
2086 directory. This is ``'..'`` for Windows and POSIX. Also available via |
|
2087 :mod:`os.path`. |
|
2088 |
|
2089 |
|
2090 .. data:: sep |
|
2091 |
|
2092 The character used by the operating system to separate pathname components. |
|
2093 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this |
|
2094 is not sufficient to be able to parse or concatenate pathnames --- use |
|
2095 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally |
|
2096 useful. Also available via :mod:`os.path`. |
|
2097 |
|
2098 |
|
2099 .. data:: altsep |
|
2100 |
|
2101 An alternative character used by the operating system to separate pathname |
|
2102 components, or ``None`` if only one separator character exists. This is set to |
|
2103 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via |
|
2104 :mod:`os.path`. |
|
2105 |
|
2106 |
|
2107 .. data:: extsep |
|
2108 |
|
2109 The character which separates the base filename from the extension; for example, |
|
2110 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`. |
|
2111 |
|
2112 .. versionadded:: 2.2 |
|
2113 |
|
2114 |
|
2115 .. data:: pathsep |
|
2116 |
|
2117 The character conventionally used by the operating system to separate search |
|
2118 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for |
|
2119 Windows. Also available via :mod:`os.path`. |
|
2120 |
|
2121 |
|
2122 .. data:: defpath |
|
2123 |
|
2124 The default search path used by :func:`exec\*p\*` and :func:`spawn\*p\*` if the |
|
2125 environment doesn't have a ``'PATH'`` key. Also available via :mod:`os.path`. |
|
2126 |
|
2127 |
|
2128 .. data:: linesep |
|
2129 |
|
2130 The string used to separate (or, rather, terminate) lines on the current |
|
2131 platform. This may be a single character, such as ``'\n'`` for POSIX, or |
|
2132 multiple characters, for example, ``'\r\n'`` for Windows. Do not use |
|
2133 *os.linesep* as a line terminator when writing files opened in text mode (the |
|
2134 default); use a single ``'\n'`` instead, on all platforms. |
|
2135 |
|
2136 |
|
2137 .. data:: devnull |
|
2138 |
|
2139 The file path of the null device. For example: ``'/dev/null'`` for POSIX. |
|
2140 Also available via :mod:`os.path`. |
|
2141 |
|
2142 .. versionadded:: 2.4 |
|
2143 |
|
2144 |
|
2145 .. _os-miscfunc: |
|
2146 |
|
2147 Miscellaneous Functions |
|
2148 ----------------------- |
|
2149 |
|
2150 |
|
2151 .. function:: urandom(n) |
|
2152 |
|
2153 Return a string of *n* random bytes suitable for cryptographic use. |
|
2154 |
|
2155 This function returns random bytes from an OS-specific randomness source. The |
|
2156 returned data should be unpredictable enough for cryptographic applications, |
|
2157 though its exact quality depends on the OS implementation. On a UNIX-like |
|
2158 system this will query /dev/urandom, and on Windows it will use CryptGenRandom. |
|
2159 If a randomness source is not found, :exc:`NotImplementedError` will be raised. |
|
2160 |
|
2161 .. versionadded:: 2.4 |
|
2162 |