1:mod:`os` --- Miscellaneous operating system interfaces 2======================================================= 3 4.. module:: os 5 :synopsis: Miscellaneous operating system interfaces. 6 7**Source code:** :source:`Lib/os.py` 8 9-------------- 10 11This module provides a portable way of using operating system dependent 12functionality. If you just want to read or write a file see :func:`open`, if 13you want to manipulate paths, see the :mod:`os.path` module, and if you want to 14read all the lines in all the files on the command line see the :mod:`fileinput` 15module. For creating temporary files and directories see the :mod:`tempfile` 16module, and for high-level file and directory handling see the :mod:`shutil` 17module. 18 19Notes on the availability of these functions: 20 21* The design of all built-in operating system dependent modules of Python is 22 such that as long as the same functionality is available, it uses the same 23 interface; for example, the function ``os.stat(path)`` returns stat 24 information about *path* in the same format (which happens to have originated 25 with the POSIX interface). 26 27* Extensions peculiar to a particular operating system are also available 28 through the :mod:`os` module, but using them is of course a threat to 29 portability. 30 31* All functions accepting path or file names accept both bytes and string 32 objects, and result in an object of the same type, if a path or file name is 33 returned. 34 35* On VxWorks, os.fork, os.execv and os.spawn*p* are not supported. 36 37.. note:: 38 39 All functions in this module raise :exc:`OSError` (or subclasses thereof) in 40 the case of invalid or inaccessible file names and paths, or other arguments 41 that have the correct type, but are not accepted by the operating system. 42 43.. exception:: error 44 45 An alias for the built-in :exc:`OSError` exception. 46 47 48.. data:: name 49 50 The name of the operating system dependent module imported. The following 51 names have currently been registered: ``'posix'``, ``'nt'``, 52 ``'java'``. 53 54 .. seealso:: 55 :attr:`sys.platform` has a finer granularity. :func:`os.uname` gives 56 system-dependent version information. 57 58 The :mod:`platform` module provides detailed checks for the 59 system's identity. 60 61 62.. _os-filenames: 63.. _filesystem-encoding: 64 65File Names, Command Line Arguments, and Environment Variables 66------------------------------------------------------------- 67 68In Python, file names, command line arguments, and environment variables are 69represented using the string type. On some systems, decoding these strings to 70and from bytes is necessary before passing them to the operating system. Python 71uses the file system encoding to perform this conversion (see 72:func:`sys.getfilesystemencoding`). 73 74.. versionchanged:: 3.1 75 On some systems, conversion using the file system encoding may fail. In this 76 case, Python uses the :ref:`surrogateescape encoding error handler 77 <surrogateescape>`, which means that undecodable bytes are replaced by a 78 Unicode character U+DCxx on decoding, and these are again translated to the 79 original byte on encoding. 80 81 82The file system encoding must guarantee to successfully decode all bytes 83below 128. If the file system encoding fails to provide this guarantee, API 84functions may raise UnicodeErrors. 85 86 87.. _os-procinfo: 88 89Process Parameters 90------------------ 91 92These functions and data items provide information and operate on the current 93process and user. 94 95 96.. function:: ctermid() 97 98 Return the filename corresponding to the controlling terminal of the process. 99 100 .. availability:: Unix. 101 102 103.. data:: environ 104 105 A :term:`mapping` object representing the string environment. For example, 106 ``environ['HOME']`` is the pathname of your home directory (on some platforms), 107 and is equivalent to ``getenv("HOME")`` in C. 108 109 This mapping is captured the first time the :mod:`os` module is imported, 110 typically during Python startup as part of processing :file:`site.py`. Changes 111 to the environment made after this time are not reflected in ``os.environ``, 112 except for changes made by modifying ``os.environ`` directly. 113 114 If the platform supports the :func:`putenv` function, this mapping may be used 115 to modify the environment as well as query the environment. :func:`putenv` will 116 be called automatically when the mapping is modified. 117 118 On Unix, keys and values use :func:`sys.getfilesystemencoding` and 119 ``'surrogateescape'`` error handler. Use :data:`environb` if you would like 120 to use a different encoding. 121 122 .. note:: 123 124 Calling :func:`putenv` directly does not change ``os.environ``, so it's better 125 to modify ``os.environ``. 126 127 .. note:: 128 129 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may 130 cause memory leaks. Refer to the system documentation for 131 :c:func:`putenv`. 132 133 If :func:`putenv` is not provided, a modified copy of this mapping may be 134 passed to the appropriate process-creation functions to cause child processes 135 to use a modified environment. 136 137 If the platform supports the :func:`unsetenv` function, you can delete items in 138 this mapping to unset environment variables. :func:`unsetenv` will be called 139 automatically when an item is deleted from ``os.environ``, and when 140 one of the :meth:`pop` or :meth:`clear` methods is called. 141 142 143.. data:: environb 144 145 Bytes version of :data:`environ`: a :term:`mapping` object representing the 146 environment as byte strings. :data:`environ` and :data:`environb` are 147 synchronized (modify :data:`environb` updates :data:`environ`, and vice 148 versa). 149 150 :data:`environb` is only available if :data:`supports_bytes_environ` is 151 ``True``. 152 153 .. versionadded:: 3.2 154 155 156.. function:: chdir(path) 157 fchdir(fd) 158 getcwd() 159 :noindex: 160 161 These functions are described in :ref:`os-file-dir`. 162 163 164.. function:: fsencode(filename) 165 166 Encode :term:`path-like <path-like object>` *filename* to the filesystem 167 encoding with ``'surrogateescape'`` error handler, or ``'strict'`` on 168 Windows; return :class:`bytes` unchanged. 169 170 :func:`fsdecode` is the reverse function. 171 172 .. versionadded:: 3.2 173 174 .. versionchanged:: 3.6 175 Support added to accept objects implementing the :class:`os.PathLike` 176 interface. 177 178 179.. function:: fsdecode(filename) 180 181 Decode the :term:`path-like <path-like object>` *filename* from the 182 filesystem encoding with ``'surrogateescape'`` error handler, or ``'strict'`` 183 on Windows; return :class:`str` unchanged. 184 185 :func:`fsencode` is the reverse function. 186 187 .. versionadded:: 3.2 188 189 .. versionchanged:: 3.6 190 Support added to accept objects implementing the :class:`os.PathLike` 191 interface. 192 193 194.. function:: fspath(path) 195 196 Return the file system representation of the path. 197 198 If :class:`str` or :class:`bytes` is passed in, it is returned unchanged. 199 Otherwise :meth:`~os.PathLike.__fspath__` is called and its value is 200 returned as long as it is a :class:`str` or :class:`bytes` object. 201 In all other cases, :exc:`TypeError` is raised. 202 203 .. versionadded:: 3.6 204 205 206.. class:: PathLike 207 208 An :term:`abstract base class` for objects representing a file system path, 209 e.g. :class:`pathlib.PurePath`. 210 211 .. versionadded:: 3.6 212 213 .. abstractmethod:: __fspath__() 214 215 Return the file system path representation of the object. 216 217 The method should only return a :class:`str` or :class:`bytes` object, 218 with the preference being for :class:`str`. 219 220 221.. function:: getenv(key, default=None) 222 223 Return the value of the environment variable *key* if it exists, or 224 *default* if it doesn't. *key*, *default* and the result are str. 225 226 On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding` 227 and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you 228 would like to use a different encoding. 229 230 .. availability:: most flavors of Unix, Windows. 231 232 233.. function:: getenvb(key, default=None) 234 235 Return the value of the environment variable *key* if it exists, or 236 *default* if it doesn't. *key*, *default* and the result are bytes. 237 238 :func:`getenvb` is only available if :data:`supports_bytes_environ` 239 is ``True``. 240 241 .. availability:: most flavors of Unix. 242 243 .. versionadded:: 3.2 244 245 246.. function:: get_exec_path(env=None) 247 248 Returns the list of directories that will be searched for a named 249 executable, similar to a shell, when launching a process. 250 *env*, when specified, should be an environment variable dictionary 251 to lookup the PATH in. 252 By default, when *env* is ``None``, :data:`environ` is used. 253 254 .. versionadded:: 3.2 255 256 257.. function:: getegid() 258 259 Return the effective group id of the current process. This corresponds to the 260 "set id" bit on the file being executed in the current process. 261 262 .. availability:: Unix. 263 264 265.. function:: geteuid() 266 267 .. index:: single: user; effective id 268 269 Return the current process's effective user id. 270 271 .. availability:: Unix. 272 273 274.. function:: getgid() 275 276 .. index:: single: process; group 277 278 Return the real group id of the current process. 279 280 .. availability:: Unix. 281 282 283.. function:: getgrouplist(user, group) 284 285 Return list of group ids that *user* belongs to. If *group* is not in the 286 list, it is included; typically, *group* is specified as the group ID 287 field from the password record for *user*. 288 289 .. availability:: Unix. 290 291 .. versionadded:: 3.3 292 293 294.. function:: getgroups() 295 296 Return list of supplemental group ids associated with the current process. 297 298 .. availability:: Unix. 299 300 .. note:: 301 302 On Mac OS X, :func:`getgroups` behavior differs somewhat from 303 other Unix platforms. If the Python interpreter was built with a 304 deployment target of :const:`10.5` or earlier, :func:`getgroups` returns 305 the list of effective group ids associated with the current user process; 306 this list is limited to a system-defined number of entries, typically 16, 307 and may be modified by calls to :func:`setgroups` if suitably privileged. 308 If built with a deployment target greater than :const:`10.5`, 309 :func:`getgroups` returns the current group access list for the user 310 associated with the effective user id of the process; the group access 311 list may change over the lifetime of the process, it is not affected by 312 calls to :func:`setgroups`, and its length is not limited to 16. The 313 deployment target value, :const:`MACOSX_DEPLOYMENT_TARGET`, can be 314 obtained with :func:`sysconfig.get_config_var`. 315 316 317.. function:: getlogin() 318 319 Return the name of the user logged in on the controlling terminal of the 320 process. For most purposes, it is more useful to use 321 :func:`getpass.getuser` since the latter checks the environment variables 322 :envvar:`LOGNAME` or :envvar:`USERNAME` to find out who the user is, and 323 falls back to ``pwd.getpwuid(os.getuid())[0]`` to get the login name of the 324 current real user id. 325 326 .. availability:: Unix, Windows. 327 328 329.. function:: getpgid(pid) 330 331 Return the process group id of the process with process id *pid*. If *pid* is 0, 332 the process group id of the current process is returned. 333 334 .. availability:: Unix. 335 336.. function:: getpgrp() 337 338 .. index:: single: process; group 339 340 Return the id of the current process group. 341 342 .. availability:: Unix. 343 344 345.. function:: getpid() 346 347 .. index:: single: process; id 348 349 Return the current process id. 350 351 352.. function:: getppid() 353 354 .. index:: single: process; id of parent 355 356 Return the parent's process id. When the parent process has exited, on Unix 357 the id returned is the one of the init process (1), on Windows it is still 358 the same id, which may be already reused by another process. 359 360 .. availability:: Unix, Windows. 361 362 .. versionchanged:: 3.2 363 Added support for Windows. 364 365 366.. function:: getpriority(which, who) 367 368 .. index:: single: process; scheduling priority 369 370 Get program scheduling priority. The value *which* is one of 371 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who* 372 is interpreted relative to *which* (a process identifier for 373 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a 374 user ID for :const:`PRIO_USER`). A zero value for *who* denotes 375 (respectively) the calling process, the process group of the calling process, 376 or the real user ID of the calling process. 377 378 .. availability:: Unix. 379 380 .. versionadded:: 3.3 381 382 383.. data:: PRIO_PROCESS 384 PRIO_PGRP 385 PRIO_USER 386 387 Parameters for the :func:`getpriority` and :func:`setpriority` functions. 388 389 .. availability:: Unix. 390 391 .. versionadded:: 3.3 392 393 394.. function:: getresuid() 395 396 Return a tuple (ruid, euid, suid) denoting the current process's 397 real, effective, and saved user ids. 398 399 .. availability:: Unix. 400 401 .. versionadded:: 3.2 402 403 404.. function:: getresgid() 405 406 Return a tuple (rgid, egid, sgid) denoting the current process's 407 real, effective, and saved group ids. 408 409 .. availability:: Unix. 410 411 .. versionadded:: 3.2 412 413 414.. function:: getuid() 415 416 .. index:: single: user; id 417 418 Return the current process's real user id. 419 420 .. availability:: Unix. 421 422 423.. function:: initgroups(username, gid) 424 425 Call the system initgroups() to initialize the group access list with all of 426 the groups of which the specified username is a member, plus the specified 427 group id. 428 429 .. availability:: Unix. 430 431 .. versionadded:: 3.2 432 433 434.. function:: putenv(key, value) 435 436 .. index:: single: environment variables; setting 437 438 Set the environment variable named *key* to the string *value*. Such 439 changes to the environment affect subprocesses started with :func:`os.system`, 440 :func:`popen` or :func:`fork` and :func:`execv`. 441 442 .. availability:: most flavors of Unix, Windows. 443 444 .. note:: 445 446 On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may 447 cause memory leaks. Refer to the system documentation for putenv. 448 449 When :func:`putenv` is supported, assignments to items in ``os.environ`` are 450 automatically translated into corresponding calls to :func:`putenv`; however, 451 calls to :func:`putenv` don't update ``os.environ``, so it is actually 452 preferable to assign to items of ``os.environ``. 453 454 455.. function:: setegid(egid) 456 457 Set the current process's effective group id. 458 459 .. availability:: Unix. 460 461 462.. function:: seteuid(euid) 463 464 Set the current process's effective user id. 465 466 .. availability:: Unix. 467 468 469.. function:: setgid(gid) 470 471 Set the current process' group id. 472 473 .. availability:: Unix. 474 475 476.. function:: setgroups(groups) 477 478 Set the list of supplemental group ids associated with the current process to 479 *groups*. *groups* must be a sequence, and each element must be an integer 480 identifying a group. This operation is typically available only to the superuser. 481 482 .. availability:: Unix. 483 484 .. note:: On Mac OS X, the length of *groups* may not exceed the 485 system-defined maximum number of effective group ids, typically 16. 486 See the documentation for :func:`getgroups` for cases where it may not 487 return the same group list set by calling setgroups(). 488 489.. function:: setpgrp() 490 491 Call the system call :c:func:`setpgrp` or ``setpgrp(0, 0)`` depending on 492 which version is implemented (if any). See the Unix manual for the semantics. 493 494 .. availability:: Unix. 495 496 497.. function:: setpgid(pid, pgrp) 498 499 Call the system call :c:func:`setpgid` to set the process group id of the 500 process with id *pid* to the process group with id *pgrp*. See the Unix manual 501 for the semantics. 502 503 .. availability:: Unix. 504 505 506.. function:: setpriority(which, who, priority) 507 508 .. index:: single: process; scheduling priority 509 510 Set program scheduling priority. The value *which* is one of 511 :const:`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who* 512 is interpreted relative to *which* (a process identifier for 513 :const:`PRIO_PROCESS`, process group identifier for :const:`PRIO_PGRP`, and a 514 user ID for :const:`PRIO_USER`). A zero value for *who* denotes 515 (respectively) the calling process, the process group of the calling process, 516 or the real user ID of the calling process. 517 *priority* is a value in the range -20 to 19. The default priority is 0; 518 lower priorities cause more favorable scheduling. 519 520 .. availability:: Unix. 521 522 .. versionadded:: 3.3 523 524 525.. function:: setregid(rgid, egid) 526 527 Set the current process's real and effective group ids. 528 529 .. availability:: Unix. 530 531 532.. function:: setresgid(rgid, egid, sgid) 533 534 Set the current process's real, effective, and saved group ids. 535 536 .. availability:: Unix. 537 538 .. versionadded:: 3.2 539 540 541.. function:: setresuid(ruid, euid, suid) 542 543 Set the current process's real, effective, and saved user ids. 544 545 .. availability:: Unix. 546 547 .. versionadded:: 3.2 548 549 550.. function:: setreuid(ruid, euid) 551 552 Set the current process's real and effective user ids. 553 554 .. availability:: Unix. 555 556 557.. function:: getsid(pid) 558 559 Call the system call :c:func:`getsid`. See the Unix manual for the semantics. 560 561 .. availability:: Unix. 562 563 564.. function:: setsid() 565 566 Call the system call :c:func:`setsid`. See the Unix manual for the semantics. 567 568 .. availability:: Unix. 569 570 571.. function:: setuid(uid) 572 573 .. index:: single: user; id, setting 574 575 Set the current process's user id. 576 577 .. availability:: Unix. 578 579 580.. placed in this section since it relates to errno.... a little weak 581.. function:: strerror(code) 582 583 Return the error message corresponding to the error code in *code*. 584 On platforms where :c:func:`strerror` returns ``NULL`` when given an unknown 585 error number, :exc:`ValueError` is raised. 586 587 588.. data:: supports_bytes_environ 589 590 ``True`` if the native OS type of the environment is bytes (eg. ``False`` on 591 Windows). 592 593 .. versionadded:: 3.2 594 595 596.. function:: umask(mask) 597 598 Set the current numeric umask and return the previous umask. 599 600 601.. function:: uname() 602 603 .. index:: 604 single: gethostname() (in module socket) 605 single: gethostbyaddr() (in module socket) 606 607 Returns information identifying the current operating system. 608 The return value is an object with five attributes: 609 610 * :attr:`sysname` - operating system name 611 * :attr:`nodename` - name of machine on network (implementation-defined) 612 * :attr:`release` - operating system release 613 * :attr:`version` - operating system version 614 * :attr:`machine` - hardware identifier 615 616 For backwards compatibility, this object is also iterable, behaving 617 like a five-tuple containing :attr:`sysname`, :attr:`nodename`, 618 :attr:`release`, :attr:`version`, and :attr:`machine` 619 in that order. 620 621 Some systems truncate :attr:`nodename` to 8 characters or to the 622 leading component; a better way to get the hostname is 623 :func:`socket.gethostname` or even 624 ``socket.gethostbyaddr(socket.gethostname())``. 625 626 .. availability:: recent flavors of Unix. 627 628 .. versionchanged:: 3.3 629 Return type changed from a tuple to a tuple-like object 630 with named attributes. 631 632 633.. function:: unsetenv(key) 634 635 .. index:: single: environment variables; deleting 636 637 Unset (delete) the environment variable named *key*. Such changes to the 638 environment affect subprocesses started with :func:`os.system`, :func:`popen` or 639 :func:`fork` and :func:`execv`. 640 641 When :func:`unsetenv` is supported, deletion of items in ``os.environ`` is 642 automatically translated into a corresponding call to :func:`unsetenv`; however, 643 calls to :func:`unsetenv` don't update ``os.environ``, so it is actually 644 preferable to delete items of ``os.environ``. 645 646 .. availability:: most flavors of Unix, Windows. 647 648 649.. _os-newstreams: 650 651File Object Creation 652-------------------- 653 654These functions create new :term:`file objects <file object>`. (See also 655:func:`~os.open` for opening file descriptors.) 656 657 658.. function:: fdopen(fd, *args, **kwargs) 659 660 Return an open file object connected to the file descriptor *fd*. This is an 661 alias of the :func:`open` built-in function and accepts the same arguments. 662 The only difference is that the first argument of :func:`fdopen` must always 663 be an integer. 664 665 666.. _os-fd-ops: 667 668File Descriptor Operations 669-------------------------- 670 671These functions operate on I/O streams referenced using file descriptors. 672 673File descriptors are small integers corresponding to a file that has been opened 674by the current process. For example, standard input is usually file descriptor 6750, standard output is 1, and standard error is 2. Further files opened by a 676process will then be assigned 3, 4, 5, and so forth. The name "file descriptor" 677is slightly deceptive; on Unix platforms, sockets and pipes are also referenced 678by file descriptors. 679 680The :meth:`~io.IOBase.fileno` method can be used to obtain the file descriptor 681associated with a :term:`file object` when required. Note that using the file 682descriptor directly will bypass the file object methods, ignoring aspects such 683as internal buffering of data. 684 685 686.. function:: close(fd) 687 688 Close file descriptor *fd*. 689 690 .. note:: 691 692 This function is intended for low-level I/O and must be applied to a file 693 descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file 694 object" returned by the built-in function :func:`open` or by :func:`popen` or 695 :func:`fdopen`, use its :meth:`~io.IOBase.close` method. 696 697 698.. function:: closerange(fd_low, fd_high) 699 700 Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive), 701 ignoring errors. Equivalent to (but much faster than):: 702 703 for fd in range(fd_low, fd_high): 704 try: 705 os.close(fd) 706 except OSError: 707 pass 708 709 710.. function:: copy_file_range(src, dst, count, offset_src=None, offset_dst=None) 711 712 Copy *count* bytes from file descriptor *src*, starting from offset 713 *offset_src*, to file descriptor *dst*, starting from offset *offset_dst*. 714 If *offset_src* is None, then *src* is read from the current position; 715 respectively for *offset_dst*. The files pointed by *src* and *dst* 716 must reside in the same filesystem, otherwise an :exc:`OSError` is 717 raised with :attr:`~OSError.errno` set to :data:`errno.EXDEV`. 718 719 This copy is done without the additional cost of transferring data 720 from the kernel to user space and then back into the kernel. Additionally, 721 some filesystems could implement extra optimizations. The copy is done as if 722 both files are opened as binary. 723 724 The return value is the amount of bytes copied. This could be less than the 725 amount requested. 726 727 .. availability:: Linux kernel >= 4.5 or glibc >= 2.27. 728 729 .. versionadded:: 3.8 730 731 732.. function:: device_encoding(fd) 733 734 Return a string describing the encoding of the device associated with *fd* 735 if it is connected to a terminal; else return :const:`None`. 736 737 738.. function:: dup(fd) 739 740 Return a duplicate of file descriptor *fd*. The new file descriptor is 741 :ref:`non-inheritable <fd_inheritance>`. 742 743 On Windows, when duplicating a standard stream (0: stdin, 1: stdout, 744 2: stderr), the new file descriptor is :ref:`inheritable 745 <fd_inheritance>`. 746 747 .. versionchanged:: 3.4 748 The new file descriptor is now non-inheritable. 749 750 751.. function:: dup2(fd, fd2, inheritable=True) 752 753 Duplicate file descriptor *fd* to *fd2*, closing the latter first if 754 necessary. Return *fd2*. The new file descriptor is :ref:`inheritable 755 <fd_inheritance>` by default or non-inheritable if *inheritable* 756 is ``False``. 757 758 .. versionchanged:: 3.4 759 Add the optional *inheritable* parameter. 760 761 .. versionchanged:: 3.7 762 Return *fd2* on success. Previously, ``None`` was always returned. 763 764 765.. function:: fchmod(fd, mode) 766 767 Change the mode of the file given by *fd* to the numeric *mode*. See the 768 docs for :func:`chmod` for possible values of *mode*. As of Python 3.3, this 769 is equivalent to ``os.chmod(fd, mode)``. 770 771 .. availability:: Unix. 772 773 774.. function:: fchown(fd, uid, gid) 775 776 Change the owner and group id of the file given by *fd* to the numeric *uid* 777 and *gid*. To leave one of the ids unchanged, set it to -1. See 778 :func:`chown`. As of Python 3.3, this is equivalent to ``os.chown(fd, uid, 779 gid)``. 780 781 .. availability:: Unix. 782 783 784.. function:: fdatasync(fd) 785 786 Force write of file with filedescriptor *fd* to disk. Does not force update of 787 metadata. 788 789 .. availability:: Unix. 790 791 .. note:: 792 This function is not available on MacOS. 793 794 795.. function:: fpathconf(fd, name) 796 797 Return system configuration information relevant to an open file. *name* 798 specifies the configuration value to retrieve; it may be a string which is the 799 name of a defined system value; these names are specified in a number of 800 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define 801 additional names as well. The names known to the host operating system are 802 given in the ``pathconf_names`` dictionary. For configuration variables not 803 included in that mapping, passing an integer for *name* is also accepted. 804 805 If *name* is a string and is not known, :exc:`ValueError` is raised. If a 806 specific value for *name* is not supported by the host system, even if it is 807 included in ``pathconf_names``, an :exc:`OSError` is raised with 808 :const:`errno.EINVAL` for the error number. 809 810 As of Python 3.3, this is equivalent to ``os.pathconf(fd, name)``. 811 812 .. availability:: Unix. 813 814 815.. function:: fstat(fd) 816 817 Get the status of the file descriptor *fd*. Return a :class:`stat_result` 818 object. 819 820 As of Python 3.3, this is equivalent to ``os.stat(fd)``. 821 822 .. seealso:: 823 824 The :func:`.stat` function. 825 826 827.. function:: fstatvfs(fd) 828 829 Return information about the filesystem containing the file associated with 830 file descriptor *fd*, like :func:`statvfs`. As of Python 3.3, this is 831 equivalent to ``os.statvfs(fd)``. 832 833 .. availability:: Unix. 834 835 836.. function:: fsync(fd) 837 838 Force write of file with filedescriptor *fd* to disk. On Unix, this calls the 839 native :c:func:`fsync` function; on Windows, the MS :c:func:`_commit` function. 840 841 If you're starting with a buffered Python :term:`file object` *f*, first do 842 ``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all internal 843 buffers associated with *f* are written to disk. 844 845 .. availability:: Unix, Windows. 846 847 848.. function:: ftruncate(fd, length) 849 850 Truncate the file corresponding to file descriptor *fd*, so that it is at 851 most *length* bytes in size. As of Python 3.3, this is equivalent to 852 ``os.truncate(fd, length)``. 853 854 .. audit-event:: os.truncate fd,length os.ftruncate 855 856 .. availability:: Unix, Windows. 857 858 .. versionchanged:: 3.5 859 Added support for Windows 860 861 862.. function:: get_blocking(fd) 863 864 Get the blocking mode of the file descriptor: ``False`` if the 865 :data:`O_NONBLOCK` flag is set, ``True`` if the flag is cleared. 866 867 See also :func:`set_blocking` and :meth:`socket.socket.setblocking`. 868 869 .. availability:: Unix. 870 871 .. versionadded:: 3.5 872 873 874.. function:: isatty(fd) 875 876 Return ``True`` if the file descriptor *fd* is open and connected to a 877 tty(-like) device, else ``False``. 878 879 880.. function:: lockf(fd, cmd, len) 881 882 Apply, test or remove a POSIX lock on an open file descriptor. 883 *fd* is an open file descriptor. 884 *cmd* specifies the command to use - one of :data:`F_LOCK`, :data:`F_TLOCK`, 885 :data:`F_ULOCK` or :data:`F_TEST`. 886 *len* specifies the section of the file to lock. 887 888 .. availability:: Unix. 889 890 .. versionadded:: 3.3 891 892 893.. data:: F_LOCK 894 F_TLOCK 895 F_ULOCK 896 F_TEST 897 898 Flags that specify what action :func:`lockf` will take. 899 900 .. availability:: Unix. 901 902 .. versionadded:: 3.3 903 904 905.. function:: lseek(fd, pos, how) 906 907 Set the current position of file descriptor *fd* to position *pos*, modified 908 by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the 909 beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the 910 current position; :const:`SEEK_END` or ``2`` to set it relative to the end of 911 the file. Return the new cursor position in bytes, starting from the beginning. 912 913 914.. data:: SEEK_SET 915 SEEK_CUR 916 SEEK_END 917 918 Parameters to the :func:`lseek` function. Their values are 0, 1, and 2, 919 respectively. 920 921 .. versionadded:: 3.3 922 Some operating systems could support additional values, like 923 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`. 924 925 926.. function:: open(path, flags, mode=0o777, *, dir_fd=None) 927 928 Open the file *path* and set various flags according to *flags* and possibly 929 its mode according to *mode*. When computing *mode*, the current umask value 930 is first masked out. Return the file descriptor for the newly opened file. 931 The new file descriptor is :ref:`non-inheritable <fd_inheritance>`. 932 933 For a description of the flag and mode values, see the C run-time documentation; 934 flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in 935 the :mod:`os` module. In particular, on Windows adding 936 :const:`O_BINARY` is needed to open files in binary mode. 937 938 This function can support :ref:`paths relative to directory descriptors 939 <dir_fd>` with the *dir_fd* parameter. 940 941 .. audit-event:: open path,mode,flags os.open 942 943 .. versionchanged:: 3.4 944 The new file descriptor is now non-inheritable. 945 946 .. note:: 947 948 This function is intended for low-level I/O. For normal usage, use the 949 built-in function :func:`open`, which returns a :term:`file object` with 950 :meth:`~file.read` and :meth:`~file.write` methods (and many more). To 951 wrap a file descriptor in a file object, use :func:`fdopen`. 952 953 .. versionadded:: 3.3 954 The *dir_fd* argument. 955 956 .. versionchanged:: 3.5 957 If the system call is interrupted and the signal handler does not raise an 958 exception, the function now retries the system call instead of raising an 959 :exc:`InterruptedError` exception (see :pep:`475` for the rationale). 960 961 .. versionchanged:: 3.6 962 Accepts a :term:`path-like object`. 963 964The following constants are options for the *flags* parameter to the 965:func:`~os.open` function. They can be combined using the bitwise OR operator 966``|``. Some of them are not available on all platforms. For descriptions of 967their availability and use, consult the :manpage:`open(2)` manual page on Unix 968or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windows. 969 970 971.. data:: O_RDONLY 972 O_WRONLY 973 O_RDWR 974 O_APPEND 975 O_CREAT 976 O_EXCL 977 O_TRUNC 978 979 The above constants are available on Unix and Windows. 980 981 982.. data:: O_DSYNC 983 O_RSYNC 984 O_SYNC 985 O_NDELAY 986 O_NONBLOCK 987 O_NOCTTY 988 O_CLOEXEC 989 990 The above constants are only available on Unix. 991 992 .. versionchanged:: 3.3 993 Add :data:`O_CLOEXEC` constant. 994 995.. data:: O_BINARY 996 O_NOINHERIT 997 O_SHORT_LIVED 998 O_TEMPORARY 999 O_RANDOM 1000 O_SEQUENTIAL 1001 O_TEXT 1002 1003 The above constants are only available on Windows. 1004 1005 1006.. data:: O_ASYNC 1007 O_DIRECT 1008 O_DIRECTORY 1009 O_NOFOLLOW 1010 O_NOATIME 1011 O_PATH 1012 O_TMPFILE 1013 O_SHLOCK 1014 O_EXLOCK 1015 1016 The above constants are extensions and not present if they are not defined by 1017 the C library. 1018 1019 .. versionchanged:: 3.4 1020 Add :data:`O_PATH` on systems that support it. 1021 Add :data:`O_TMPFILE`, only available on Linux Kernel 3.11 1022 or newer. 1023 1024 1025.. function:: openpty() 1026 1027 .. index:: module: pty 1028 1029 Open a new pseudo-terminal pair. Return a pair of file descriptors 1030 ``(master, slave)`` for the pty and the tty, respectively. The new file 1031 descriptors are :ref:`non-inheritable <fd_inheritance>`. For a (slightly) more 1032 portable approach, use the :mod:`pty` module. 1033 1034 .. availability:: some flavors of Unix. 1035 1036 .. versionchanged:: 3.4 1037 The new file descriptors are now non-inheritable. 1038 1039 1040.. function:: pipe() 1041 1042 Create a pipe. Return a pair of file descriptors ``(r, w)`` usable for 1043 reading and writing, respectively. The new file descriptor is 1044 :ref:`non-inheritable <fd_inheritance>`. 1045 1046 .. availability:: Unix, Windows. 1047 1048 .. versionchanged:: 3.4 1049 The new file descriptors are now non-inheritable. 1050 1051 1052.. function:: pipe2(flags) 1053 1054 Create a pipe with *flags* set atomically. 1055 *flags* can be constructed by ORing together one or more of these values: 1056 :data:`O_NONBLOCK`, :data:`O_CLOEXEC`. 1057 Return a pair of file descriptors ``(r, w)`` usable for reading and writing, 1058 respectively. 1059 1060 .. availability:: some flavors of Unix. 1061 1062 .. versionadded:: 3.3 1063 1064 1065.. function:: posix_fallocate(fd, offset, len) 1066 1067 Ensures that enough disk space is allocated for the file specified by *fd* 1068 starting from *offset* and continuing for *len* bytes. 1069 1070 .. availability:: Unix. 1071 1072 .. versionadded:: 3.3 1073 1074 1075.. function:: posix_fadvise(fd, offset, len, advice) 1076 1077 Announces an intention to access data in a specific pattern thus allowing 1078 the kernel to make optimizations. 1079 The advice applies to the region of the file specified by *fd* starting at 1080 *offset* and continuing for *len* bytes. 1081 *advice* is one of :data:`POSIX_FADV_NORMAL`, :data:`POSIX_FADV_SEQUENTIAL`, 1082 :data:`POSIX_FADV_RANDOM`, :data:`POSIX_FADV_NOREUSE`, 1083 :data:`POSIX_FADV_WILLNEED` or :data:`POSIX_FADV_DONTNEED`. 1084 1085 .. availability:: Unix. 1086 1087 .. versionadded:: 3.3 1088 1089 1090.. data:: POSIX_FADV_NORMAL 1091 POSIX_FADV_SEQUENTIAL 1092 POSIX_FADV_RANDOM 1093 POSIX_FADV_NOREUSE 1094 POSIX_FADV_WILLNEED 1095 POSIX_FADV_DONTNEED 1096 1097 Flags that can be used in *advice* in :func:`posix_fadvise` that specify 1098 the access pattern that is likely to be used. 1099 1100 .. availability:: Unix. 1101 1102 .. versionadded:: 3.3 1103 1104 1105.. function:: pread(fd, n, offset) 1106 1107 Read at most *n* bytes from file descriptor *fd* at a position of *offset*, 1108 leaving the file offset unchanged. 1109 1110 Return a bytestring containing the bytes read. If the end of the file 1111 referred to by *fd* has been reached, an empty bytes object is returned. 1112 1113 .. availability:: Unix. 1114 1115 .. versionadded:: 3.3 1116 1117 1118.. function:: preadv(fd, buffers, offset, flags=0) 1119 1120 Read from a file descriptor *fd* at a position of *offset* into mutable 1121 :term:`bytes-like objects <bytes-like object>` *buffers*, leaving the file 1122 offset unchanged. Transfer data into each buffer until it is full and then 1123 move on to the next buffer in the sequence to hold the rest of the data. 1124 1125 The flags argument contains a bitwise OR of zero or more of the following 1126 flags: 1127 1128 - :data:`RWF_HIPRI` 1129 - :data:`RWF_NOWAIT` 1130 1131 Return the total number of bytes actually read which can be less than the 1132 total capacity of all the objects. 1133 1134 The operating system may set a limit (:func:`sysconf` value 1135 ``'SC_IOV_MAX'``) on the number of buffers that can be used. 1136 1137 Combine the functionality of :func:`os.readv` and :func:`os.pread`. 1138 1139 .. availability:: Linux 2.6.30 and newer, FreeBSD 6.0 and newer, 1140 OpenBSD 2.7 and newer. Using flags requires Linux 4.6 or newer. 1141 1142 .. versionadded:: 3.7 1143 1144 1145.. data:: RWF_NOWAIT 1146 1147 Do not wait for data which is not immediately available. If this flag is 1148 specified, the system call will return instantly if it would have to read 1149 data from the backing storage or wait for a lock. 1150 1151 If some data was successfully read, it will return the number of bytes read. 1152 If no bytes were read, it will return ``-1`` and set errno to 1153 :data:`errno.EAGAIN`. 1154 1155 .. availability:: Linux 4.14 and newer. 1156 1157 .. versionadded:: 3.7 1158 1159 1160.. data:: RWF_HIPRI 1161 1162 High priority read/write. Allows block-based filesystems to use polling 1163 of the device, which provides lower latency, but may use additional 1164 resources. 1165 1166 Currently, on Linux, this feature is usable only on a file descriptor opened 1167 using the :data:`O_DIRECT` flag. 1168 1169 .. availability:: Linux 4.6 and newer. 1170 1171 .. versionadded:: 3.7 1172 1173 1174.. function:: pwrite(fd, str, offset) 1175 1176 Write the bytestring in *str* to file descriptor *fd* at position of 1177 *offset*, leaving the file offset unchanged. 1178 1179 Return the number of bytes actually written. 1180 1181 .. availability:: Unix. 1182 1183 .. versionadded:: 3.3 1184 1185 1186.. function:: pwritev(fd, buffers, offset, flags=0) 1187 1188 Write the *buffers* contents to file descriptor *fd* at a offset *offset*, 1189 leaving the file offset unchanged. *buffers* must be a sequence of 1190 :term:`bytes-like objects <bytes-like object>`. Buffers are processed in 1191 array order. Entire contents of the first buffer is written before 1192 proceeding to the second, and so on. 1193 1194 The flags argument contains a bitwise OR of zero or more of the following 1195 flags: 1196 1197 - :data:`RWF_DSYNC` 1198 - :data:`RWF_SYNC` 1199 1200 Return the total number of bytes actually written. 1201 1202 The operating system may set a limit (:func:`sysconf` value 1203 ``'SC_IOV_MAX'``) on the number of buffers that can be used. 1204 1205 Combine the functionality of :func:`os.writev` and :func:`os.pwrite`. 1206 1207 .. availability:: Linux 2.6.30 and newer, FreeBSD 6.0 and newer, 1208 OpenBSD 2.7 and newer. Using flags requires Linux 4.7 or newer. 1209 1210 .. versionadded:: 3.7 1211 1212 1213.. data:: RWF_DSYNC 1214 1215 Provide a per-write equivalent of the :data:`O_DSYNC` ``open(2)`` flag. This 1216 flag effect applies only to the data range written by the system call. 1217 1218 .. availability:: Linux 4.7 and newer. 1219 1220 .. versionadded:: 3.7 1221 1222 1223.. data:: RWF_SYNC 1224 1225 Provide a per-write equivalent of the :data:`O_SYNC` ``open(2)`` flag. This 1226 flag effect applies only to the data range written by the system call. 1227 1228 .. availability:: Linux 4.7 and newer. 1229 1230 .. versionadded:: 3.7 1231 1232 1233.. function:: read(fd, n) 1234 1235 Read at most *n* bytes from file descriptor *fd*. 1236 1237 Return a bytestring containing the bytes read. If the end of the file 1238 referred to by *fd* has been reached, an empty bytes object is returned. 1239 1240 .. note:: 1241 1242 This function is intended for low-level I/O and must be applied to a file 1243 descriptor as returned by :func:`os.open` or :func:`pipe`. To read a 1244 "file object" returned by the built-in function :func:`open` or by 1245 :func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its 1246 :meth:`~file.read` or :meth:`~file.readline` methods. 1247 1248 .. versionchanged:: 3.5 1249 If the system call is interrupted and the signal handler does not raise an 1250 exception, the function now retries the system call instead of raising an 1251 :exc:`InterruptedError` exception (see :pep:`475` for the rationale). 1252 1253 1254.. function:: sendfile(out, in, offset, count) 1255 sendfile(out, in, offset, count, [headers], [trailers], flags=0) 1256 1257 Copy *count* bytes from file descriptor *in* to file descriptor *out* 1258 starting at *offset*. 1259 Return the number of bytes sent. When EOF is reached return 0. 1260 1261 The first function notation is supported by all platforms that define 1262 :func:`sendfile`. 1263 1264 On Linux, if *offset* is given as ``None``, the bytes are read from the 1265 current position of *in* and the position of *in* is updated. 1266 1267 The second case may be used on Mac OS X and FreeBSD where *headers* and 1268 *trailers* are arbitrary sequences of buffers that are written before and 1269 after the data from *in* is written. It returns the same as the first case. 1270 1271 On Mac OS X and FreeBSD, a value of 0 for *count* specifies to send until 1272 the end of *in* is reached. 1273 1274 All platforms support sockets as *out* file descriptor, and some platforms 1275 allow other types (e.g. regular file, pipe) as well. 1276 1277 Cross-platform applications should not use *headers*, *trailers* and *flags* 1278 arguments. 1279 1280 .. availability:: Unix. 1281 1282 .. note:: 1283 1284 For a higher-level wrapper of :func:`sendfile`, see 1285 :meth:`socket.socket.sendfile`. 1286 1287 .. versionadded:: 3.3 1288 1289 1290.. function:: set_blocking(fd, blocking) 1291 1292 Set the blocking mode of the specified file descriptor. Set the 1293 :data:`O_NONBLOCK` flag if blocking is ``False``, clear the flag otherwise. 1294 1295 See also :func:`get_blocking` and :meth:`socket.socket.setblocking`. 1296 1297 .. availability:: Unix. 1298 1299 .. versionadded:: 3.5 1300 1301 1302.. data:: SF_NODISKIO 1303 SF_MNOWAIT 1304 SF_SYNC 1305 1306 Parameters to the :func:`sendfile` function, if the implementation supports 1307 them. 1308 1309 .. availability:: Unix. 1310 1311 .. versionadded:: 3.3 1312 1313 1314.. function:: readv(fd, buffers) 1315 1316 Read from a file descriptor *fd* into a number of mutable :term:`bytes-like 1317 objects <bytes-like object>` *buffers*. Transfer data into each buffer until 1318 it is full and then move on to the next buffer in the sequence to hold the 1319 rest of the data. 1320 1321 Return the total number of bytes actually read which can be less than the 1322 total capacity of all the objects. 1323 1324 The operating system may set a limit (:func:`sysconf` value 1325 ``'SC_IOV_MAX'``) on the number of buffers that can be used. 1326 1327 .. availability:: Unix. 1328 1329 .. versionadded:: 3.3 1330 1331 1332.. function:: tcgetpgrp(fd) 1333 1334 Return the process group associated with the terminal given by *fd* (an open 1335 file descriptor as returned by :func:`os.open`). 1336 1337 .. availability:: Unix. 1338 1339 1340.. function:: tcsetpgrp(fd, pg) 1341 1342 Set the process group associated with the terminal given by *fd* (an open file 1343 descriptor as returned by :func:`os.open`) to *pg*. 1344 1345 .. availability:: Unix. 1346 1347 1348.. function:: ttyname(fd) 1349 1350 Return a string which specifies the terminal device associated with 1351 file descriptor *fd*. If *fd* is not associated with a terminal device, an 1352 exception is raised. 1353 1354 .. availability:: Unix. 1355 1356 1357.. function:: write(fd, str) 1358 1359 Write the bytestring in *str* to file descriptor *fd*. 1360 1361 Return the number of bytes actually written. 1362 1363 .. note:: 1364 1365 This function is intended for low-level I/O and must be applied to a file 1366 descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file 1367 object" returned by the built-in function :func:`open` or by :func:`popen` or 1368 :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its 1369 :meth:`~file.write` method. 1370 1371 .. versionchanged:: 3.5 1372 If the system call is interrupted and the signal handler does not raise an 1373 exception, the function now retries the system call instead of raising an 1374 :exc:`InterruptedError` exception (see :pep:`475` for the rationale). 1375 1376 1377.. function:: writev(fd, buffers) 1378 1379 Write the contents of *buffers* to file descriptor *fd*. *buffers* must be 1380 a sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are 1381 processed in array order. Entire contents of the first buffer is written 1382 before proceeding to the second, and so on. 1383 1384 Returns the total number of bytes actually written. 1385 1386 The operating system may set a limit (:func:`sysconf` value 1387 ``'SC_IOV_MAX'``) on the number of buffers that can be used. 1388 1389 .. availability:: Unix. 1390 1391 .. versionadded:: 3.3 1392 1393 1394.. _terminal-size: 1395 1396Querying the size of a terminal 1397~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1398 1399.. versionadded:: 3.3 1400 1401.. function:: get_terminal_size(fd=STDOUT_FILENO) 1402 1403 Return the size of the terminal window as ``(columns, lines)``, 1404 tuple of type :class:`terminal_size`. 1405 1406 The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard 1407 output) specifies which file descriptor should be queried. 1408 1409 If the file descriptor is not connected to a terminal, an :exc:`OSError` 1410 is raised. 1411 1412 :func:`shutil.get_terminal_size` is the high-level function which 1413 should normally be used, ``os.get_terminal_size`` is the low-level 1414 implementation. 1415 1416 .. availability:: Unix, Windows. 1417 1418.. class:: terminal_size 1419 1420 A subclass of tuple, holding ``(columns, lines)`` of the terminal window size. 1421 1422 .. attribute:: columns 1423 1424 Width of the terminal window in characters. 1425 1426 .. attribute:: lines 1427 1428 Height of the terminal window in characters. 1429 1430 1431.. _fd_inheritance: 1432 1433Inheritance of File Descriptors 1434~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1435 1436.. versionadded:: 3.4 1437 1438A file descriptor has an "inheritable" flag which indicates if the file descriptor 1439can be inherited by child processes. Since Python 3.4, file descriptors 1440created by Python are non-inheritable by default. 1441 1442On UNIX, non-inheritable file descriptors are closed in child processes at the 1443execution of a new program, other file descriptors are inherited. 1444 1445On Windows, non-inheritable handles and file descriptors are closed in child 1446processes, except for standard streams (file descriptors 0, 1 and 2: stdin, stdout 1447and stderr), which are always inherited. Using :func:`spawn\* <spawnl>` functions, 1448all inheritable handles and all inheritable file descriptors are inherited. 1449Using the :mod:`subprocess` module, all file descriptors except standard 1450streams are closed, and inheritable handles are only inherited if the 1451*close_fds* parameter is ``False``. 1452 1453.. function:: get_inheritable(fd) 1454 1455 Get the "inheritable" flag of the specified file descriptor (a boolean). 1456 1457.. function:: set_inheritable(fd, inheritable) 1458 1459 Set the "inheritable" flag of the specified file descriptor. 1460 1461.. function:: get_handle_inheritable(handle) 1462 1463 Get the "inheritable" flag of the specified handle (a boolean). 1464 1465 .. availability:: Windows. 1466 1467.. function:: set_handle_inheritable(handle, inheritable) 1468 1469 Set the "inheritable" flag of the specified handle. 1470 1471 .. availability:: Windows. 1472 1473 1474.. _os-file-dir: 1475 1476Files and Directories 1477--------------------- 1478 1479On some Unix platforms, many of these functions support one or more of these 1480features: 1481 1482.. _path_fd: 1483 1484* **specifying a file descriptor:** 1485 Normally the *path* argument provided to functions in the :mod:`os` module 1486 must be a string specifying a file path. However, some functions now 1487 alternatively accept an open file descriptor for their *path* argument. 1488 The function will then operate on the file referred to by the descriptor. 1489 (For POSIX systems, Python will call the variant of the function prefixed 1490 with ``f`` (e.g. call ``fchdir`` instead of ``chdir``).) 1491 1492 You can check whether or not *path* can be specified as a file descriptor 1493 for a particular function on your platform using :data:`os.supports_fd`. 1494 If this functionality is unavailable, using it will raise a 1495 :exc:`NotImplementedError`. 1496 1497 If the function also supports *dir_fd* or *follow_symlinks* arguments, it's 1498 an error to specify one of those when supplying *path* as a file descriptor. 1499 1500.. _dir_fd: 1501 1502* **paths relative to directory descriptors:** If *dir_fd* is not ``None``, it 1503 should be a file descriptor referring to a directory, and the path to operate 1504 on should be relative; path will then be relative to that directory. If the 1505 path is absolute, *dir_fd* is ignored. (For POSIX systems, Python will call 1506 the variant of the function with an ``at`` suffix and possibly prefixed with 1507 ``f`` (e.g. call ``faccessat`` instead of ``access``). 1508 1509 You can check whether or not *dir_fd* is supported for a particular function 1510 on your platform using :data:`os.supports_dir_fd`. If it's unavailable, 1511 using it will raise a :exc:`NotImplementedError`. 1512 1513.. _follow_symlinks: 1514 1515* **not following symlinks:** If *follow_symlinks* is 1516 ``False``, and the last element of the path to operate on is a symbolic link, 1517 the function will operate on the symbolic link itself rather than the file 1518 pointed to by the link. (For POSIX systems, Python will call the ``l...`` 1519 variant of the function.) 1520 1521 You can check whether or not *follow_symlinks* is supported for a particular 1522 function on your platform using :data:`os.supports_follow_symlinks`. 1523 If it's unavailable, using it will raise a :exc:`NotImplementedError`. 1524 1525 1526 1527.. function:: access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) 1528 1529 Use the real uid/gid to test for access to *path*. Note that most operations 1530 will use the effective uid/gid, therefore this routine can be used in a 1531 suid/sgid environment to test if the invoking user has the specified access to 1532 *path*. *mode* should be :const:`F_OK` to test the existence of *path*, or it 1533 can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and 1534 :const:`X_OK` to test permissions. Return :const:`True` if access is allowed, 1535 :const:`False` if not. See the Unix man page :manpage:`access(2)` for more 1536 information. 1537 1538 This function can support specifying :ref:`paths relative to directory 1539 descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. 1540 1541 If *effective_ids* is ``True``, :func:`access` will perform its access 1542 checks using the effective uid/gid instead of the real uid/gid. 1543 *effective_ids* may not be supported on your platform; you can check whether 1544 or not it is available using :data:`os.supports_effective_ids`. If it is 1545 unavailable, using it will raise a :exc:`NotImplementedError`. 1546 1547 .. note:: 1548 1549 Using :func:`access` to check if a user is authorized to e.g. open a file 1550 before actually doing so using :func:`open` creates a security hole, 1551 because the user might exploit the short time interval between checking 1552 and opening the file to manipulate it. It's preferable to use :term:`EAFP` 1553 techniques. For example:: 1554 1555 if os.access("myfile", os.R_OK): 1556 with open("myfile") as fp: 1557 return fp.read() 1558 return "some default data" 1559 1560 is better written as:: 1561 1562 try: 1563 fp = open("myfile") 1564 except PermissionError: 1565 return "some default data" 1566 else: 1567 with fp: 1568 return fp.read() 1569 1570 .. note:: 1571 1572 I/O operations may fail even when :func:`access` indicates that they would 1573 succeed, particularly for operations on network filesystems which may have 1574 permissions semantics beyond the usual POSIX permission-bit model. 1575 1576 .. versionchanged:: 3.3 1577 Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters. 1578 1579 .. versionchanged:: 3.6 1580 Accepts a :term:`path-like object`. 1581 1582 1583.. data:: F_OK 1584 R_OK 1585 W_OK 1586 X_OK 1587 1588 Values to pass as the *mode* parameter of :func:`access` to test the 1589 existence, readability, writability and executability of *path*, 1590 respectively. 1591 1592 1593.. function:: chdir(path) 1594 1595 .. index:: single: directory; changing 1596 1597 Change the current working directory to *path*. 1598 1599 This function can support :ref:`specifying a file descriptor <path_fd>`. The 1600 descriptor must refer to an opened directory, not an open file. 1601 1602 This function can raise :exc:`OSError` and subclasses such as 1603 :exc:`FileNotFoundError`, :exc:`PermissionError`, and :exc:`NotADirectoryError`. 1604 1605 .. versionadded:: 3.3 1606 Added support for specifying *path* as a file descriptor 1607 on some platforms. 1608 1609 .. versionchanged:: 3.6 1610 Accepts a :term:`path-like object`. 1611 1612 1613.. function:: chflags(path, flags, *, follow_symlinks=True) 1614 1615 Set the flags of *path* to the numeric *flags*. *flags* may take a combination 1616 (bitwise OR) of the following values (as defined in the :mod:`stat` module): 1617 1618 * :data:`stat.UF_NODUMP` 1619 * :data:`stat.UF_IMMUTABLE` 1620 * :data:`stat.UF_APPEND` 1621 * :data:`stat.UF_OPAQUE` 1622 * :data:`stat.UF_NOUNLINK` 1623 * :data:`stat.UF_COMPRESSED` 1624 * :data:`stat.UF_HIDDEN` 1625 * :data:`stat.SF_ARCHIVED` 1626 * :data:`stat.SF_IMMUTABLE` 1627 * :data:`stat.SF_APPEND` 1628 * :data:`stat.SF_NOUNLINK` 1629 * :data:`stat.SF_SNAPSHOT` 1630 1631 This function can support :ref:`not following symlinks <follow_symlinks>`. 1632 1633 .. availability:: Unix. 1634 1635 .. versionadded:: 3.3 1636 The *follow_symlinks* argument. 1637 1638 .. versionchanged:: 3.6 1639 Accepts a :term:`path-like object`. 1640 1641 1642.. function:: chmod(path, mode, *, dir_fd=None, follow_symlinks=True) 1643 1644 Change the mode of *path* to the numeric *mode*. *mode* may take one of the 1645 following values (as defined in the :mod:`stat` module) or bitwise ORed 1646 combinations of them: 1647 1648 * :data:`stat.S_ISUID` 1649 * :data:`stat.S_ISGID` 1650 * :data:`stat.S_ENFMT` 1651 * :data:`stat.S_ISVTX` 1652 * :data:`stat.S_IREAD` 1653 * :data:`stat.S_IWRITE` 1654 * :data:`stat.S_IEXEC` 1655 * :data:`stat.S_IRWXU` 1656 * :data:`stat.S_IRUSR` 1657 * :data:`stat.S_IWUSR` 1658 * :data:`stat.S_IXUSR` 1659 * :data:`stat.S_IRWXG` 1660 * :data:`stat.S_IRGRP` 1661 * :data:`stat.S_IWGRP` 1662 * :data:`stat.S_IXGRP` 1663 * :data:`stat.S_IRWXO` 1664 * :data:`stat.S_IROTH` 1665 * :data:`stat.S_IWOTH` 1666 * :data:`stat.S_IXOTH` 1667 1668 This function can support :ref:`specifying a file descriptor <path_fd>`, 1669 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not 1670 following symlinks <follow_symlinks>`. 1671 1672 .. note:: 1673 1674 Although Windows supports :func:`chmod`, you can only set the file's 1675 read-only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD`` 1676 constants or a corresponding integer value). All other bits are ignored. 1677 1678 .. versionadded:: 3.3 1679 Added support for specifying *path* as an open file descriptor, 1680 and the *dir_fd* and *follow_symlinks* arguments. 1681 1682 .. versionchanged:: 3.6 1683 Accepts a :term:`path-like object`. 1684 1685 1686.. function:: chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True) 1687 1688 Change the owner and group id of *path* to the numeric *uid* and *gid*. To 1689 leave one of the ids unchanged, set it to -1. 1690 1691 This function can support :ref:`specifying a file descriptor <path_fd>`, 1692 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not 1693 following symlinks <follow_symlinks>`. 1694 1695 See :func:`shutil.chown` for a higher-level function that accepts names in 1696 addition to numeric ids. 1697 1698 .. availability:: Unix. 1699 1700 .. versionadded:: 3.3 1701 Added support for specifying *path* as an open file descriptor, 1702 and the *dir_fd* and *follow_symlinks* arguments. 1703 1704 .. versionchanged:: 3.6 1705 Supports a :term:`path-like object`. 1706 1707 1708.. function:: chroot(path) 1709 1710 Change the root directory of the current process to *path*. 1711 1712 .. availability:: Unix. 1713 1714 .. versionchanged:: 3.6 1715 Accepts a :term:`path-like object`. 1716 1717 1718.. function:: fchdir(fd) 1719 1720 Change the current working directory to the directory represented by the file 1721 descriptor *fd*. The descriptor must refer to an opened directory, not an 1722 open file. As of Python 3.3, this is equivalent to ``os.chdir(fd)``. 1723 1724 .. availability:: Unix. 1725 1726 1727.. function:: getcwd() 1728 1729 Return a string representing the current working directory. 1730 1731 1732.. function:: getcwdb() 1733 1734 Return a bytestring representing the current working directory. 1735 1736 .. versionchanged:: 3.8 1737 The function now uses the UTF-8 encoding on Windows, rather than the ANSI 1738 code page: see :pep:`529` for the rationale. The function is no longer 1739 deprecated on Windows. 1740 1741 1742.. function:: lchflags(path, flags) 1743 1744 Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do 1745 not follow symbolic links. As of Python 3.3, this is equivalent to 1746 ``os.chflags(path, flags, follow_symlinks=False)``. 1747 1748 .. availability:: Unix. 1749 1750 .. versionchanged:: 3.6 1751 Accepts a :term:`path-like object`. 1752 1753 1754.. function:: lchmod(path, mode) 1755 1756 Change the mode of *path* to the numeric *mode*. If path is a symlink, this 1757 affects the symlink rather than the target. See the docs for :func:`chmod` 1758 for possible values of *mode*. As of Python 3.3, this is equivalent to 1759 ``os.chmod(path, mode, follow_symlinks=False)``. 1760 1761 .. availability:: Unix. 1762 1763 .. versionchanged:: 3.6 1764 Accepts a :term:`path-like object`. 1765 1766.. function:: lchown(path, uid, gid) 1767 1768 Change the owner and group id of *path* to the numeric *uid* and *gid*. This 1769 function will not follow symbolic links. As of Python 3.3, this is equivalent 1770 to ``os.chown(path, uid, gid, follow_symlinks=False)``. 1771 1772 .. availability:: Unix. 1773 1774 .. versionchanged:: 3.6 1775 Accepts a :term:`path-like object`. 1776 1777 1778.. function:: link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) 1779 1780 Create a hard link pointing to *src* named *dst*. 1781 1782 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to 1783 supply :ref:`paths relative to directory descriptors <dir_fd>`, and :ref:`not 1784 following symlinks <follow_symlinks>`. 1785 1786 .. availability:: Unix, Windows. 1787 1788 .. versionchanged:: 3.2 1789 Added Windows support. 1790 1791 .. versionadded:: 3.3 1792 Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments. 1793 1794 .. versionchanged:: 3.6 1795 Accepts a :term:`path-like object` for *src* and *dst*. 1796 1797 1798.. function:: listdir(path='.') 1799 1800 Return a list containing the names of the entries in the directory given by 1801 *path*. The list is in arbitrary order, and does not include the special 1802 entries ``'.'`` and ``'..'`` even if they are present in the directory. 1803 1804 *path* may be a :term:`path-like object`. If *path* is of type ``bytes`` 1805 (directly or indirectly through the :class:`PathLike` interface), 1806 the filenames returned will also be of type ``bytes``; 1807 in all other circumstances, they will be of type ``str``. 1808 1809 This function can also support :ref:`specifying a file descriptor 1810 <path_fd>`; the file descriptor must refer to a directory. 1811 1812 .. audit-event:: os.listdir path os.listdir 1813 1814 .. note:: 1815 To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`. 1816 1817 .. seealso:: 1818 1819 The :func:`scandir` function returns directory entries along with 1820 file attribute information, giving better performance for many 1821 common use cases. 1822 1823 .. versionchanged:: 3.2 1824 The *path* parameter became optional. 1825 1826 .. versionadded:: 3.3 1827 Added support for specifying *path* as an open file descriptor. 1828 1829 .. versionchanged:: 3.6 1830 Accepts a :term:`path-like object`. 1831 1832 1833.. function:: lstat(path, \*, dir_fd=None) 1834 1835 Perform the equivalent of an :c:func:`lstat` system call on the given path. 1836 Similar to :func:`~os.stat`, but does not follow symbolic links. Return a 1837 :class:`stat_result` object. 1838 1839 On platforms that do not support symbolic links, this is an alias for 1840 :func:`~os.stat`. 1841 1842 As of Python 3.3, this is equivalent to ``os.stat(path, dir_fd=dir_fd, 1843 follow_symlinks=False)``. 1844 1845 This function can also support :ref:`paths relative to directory descriptors 1846 <dir_fd>`. 1847 1848 .. seealso:: 1849 1850 The :func:`.stat` function. 1851 1852 .. versionchanged:: 3.2 1853 Added support for Windows 6.0 (Vista) symbolic links. 1854 1855 .. versionchanged:: 3.3 1856 Added the *dir_fd* parameter. 1857 1858 .. versionchanged:: 3.6 1859 Accepts a :term:`path-like object` for *src* and *dst*. 1860 1861 .. versionchanged:: 3.8 1862 On Windows, now opens reparse points that represent another path 1863 (name surrogates), including symbolic links and directory junctions. 1864 Other kinds of reparse points are resolved by the operating system as 1865 for :func:`~os.stat`. 1866 1867 1868.. function:: mkdir(path, mode=0o777, *, dir_fd=None) 1869 1870 Create a directory named *path* with numeric mode *mode*. 1871 1872 If the directory already exists, :exc:`FileExistsError` is raised. 1873 1874 .. _mkdir_modebits: 1875 1876 On some systems, *mode* is ignored. Where it is used, the current umask 1877 value is first masked out. If bits other than the last 9 (i.e. the last 3 1878 digits of the octal representation of the *mode*) are set, their meaning is 1879 platform-dependent. On some platforms, they are ignored and you should call 1880 :func:`chmod` explicitly to set them. 1881 1882 This function can also support :ref:`paths relative to directory descriptors 1883 <dir_fd>`. 1884 1885 It is also possible to create temporary directories; see the 1886 :mod:`tempfile` module's :func:`tempfile.mkdtemp` function. 1887 1888 .. versionadded:: 3.3 1889 The *dir_fd* argument. 1890 1891 .. versionchanged:: 3.6 1892 Accepts a :term:`path-like object`. 1893 1894 1895.. function:: makedirs(name, mode=0o777, exist_ok=False) 1896 1897 .. index:: 1898 single: directory; creating 1899 single: UNC paths; and os.makedirs() 1900 1901 Recursive directory creation function. Like :func:`mkdir`, but makes all 1902 intermediate-level directories needed to contain the leaf directory. 1903 1904 The *mode* parameter is passed to :func:`mkdir` for creating the leaf 1905 directory; see :ref:`the mkdir() description <mkdir_modebits>` for how it 1906 is interpreted. To set the file permission bits of any newly-created parent 1907 directories you can set the umask before invoking :func:`makedirs`. The 1908 file permission bits of existing parent directories are not changed. 1909 1910 If *exist_ok* is ``False`` (the default), an :exc:`FileExistsError` is 1911 raised if the target directory already exists. 1912 1913 .. note:: 1914 1915 :func:`makedirs` will become confused if the path elements to create 1916 include :data:`pardir` (eg. ".." on UNIX systems). 1917 1918 This function handles UNC paths correctly. 1919 1920 .. versionadded:: 3.2 1921 The *exist_ok* parameter. 1922 1923 .. versionchanged:: 3.4.1 1924 1925 Before Python 3.4.1, if *exist_ok* was ``True`` and the directory existed, 1926 :func:`makedirs` would still raise an error if *mode* did not match the 1927 mode of the existing directory. Since this behavior was impossible to 1928 implement safely, it was removed in Python 3.4.1. See :issue:`21082`. 1929 1930 .. versionchanged:: 3.6 1931 Accepts a :term:`path-like object`. 1932 1933 .. versionchanged:: 3.7 1934 The *mode* argument no longer affects the file permission bits of 1935 newly-created intermediate-level directories. 1936 1937 1938.. function:: mkfifo(path, mode=0o666, *, dir_fd=None) 1939 1940 Create a FIFO (a named pipe) named *path* with numeric mode *mode*. 1941 The current umask value is first masked out from the mode. 1942 1943 This function can also support :ref:`paths relative to directory descriptors 1944 <dir_fd>`. 1945 1946 FIFOs are pipes that can be accessed like regular files. FIFOs exist until they 1947 are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as 1948 rendezvous between "client" and "server" type processes: the server opens the 1949 FIFO for reading, and the client opens it for writing. Note that :func:`mkfifo` 1950 doesn't open the FIFO --- it just creates the rendezvous point. 1951 1952 .. availability:: Unix. 1953 1954 .. versionadded:: 3.3 1955 The *dir_fd* argument. 1956 1957 .. versionchanged:: 3.6 1958 Accepts a :term:`path-like object`. 1959 1960 1961.. function:: mknod(path, mode=0o600, device=0, *, dir_fd=None) 1962 1963 Create a filesystem node (file, device special file or named pipe) named 1964 *path*. *mode* specifies both the permissions to use and the type of node 1965 to be created, being combined (bitwise OR) with one of ``stat.S_IFREG``, 1966 ``stat.S_IFCHR``, ``stat.S_IFBLK``, and ``stat.S_IFIFO`` (those constants are 1967 available in :mod:`stat`). For ``stat.S_IFCHR`` and ``stat.S_IFBLK``, 1968 *device* defines the newly created device special file (probably using 1969 :func:`os.makedev`), otherwise it is ignored. 1970 1971 This function can also support :ref:`paths relative to directory descriptors 1972 <dir_fd>`. 1973 1974 .. availability:: Unix. 1975 1976 .. versionadded:: 3.3 1977 The *dir_fd* argument. 1978 1979 .. versionchanged:: 3.6 1980 Accepts a :term:`path-like object`. 1981 1982 1983.. function:: major(device) 1984 1985 Extract the device major number from a raw device number (usually the 1986 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`). 1987 1988 1989.. function:: minor(device) 1990 1991 Extract the device minor number from a raw device number (usually the 1992 :attr:`st_dev` or :attr:`st_rdev` field from :c:type:`stat`). 1993 1994 1995.. function:: makedev(major, minor) 1996 1997 Compose a raw device number from the major and minor device numbers. 1998 1999 2000.. function:: pathconf(path, name) 2001 2002 Return system configuration information relevant to a named file. *name* 2003 specifies the configuration value to retrieve; it may be a string which is the 2004 name of a defined system value; these names are specified in a number of 2005 standards (POSIX.1, Unix 95, Unix 98, and others). Some platforms define 2006 additional names as well. The names known to the host operating system are 2007 given in the ``pathconf_names`` dictionary. For configuration variables not 2008 included in that mapping, passing an integer for *name* is also accepted. 2009 2010 If *name* is a string and is not known, :exc:`ValueError` is raised. If a 2011 specific value for *name* is not supported by the host system, even if it is 2012 included in ``pathconf_names``, an :exc:`OSError` is raised with 2013 :const:`errno.EINVAL` for the error number. 2014 2015 This function can support :ref:`specifying a file descriptor 2016 <path_fd>`. 2017 2018 .. availability:: Unix. 2019 2020 .. versionchanged:: 3.6 2021 Accepts a :term:`path-like object`. 2022 2023 2024.. data:: pathconf_names 2025 2026 Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to 2027 the integer values defined for those names by the host operating system. This 2028 can be used to determine the set of names known to the system. 2029 2030 .. availability:: Unix. 2031 2032 2033.. function:: readlink(path, *, dir_fd=None) 2034 2035 Return a string representing the path to which the symbolic link points. The 2036 result may be either an absolute or relative pathname; if it is relative, it 2037 may be converted to an absolute pathname using 2038 ``os.path.join(os.path.dirname(path), result)``. 2039 2040 If the *path* is a string object (directly or indirectly through a 2041 :class:`PathLike` interface), the result will also be a string object, 2042 and the call may raise a UnicodeDecodeError. If the *path* is a bytes 2043 object (direct or indirectly), the result will be a bytes object. 2044 2045 This function can also support :ref:`paths relative to directory descriptors 2046 <dir_fd>`. 2047 2048 When trying to resolve a path that may contain links, use 2049 :func:`~os.path.realpath` to properly handle recursion and platform 2050 differences. 2051 2052 .. availability:: Unix, Windows. 2053 2054 .. versionchanged:: 3.2 2055 Added support for Windows 6.0 (Vista) symbolic links. 2056 2057 .. versionadded:: 3.3 2058 The *dir_fd* argument. 2059 2060 .. versionchanged:: 3.6 2061 Accepts a :term:`path-like object` on Unix. 2062 2063 .. versionchanged:: 3.8 2064 Accepts a :term:`path-like object` and a bytes object on Windows. 2065 2066 .. versionchanged:: 3.8 2067 Added support for directory junctions, and changed to return the 2068 substitution path (which typically includes ``\\?\`` prefix) rather 2069 than the optional "print name" field that was previously returned. 2070 2071.. function:: remove(path, *, dir_fd=None) 2072 2073 Remove (delete) the file *path*. If *path* is a directory, an 2074 :exc:`IsADirectoryError` is raised. Use :func:`rmdir` to remove directories. 2075 2076 This function can support :ref:`paths relative to directory descriptors 2077 <dir_fd>`. 2078 2079 On Windows, attempting to remove a file that is in use causes an exception to 2080 be raised; on Unix, the directory entry is removed but the storage allocated 2081 to the file is not made available until the original file is no longer in use. 2082 2083 This function is semantically identical to :func:`unlink`. 2084 2085 .. versionadded:: 3.3 2086 The *dir_fd* argument. 2087 2088 .. versionchanged:: 3.6 2089 Accepts a :term:`path-like object`. 2090 2091 2092.. function:: removedirs(name) 2093 2094 .. index:: single: directory; deleting 2095 2096 Remove directories recursively. Works like :func:`rmdir` except that, if the 2097 leaf directory is successfully removed, :func:`removedirs` tries to 2098 successively remove every parent directory mentioned in *path* until an error 2099 is raised (which is ignored, because it generally means that a parent directory 2100 is not empty). For example, ``os.removedirs('foo/bar/baz')`` will first remove 2101 the directory ``'foo/bar/baz'``, and then remove ``'foo/bar'`` and ``'foo'`` if 2102 they are empty. Raises :exc:`OSError` if the leaf directory could not be 2103 successfully removed. 2104 2105 .. versionchanged:: 3.6 2106 Accepts a :term:`path-like object`. 2107 2108 2109.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) 2110 2111 Rename the file or directory *src* to *dst*. If *dst* exists, the operation 2112 will fail with an :exc:`OSError` subclass in a number of cases: 2113 2114 On Windows, if *dst* exists a :exc:`FileExistsError` is always raised. 2115 2116 On Unix, if *src* is a file and *dst* is a directory or vice-versa, an 2117 :exc:`IsADirectoryError` or a :exc:`NotADirectoryError` will be raised 2118 respectively. If both are directories and *dst* is empty, *dst* will be 2119 silently replaced. If *dst* is a non-empty directory, an :exc:`OSError` 2120 is raised. If both are files, *dst* it will be replaced silently if the user 2121 has permission. The operation may fail on some Unix flavors if *src* and 2122 *dst* are on different filesystems. If successful, the renaming will be an 2123 atomic operation (this is a POSIX requirement). 2124 2125 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to 2126 supply :ref:`paths relative to directory descriptors <dir_fd>`. 2127 2128 If you want cross-platform overwriting of the destination, use :func:`replace`. 2129 2130 .. versionadded:: 3.3 2131 The *src_dir_fd* and *dst_dir_fd* arguments. 2132 2133 .. versionchanged:: 3.6 2134 Accepts a :term:`path-like object` for *src* and *dst*. 2135 2136 2137.. function:: renames(old, new) 2138 2139 Recursive directory or file renaming function. Works like :func:`rename`, except 2140 creation of any intermediate directories needed to make the new pathname good is 2141 attempted first. After the rename, directories corresponding to rightmost path 2142 segments of the old name will be pruned away using :func:`removedirs`. 2143 2144 .. note:: 2145 2146 This function can fail with the new directory structure made if you lack 2147 permissions needed to remove the leaf directory or file. 2148 2149 .. versionchanged:: 3.6 2150 Accepts a :term:`path-like object` for *old* and *new*. 2151 2152 2153.. function:: replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) 2154 2155 Rename the file or directory *src* to *dst*. If *dst* is a directory, 2156 :exc:`OSError` will be raised. If *dst* exists and is a file, it will 2157 be replaced silently if the user has permission. The operation may fail 2158 if *src* and *dst* are on different filesystems. If successful, 2159 the renaming will be an atomic operation (this is a POSIX requirement). 2160 2161 This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to 2162 supply :ref:`paths relative to directory descriptors <dir_fd>`. 2163 2164 .. versionadded:: 3.3 2165 2166 .. versionchanged:: 3.6 2167 Accepts a :term:`path-like object` for *src* and *dst*. 2168 2169 2170.. function:: rmdir(path, *, dir_fd=None) 2171 2172 Remove (delete) the directory *path*. If the directory does not exist or is 2173 not empty, an :exc:`FileNotFoundError` or an :exc:`OSError` is raised 2174 respectively. In order to remove whole directory trees, 2175 :func:`shutil.rmtree` can be used. 2176 2177 This function can support :ref:`paths relative to directory descriptors 2178 <dir_fd>`. 2179 2180 .. versionadded:: 3.3 2181 The *dir_fd* parameter. 2182 2183 .. versionchanged:: 3.6 2184 Accepts a :term:`path-like object`. 2185 2186 2187.. function:: scandir(path='.') 2188 2189 Return an iterator of :class:`os.DirEntry` objects corresponding to the 2190 entries in the directory given by *path*. The entries are yielded in 2191 arbitrary order, and the special entries ``'.'`` and ``'..'`` are not 2192 included. 2193 2194 Using :func:`scandir` instead of :func:`listdir` can significantly 2195 increase the performance of code that also needs file type or file 2196 attribute information, because :class:`os.DirEntry` objects expose this 2197 information if the operating system provides it when scanning a directory. 2198 All :class:`os.DirEntry` methods may perform a system call, but 2199 :func:`~os.DirEntry.is_dir` and :func:`~os.DirEntry.is_file` usually only 2200 require a system call for symbolic links; :func:`os.DirEntry.stat` 2201 always requires a system call on Unix but only requires one for 2202 symbolic links on Windows. 2203 2204 *path* may be a :term:`path-like object`. If *path* is of type ``bytes`` 2205 (directly or indirectly through the :class:`PathLike` interface), 2206 the type of the :attr:`~os.DirEntry.name` and :attr:`~os.DirEntry.path` 2207 attributes of each :class:`os.DirEntry` will be ``bytes``; in all other 2208 circumstances, they will be of type ``str``. 2209 2210 This function can also support :ref:`specifying a file descriptor 2211 <path_fd>`; the file descriptor must refer to a directory. 2212 2213 .. audit-event:: os.scandir path os.scandir 2214 2215 The :func:`scandir` iterator supports the :term:`context manager` protocol 2216 and has the following method: 2217 2218 .. method:: scandir.close() 2219 2220 Close the iterator and free acquired resources. 2221 2222 This is called automatically when the iterator is exhausted or garbage 2223 collected, or when an error happens during iterating. However it 2224 is advisable to call it explicitly or use the :keyword:`with` 2225 statement. 2226 2227 .. versionadded:: 3.6 2228 2229 The following example shows a simple use of :func:`scandir` to display all 2230 the files (excluding directories) in the given *path* that don't start with 2231 ``'.'``. The ``entry.is_file()`` call will generally not make an additional 2232 system call:: 2233 2234 with os.scandir(path) as it: 2235 for entry in it: 2236 if not entry.name.startswith('.') and entry.is_file(): 2237 print(entry.name) 2238 2239 .. note:: 2240 2241 On Unix-based systems, :func:`scandir` uses the system's 2242 `opendir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/opendir.html>`_ 2243 and 2244 `readdir() <http://pubs.opengroup.org/onlinepubs/009695399/functions/readdir_r.html>`_ 2245 functions. On Windows, it uses the Win32 2246 `FindFirstFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx>`_ 2247 and 2248 `FindNextFileW <https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428(v=vs.85).aspx>`_ 2249 functions. 2250 2251 .. versionadded:: 3.5 2252 2253 .. versionadded:: 3.6 2254 Added support for the :term:`context manager` protocol and the 2255 :func:`~scandir.close()` method. If a :func:`scandir` iterator is neither 2256 exhausted nor explicitly closed a :exc:`ResourceWarning` will be emitted 2257 in its destructor. 2258 2259 The function accepts a :term:`path-like object`. 2260 2261 .. versionchanged:: 3.7 2262 Added support for :ref:`file descriptors <path_fd>` on Unix. 2263 2264 2265.. class:: DirEntry 2266 2267 Object yielded by :func:`scandir` to expose the file path and other file 2268 attributes of a directory entry. 2269 2270 :func:`scandir` will provide as much of this information as possible without 2271 making additional system calls. When a ``stat()`` or ``lstat()`` system call 2272 is made, the ``os.DirEntry`` object will cache the result. 2273 2274 ``os.DirEntry`` instances are not intended to be stored in long-lived data 2275 structures; if you know the file metadata has changed or if a long time has 2276 elapsed since calling :func:`scandir`, call ``os.stat(entry.path)`` to fetch 2277 up-to-date information. 2278 2279 Because the ``os.DirEntry`` methods can make operating system calls, they may 2280 also raise :exc:`OSError`. If you need very fine-grained 2281 control over errors, you can catch :exc:`OSError` when calling one of the 2282 ``os.DirEntry`` methods and handle as appropriate. 2283 2284 To be directly usable as a :term:`path-like object`, ``os.DirEntry`` 2285 implements the :class:`PathLike` interface. 2286 2287 Attributes and methods on a ``os.DirEntry`` instance are as follows: 2288 2289 .. attribute:: name 2290 2291 The entry's base filename, relative to the :func:`scandir` *path* 2292 argument. 2293 2294 The :attr:`name` attribute will be ``bytes`` if the :func:`scandir` 2295 *path* argument is of type ``bytes`` and ``str`` otherwise. Use 2296 :func:`~os.fsdecode` to decode byte filenames. 2297 2298 .. attribute:: path 2299 2300 The entry's full path name: equivalent to ``os.path.join(scandir_path, 2301 entry.name)`` where *scandir_path* is the :func:`scandir` *path* 2302 argument. The path is only absolute if the :func:`scandir` *path* 2303 argument was absolute. If the :func:`scandir` *path* 2304 argument was a :ref:`file descriptor <path_fd>`, the :attr:`path` 2305 attribute is the same as the :attr:`name` attribute. 2306 2307 The :attr:`path` attribute will be ``bytes`` if the :func:`scandir` 2308 *path* argument is of type ``bytes`` and ``str`` otherwise. Use 2309 :func:`~os.fsdecode` to decode byte filenames. 2310 2311 .. method:: inode() 2312 2313 Return the inode number of the entry. 2314 2315 The result is cached on the ``os.DirEntry`` object. Use 2316 ``os.stat(entry.path, follow_symlinks=False).st_ino`` to fetch up-to-date 2317 information. 2318 2319 On the first, uncached call, a system call is required on Windows but 2320 not on Unix. 2321 2322 .. method:: is_dir(\*, follow_symlinks=True) 2323 2324 Return ``True`` if this entry is a directory or a symbolic link pointing 2325 to a directory; return ``False`` if the entry is or points to any other 2326 kind of file, or if it doesn't exist anymore. 2327 2328 If *follow_symlinks* is ``False``, return ``True`` only if this entry 2329 is a directory (without following symlinks); return ``False`` if the 2330 entry is any other kind of file or if it doesn't exist anymore. 2331 2332 The result is cached on the ``os.DirEntry`` object, with a separate cache 2333 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` along 2334 with :func:`stat.S_ISDIR` to fetch up-to-date information. 2335 2336 On the first, uncached call, no system call is required in most cases. 2337 Specifically, for non-symlinks, neither Windows or Unix require a system 2338 call, except on certain Unix file systems, such as network file systems, 2339 that return ``dirent.d_type == DT_UNKNOWN``. If the entry is a symlink, 2340 a system call will be required to follow the symlink unless 2341 *follow_symlinks* is ``False``. 2342 2343 This method can raise :exc:`OSError`, such as :exc:`PermissionError`, 2344 but :exc:`FileNotFoundError` is caught and not raised. 2345 2346 .. method:: is_file(\*, follow_symlinks=True) 2347 2348 Return ``True`` if this entry is a file or a symbolic link pointing to a 2349 file; return ``False`` if the entry is or points to a directory or other 2350 non-file entry, or if it doesn't exist anymore. 2351 2352 If *follow_symlinks* is ``False``, return ``True`` only if this entry 2353 is a file (without following symlinks); return ``False`` if the entry is 2354 a directory or other non-file entry, or if it doesn't exist anymore. 2355 2356 The result is cached on the ``os.DirEntry`` object. Caching, system calls 2357 made, and exceptions raised are as per :func:`~os.DirEntry.is_dir`. 2358 2359 .. method:: is_symlink() 2360 2361 Return ``True`` if this entry is a symbolic link (even if broken); 2362 return ``False`` if the entry points to a directory or any kind of file, 2363 or if it doesn't exist anymore. 2364 2365 The result is cached on the ``os.DirEntry`` object. Call 2366 :func:`os.path.islink` to fetch up-to-date information. 2367 2368 On the first, uncached call, no system call is required in most cases. 2369 Specifically, neither Windows or Unix require a system call, except on 2370 certain Unix file systems, such as network file systems, that return 2371 ``dirent.d_type == DT_UNKNOWN``. 2372 2373 This method can raise :exc:`OSError`, such as :exc:`PermissionError`, 2374 but :exc:`FileNotFoundError` is caught and not raised. 2375 2376 .. method:: stat(\*, follow_symlinks=True) 2377 2378 Return a :class:`stat_result` object for this entry. This method 2379 follows symbolic links by default; to stat a symbolic link add the 2380 ``follow_symlinks=False`` argument. 2381 2382 On Unix, this method always requires a system call. On Windows, it 2383 only requires a system call if *follow_symlinks* is ``True`` and the 2384 entry is a reparse point (for example, a symbolic link or directory 2385 junction). 2386 2387 On Windows, the ``st_ino``, ``st_dev`` and ``st_nlink`` attributes of the 2388 :class:`stat_result` are always set to zero. Call :func:`os.stat` to 2389 get these attributes. 2390 2391 The result is cached on the ``os.DirEntry`` object, with a separate cache 2392 for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` to 2393 fetch up-to-date information. 2394 2395 Note that there is a nice correspondence between several attributes 2396 and methods of ``os.DirEntry`` and of :class:`pathlib.Path`. In 2397 particular, the ``name`` attribute has the same 2398 meaning, as do the ``is_dir()``, ``is_file()``, ``is_symlink()`` 2399 and ``stat()`` methods. 2400 2401 .. versionadded:: 3.5 2402 2403 .. versionchanged:: 3.6 2404 Added support for the :class:`~os.PathLike` interface. Added support 2405 for :class:`bytes` paths on Windows. 2406 2407 2408.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True) 2409 2410 Get the status of a file or a file descriptor. Perform the equivalent of a 2411 :c:func:`stat` system call on the given path. *path* may be specified as 2412 either a string or bytes -- directly or indirectly through the :class:`PathLike` 2413 interface -- or as an open file descriptor. Return a :class:`stat_result` 2414 object. 2415 2416 This function normally follows symlinks; to stat a symlink add the argument 2417 ``follow_symlinks=False``, or use :func:`lstat`. 2418 2419 This function can support :ref:`specifying a file descriptor <path_fd>` and 2420 :ref:`not following symlinks <follow_symlinks>`. 2421 2422 On Windows, passing ``follow_symlinks=False`` will disable following all 2423 name-surrogate reparse points, which includes symlinks and directory 2424 junctions. Other types of reparse points that do not resemble links or that 2425 the operating system is unable to follow will be opened directly. When 2426 following a chain of multiple links, this may result in the original link 2427 being returned instead of the non-link that prevented full traversal. To 2428 obtain stat results for the final path in this case, use the 2429 :func:`os.path.realpath` function to resolve the path name as far as 2430 possible and call :func:`lstat` on the result. This does not apply to 2431 dangling symlinks or junction points, which will raise the usual exceptions. 2432 2433 .. index:: module: stat 2434 2435 Example:: 2436 2437 >>> import os 2438 >>> statinfo = os.stat('somefile.txt') 2439 >>> statinfo 2440 os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, 2441 st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, 2442 st_mtime=1297230027, st_ctime=1297230027) 2443 >>> statinfo.st_size 2444 264 2445 2446 .. seealso:: 2447 2448 :func:`fstat` and :func:`lstat` functions. 2449 2450 .. versionadded:: 3.3 2451 Added the *dir_fd* and *follow_symlinks* arguments, specifying a file 2452 descriptor instead of a path. 2453 2454 .. versionchanged:: 3.6 2455 Accepts a :term:`path-like object`. 2456 2457 .. versionchanged:: 3.8 2458 On Windows, all reparse points that can be resolved by the operating 2459 system are now followed, and passing ``follow_symlinks=False`` 2460 disables following all name surrogate reparse points. If the operating 2461 system reaches a reparse point that it is not able to follow, *stat* now 2462 returns the information for the original path as if 2463 ``follow_symlinks=False`` had been specified instead of raising an error. 2464 2465 2466.. class:: stat_result 2467 2468 Object whose attributes correspond roughly to the members of the 2469 :c:type:`stat` structure. It is used for the result of :func:`os.stat`, 2470 :func:`os.fstat` and :func:`os.lstat`. 2471 2472 Attributes: 2473 2474 .. attribute:: st_mode 2475 2476 File mode: file type and file mode bits (permissions). 2477 2478 .. attribute:: st_ino 2479 2480 Platform dependent, but if non-zero, uniquely identifies the 2481 file for a given value of ``st_dev``. Typically: 2482 2483 * the inode number on Unix, 2484 * the `file index 2485 <https://msdn.microsoft.com/en-us/library/aa363788>`_ on 2486 Windows 2487 2488 .. attribute:: st_dev 2489 2490 Identifier of the device on which this file resides. 2491 2492 .. attribute:: st_nlink 2493 2494 Number of hard links. 2495 2496 .. attribute:: st_uid 2497 2498 User identifier of the file owner. 2499 2500 .. attribute:: st_gid 2501 2502 Group identifier of the file owner. 2503 2504 .. attribute:: st_size 2505 2506 Size of the file in bytes, if it is a regular file or a symbolic link. 2507 The size of a symbolic link is the length of the pathname it contains, 2508 without a terminating null byte. 2509 2510 Timestamps: 2511 2512 .. attribute:: st_atime 2513 2514 Time of most recent access expressed in seconds. 2515 2516 .. attribute:: st_mtime 2517 2518 Time of most recent content modification expressed in seconds. 2519 2520 .. attribute:: st_ctime 2521 2522 Platform dependent: 2523 2524 * the time of most recent metadata change on Unix, 2525 * the time of creation on Windows, expressed in seconds. 2526 2527 .. attribute:: st_atime_ns 2528 2529 Time of most recent access expressed in nanoseconds as an integer. 2530 2531 .. attribute:: st_mtime_ns 2532 2533 Time of most recent content modification expressed in nanoseconds as an 2534 integer. 2535 2536 .. attribute:: st_ctime_ns 2537 2538 Platform dependent: 2539 2540 * the time of most recent metadata change on Unix, 2541 * the time of creation on Windows, expressed in nanoseconds as an 2542 integer. 2543 2544 .. note:: 2545 2546 The exact meaning and resolution of the :attr:`st_atime`, 2547 :attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating 2548 system and the file system. For example, on Windows systems using the FAT 2549 or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and 2550 :attr:`st_atime` has only 1-day resolution. See your operating system 2551 documentation for details. 2552 2553 Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`, 2554 and :attr:`st_ctime_ns` are always expressed in nanoseconds, many 2555 systems do not provide nanosecond precision. On systems that do 2556 provide nanosecond precision, the floating-point object used to 2557 store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime` 2558 cannot preserve all of it, and as such will be slightly inexact. 2559 If you need the exact timestamps you should always use 2560 :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`. 2561 2562 On some Unix systems (such as Linux), the following attributes may also be 2563 available: 2564 2565 .. attribute:: st_blocks 2566 2567 Number of 512-byte blocks allocated for file. 2568 This may be smaller than :attr:`st_size`/512 when the file has holes. 2569 2570 .. attribute:: st_blksize 2571 2572 "Preferred" blocksize for efficient file system I/O. Writing to a file in 2573 smaller chunks may cause an inefficient read-modify-rewrite. 2574 2575 .. attribute:: st_rdev 2576 2577 Type of device if an inode device. 2578 2579 .. attribute:: st_flags 2580 2581 User defined flags for file. 2582 2583 On other Unix systems (such as FreeBSD), the following attributes may be 2584 available (but may be only filled out if root tries to use them): 2585 2586 .. attribute:: st_gen 2587 2588 File generation number. 2589 2590 .. attribute:: st_birthtime 2591 2592 Time of file creation. 2593 2594 On Solaris and derivatives, the following attributes may also be 2595 available: 2596 2597 .. attribute:: st_fstype 2598 2599 String that uniquely identifies the type of the filesystem that 2600 contains the file. 2601 2602 On Mac OS systems, the following attributes may also be available: 2603 2604 .. attribute:: st_rsize 2605 2606 Real size of the file. 2607 2608 .. attribute:: st_creator 2609 2610 Creator of the file. 2611 2612 .. attribute:: st_type 2613 2614 File type. 2615 2616 On Windows systems, the following attributes are also available: 2617 2618 .. attribute:: st_file_attributes 2619 2620 Windows file attributes: ``dwFileAttributes`` member of the 2621 ``BY_HANDLE_FILE_INFORMATION`` structure returned by 2622 :c:func:`GetFileInformationByHandle`. See the ``FILE_ATTRIBUTE_*`` 2623 constants in the :mod:`stat` module. 2624 2625 .. attribute:: st_reparse_tag 2626 2627 When :attr:`st_file_attributes` has the ``FILE_ATTRIBUTE_REPARSE_POINT`` 2628 set, this field contains the tag identifying the type of reparse point. 2629 See the ``IO_REPARSE_TAG_*`` constants in the :mod:`stat` module. 2630 2631 The standard module :mod:`stat` defines functions and constants that are 2632 useful for extracting information from a :c:type:`stat` structure. (On 2633 Windows, some items are filled with dummy values.) 2634 2635 For backward compatibility, a :class:`stat_result` instance is also 2636 accessible as a tuple of at least 10 integers giving the most important (and 2637 portable) members of the :c:type:`stat` structure, in the order 2638 :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:`st_nlink`, 2639 :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:`st_atime`, 2640 :attr:`st_mtime`, :attr:`st_ctime`. More items may be added at the end by 2641 some implementations. For compatibility with older Python versions, 2642 accessing :class:`stat_result` as a tuple always returns integers. 2643 2644 .. versionadded:: 3.3 2645 Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and 2646 :attr:`st_ctime_ns` members. 2647 2648 .. versionadded:: 3.5 2649 Added the :attr:`st_file_attributes` member on Windows. 2650 2651 .. versionchanged:: 3.5 2652 Windows now returns the file index as :attr:`st_ino` when 2653 available. 2654 2655 .. versionadded:: 3.7 2656 Added the :attr:`st_fstype` member to Solaris/derivatives. 2657 2658 .. versionadded:: 3.8 2659 Added the :attr:`st_reparse_tag` member on Windows. 2660 2661 .. versionchanged:: 3.8 2662 On Windows, the :attr:`st_mode` member now identifies special 2663 files as :const:`S_IFCHR`, :const:`S_IFIFO` or :const:`S_IFBLK` 2664 as appropriate. 2665 2666.. function:: statvfs(path) 2667 2668 Perform a :c:func:`statvfs` system call on the given path. The return value is 2669 an object whose attributes describe the filesystem on the given path, and 2670 correspond to the members of the :c:type:`statvfs` structure, namely: 2671 :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`, 2672 :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`, 2673 :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`. 2674 2675 Two module-level constants are defined for the :attr:`f_flag` attribute's 2676 bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted 2677 read-only, and if :const:`ST_NOSUID` is set, the semantics of 2678 setuid/setgid bits are disabled or not supported. 2679 2680 Additional module-level constants are defined for GNU/glibc based systems. 2681 These are :const:`ST_NODEV` (disallow access to device special files), 2682 :const:`ST_NOEXEC` (disallow program execution), :const:`ST_SYNCHRONOUS` 2683 (writes are synced at once), :const:`ST_MANDLOCK` (allow mandatory locks on an FS), 2684 :const:`ST_WRITE` (write on file/directory/symlink), :const:`ST_APPEND` 2685 (append-only file), :const:`ST_IMMUTABLE` (immutable file), :const:`ST_NOATIME` 2686 (do not update access times), :const:`ST_NODIRATIME` (do not update directory access 2687 times), :const:`ST_RELATIME` (update atime relative to mtime/ctime). 2688 2689 This function can support :ref:`specifying a file descriptor <path_fd>`. 2690 2691 .. availability:: Unix. 2692 2693 .. versionchanged:: 3.2 2694 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added. 2695 2696 .. versionadded:: 3.3 2697 Added support for specifying *path* as an open file descriptor. 2698 2699 .. versionchanged:: 3.4 2700 The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`, 2701 :const:`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`, 2702 :const:`ST_IMMUTABLE`, :const:`ST_NOATIME`, :const:`ST_NODIRATIME`, 2703 and :const:`ST_RELATIME` constants were added. 2704 2705 .. versionchanged:: 3.6 2706 Accepts a :term:`path-like object`. 2707 2708 .. versionadded:: 3.7 2709 Added :attr:`f_fsid`. 2710 2711 2712.. data:: supports_dir_fd 2713 2714 A :class:`set` object indicating which functions in the :mod:`os` 2715 module accept an open file descriptor for their *dir_fd* parameter. 2716 Different platforms provide different features, and the underlying 2717 functionality Python uses to implement the *dir_fd* parameter is not 2718 available on all platforms Python supports. For consistency's sake, 2719 functions that may support *dir_fd* always allow specifying the 2720 parameter, but will throw an exception if the functionality is used 2721 when it's not locally available. (Specifying ``None`` for *dir_fd* 2722 is always supported on all platforms.) 2723 2724 To check whether a particular function accepts an open file descriptor 2725 for its *dir_fd* parameter, use the ``in`` operator on ``supports_dir_fd``. 2726 As an example, this expression evaluates to ``True`` if :func:`os.stat` 2727 accepts open file descriptors for *dir_fd* on the local platform:: 2728 2729 os.stat in os.supports_dir_fd 2730 2731 Currently *dir_fd* parameters only work on Unix platforms; 2732 none of them work on Windows. 2733 2734 .. versionadded:: 3.3 2735 2736 2737.. data:: supports_effective_ids 2738 2739 A :class:`set` object indicating whether :func:`os.access` permits 2740 specifying ``True`` for its *effective_ids* parameter on the local platform. 2741 (Specifying ``False`` for *effective_ids* is always supported on all 2742 platforms.) If the local platform supports it, the collection will contain 2743 :func:`os.access`; otherwise it will be empty. 2744 2745 This expression evaluates to ``True`` if :func:`os.access` supports 2746 ``effective_ids=True`` on the local platform:: 2747 2748 os.access in os.supports_effective_ids 2749 2750 Currently *effective_ids* is only supported on Unix platforms; 2751 it does not work on Windows. 2752 2753 .. versionadded:: 3.3 2754 2755 2756.. data:: supports_fd 2757 2758 A :class:`set` object indicating which functions in the 2759 :mod:`os` module permit specifying their *path* parameter as an open file 2760 descriptor on the local platform. Different platforms provide different 2761 features, and the underlying functionality Python uses to accept open file 2762 descriptors as *path* arguments is not available on all platforms Python 2763 supports. 2764 2765 To determine whether a particular function permits specifying an open file 2766 descriptor for its *path* parameter, use the ``in`` operator on 2767 ``supports_fd``. As an example, this expression evaluates to ``True`` if 2768 :func:`os.chdir` accepts open file descriptors for *path* on your local 2769 platform:: 2770 2771 os.chdir in os.supports_fd 2772 2773 .. versionadded:: 3.3 2774 2775 2776.. data:: supports_follow_symlinks 2777 2778 A :class:`set` object indicating which functions in the :mod:`os` module 2779 accept ``False`` for their *follow_symlinks* parameter on the local platform. 2780 Different platforms provide different features, and the underlying 2781 functionality Python uses to implement *follow_symlinks* is not available 2782 on all platforms Python supports. For consistency's sake, functions that 2783 may support *follow_symlinks* always allow specifying the parameter, but 2784 will throw an exception if the functionality is used when it's not locally 2785 available. (Specifying ``True`` for *follow_symlinks* is always supported 2786 on all platforms.) 2787 2788 To check whether a particular function accepts ``False`` for its 2789 *follow_symlinks* parameter, use the ``in`` operator on 2790 ``supports_follow_symlinks``. As an example, this expression evaluates 2791 to ``True`` if you may specify ``follow_symlinks=False`` when calling 2792 :func:`os.stat` on the local platform:: 2793 2794 os.stat in os.supports_follow_symlinks 2795 2796 .. versionadded:: 3.3 2797 2798 2799.. function:: symlink(src, dst, target_is_directory=False, *, dir_fd=None) 2800 2801 Create a symbolic link pointing to *src* named *dst*. 2802 2803 On Windows, a symlink represents either a file or a directory, and does not 2804 morph to the target dynamically. If the target is present, the type of the 2805 symlink will be created to match. Otherwise, the symlink will be created 2806 as a directory if *target_is_directory* is ``True`` or a file symlink (the 2807 default) otherwise. On non-Windows platforms, *target_is_directory* is ignored. 2808 2809 This function can support :ref:`paths relative to directory descriptors 2810 <dir_fd>`. 2811 2812 .. note:: 2813 2814 On newer versions of Windows 10, unprivileged accounts can create symlinks 2815 if Developer Mode is enabled. When Developer Mode is not available/enabled, 2816 the *SeCreateSymbolicLinkPrivilege* privilege is required, or the process 2817 must be run as an administrator. 2818 2819 2820 :exc:`OSError` is raised when the function is called by an unprivileged 2821 user. 2822 2823 .. availability:: Unix, Windows. 2824 2825 .. versionchanged:: 3.2 2826 Added support for Windows 6.0 (Vista) symbolic links. 2827 2828 .. versionadded:: 3.3 2829 Added the *dir_fd* argument, and now allow *target_is_directory* 2830 on non-Windows platforms. 2831 2832 .. versionchanged:: 3.6 2833 Accepts a :term:`path-like object` for *src* and *dst*. 2834 2835 .. versionchanged:: 3.8 2836 Added support for unelevated symlinks on Windows with Developer Mode. 2837 2838 2839.. function:: sync() 2840 2841 Force write of everything to disk. 2842 2843 .. availability:: Unix. 2844 2845 .. versionadded:: 3.3 2846 2847 2848.. function:: truncate(path, length) 2849 2850 Truncate the file corresponding to *path*, so that it is at most 2851 *length* bytes in size. 2852 2853 This function can support :ref:`specifying a file descriptor <path_fd>`. 2854 2855 .. audit-event:: os.truncate path,length os.truncate 2856 2857 .. availability:: Unix, Windows. 2858 2859 .. versionadded:: 3.3 2860 2861 .. versionchanged:: 3.5 2862 Added support for Windows 2863 2864 .. versionchanged:: 3.6 2865 Accepts a :term:`path-like object`. 2866 2867 2868.. function:: unlink(path, *, dir_fd=None) 2869 2870 Remove (delete) the file *path*. This function is semantically 2871 identical to :func:`remove`; the ``unlink`` name is its 2872 traditional Unix name. Please see the documentation for 2873 :func:`remove` for further information. 2874 2875 .. versionadded:: 3.3 2876 The *dir_fd* parameter. 2877 2878 .. versionchanged:: 3.6 2879 Accepts a :term:`path-like object`. 2880 2881 2882.. function:: utime(path, times=None, *[, ns], dir_fd=None, follow_symlinks=True) 2883 2884 Set the access and modified times of the file specified by *path*. 2885 2886 :func:`utime` takes two optional parameters, *times* and *ns*. 2887 These specify the times set on *path* and are used as follows: 2888 2889 - If *ns* is specified, 2890 it must be a 2-tuple of the form ``(atime_ns, mtime_ns)`` 2891 where each member is an int expressing nanoseconds. 2892 - If *times* is not ``None``, 2893 it must be a 2-tuple of the form ``(atime, mtime)`` 2894 where each member is an int or float expressing seconds. 2895 - If *times* is ``None`` and *ns* is unspecified, 2896 this is equivalent to specifying ``ns=(atime_ns, mtime_ns)`` 2897 where both times are the current time. 2898 2899 It is an error to specify tuples for both *times* and *ns*. 2900 2901 Note that the exact times you set here may not be returned by a subsequent 2902 :func:`~os.stat` call, depending on the resolution with which your operating 2903 system records access and modification times; see :func:`~os.stat`. The best 2904 way to preserve exact times is to use the *st_atime_ns* and *st_mtime_ns* 2905 fields from the :func:`os.stat` result object with the *ns* parameter to 2906 `utime`. 2907 2908 This function can support :ref:`specifying a file descriptor <path_fd>`, 2909 :ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not 2910 following symlinks <follow_symlinks>`. 2911 2912 .. versionadded:: 3.3 2913 Added support for specifying *path* as an open file descriptor, 2914 and the *dir_fd*, *follow_symlinks*, and *ns* parameters. 2915 2916 .. versionchanged:: 3.6 2917 Accepts a :term:`path-like object`. 2918 2919 2920.. function:: walk(top, topdown=True, onerror=None, followlinks=False) 2921 2922 .. index:: 2923 single: directory; walking 2924 single: directory; traversal 2925 2926 Generate the file names in a directory tree by walking the tree 2927 either top-down or bottom-up. For each directory in the tree rooted at directory 2928 *top* (including *top* itself), it yields a 3-tuple ``(dirpath, dirnames, 2929 filenames)``. 2930 2931 *dirpath* is a string, the path to the directory. *dirnames* is a list of the 2932 names of the subdirectories in *dirpath* (excluding ``'.'`` and ``'..'``). 2933 *filenames* is a list of the names of the non-directory files in *dirpath*. 2934 Note that the names in the lists contain no path components. To get a full path 2935 (which begins with *top*) to a file or directory in *dirpath*, do 2936 ``os.path.join(dirpath, name)``. 2937 2938 If optional argument *topdown* is ``True`` or not specified, the triple for a 2939 directory is generated before the triples for any of its subdirectories 2940 (directories are generated top-down). If *topdown* is ``False``, the triple 2941 for a directory is generated after the triples for all of its subdirectories 2942 (directories are generated bottom-up). No matter the value of *topdown*, the 2943 list of subdirectories is retrieved before the tuples for the directory and 2944 its subdirectories are generated. 2945 2946 When *topdown* is ``True``, the caller can modify the *dirnames* list in-place 2947 (perhaps using :keyword:`del` or slice assignment), and :func:`walk` will only 2948 recurse into the subdirectories whose names remain in *dirnames*; this can be 2949 used to prune the search, impose a specific order of visiting, or even to inform 2950 :func:`walk` about directories the caller creates or renames before it resumes 2951 :func:`walk` again. Modifying *dirnames* when *topdown* is ``False`` has 2952 no effect on the behavior of the walk, because in bottom-up mode the directories 2953 in *dirnames* are generated before *dirpath* itself is generated. 2954 2955 By default, errors from the :func:`scandir` call are ignored. If optional 2956 argument *onerror* is specified, it should be a function; it will be called with 2957 one argument, an :exc:`OSError` instance. It can report the error to continue 2958 with the walk, or raise the exception to abort the walk. Note that the filename 2959 is available as the ``filename`` attribute of the exception object. 2960 2961 By default, :func:`walk` will not walk down into symbolic links that resolve to 2962 directories. Set *followlinks* to ``True`` to visit directories pointed to by 2963 symlinks, on systems that support them. 2964 2965 .. note:: 2966 2967 Be aware that setting *followlinks* to ``True`` can lead to infinite 2968 recursion if a link points to a parent directory of itself. :func:`walk` 2969 does not keep track of the directories it visited already. 2970 2971 .. note:: 2972 2973 If you pass a relative pathname, don't change the current working directory 2974 between resumptions of :func:`walk`. :func:`walk` never changes the current 2975 directory, and assumes that its caller doesn't either. 2976 2977 This example displays the number of bytes taken by non-directory files in each 2978 directory under the starting directory, except that it doesn't look under any 2979 CVS subdirectory:: 2980 2981 import os 2982 from os.path import join, getsize 2983 for root, dirs, files in os.walk('python/Lib/email'): 2984 print(root, "consumes", end=" ") 2985 print(sum(getsize(join(root, name)) for name in files), end=" ") 2986 print("bytes in", len(files), "non-directory files") 2987 if 'CVS' in dirs: 2988 dirs.remove('CVS') # don't visit CVS directories 2989 2990 In the next example (simple implementation of :func:`shutil.rmtree`), 2991 walking the tree bottom-up is essential, :func:`rmdir` doesn't allow 2992 deleting a directory before the directory is empty:: 2993 2994 # Delete everything reachable from the directory named in "top", 2995 # assuming there are no symbolic links. 2996 # CAUTION: This is dangerous! For example, if top == '/', it 2997 # could delete all your disk files. 2998 import os 2999 for root, dirs, files in os.walk(top, topdown=False): 3000 for name in files: 3001 os.remove(os.path.join(root, name)) 3002 for name in dirs: 3003 os.rmdir(os.path.join(root, name)) 3004 3005 .. versionchanged:: 3.5 3006 This function now calls :func:`os.scandir` instead of :func:`os.listdir`, 3007 making it faster by reducing the number of calls to :func:`os.stat`. 3008 3009 .. versionchanged:: 3.6 3010 Accepts a :term:`path-like object`. 3011 3012 3013.. function:: fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None) 3014 3015 .. index:: 3016 single: directory; walking 3017 single: directory; traversal 3018 3019 This behaves exactly like :func:`walk`, except that it yields a 4-tuple 3020 ``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``. 3021 3022 *dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output, 3023 and *dirfd* is a file descriptor referring to the directory *dirpath*. 3024 3025 This function always supports :ref:`paths relative to directory descriptors 3026 <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`. Note however 3027 that, unlike other functions, the :func:`fwalk` default value for 3028 *follow_symlinks* is ``False``. 3029 3030 .. note:: 3031 3032 Since :func:`fwalk` yields file descriptors, those are only valid until 3033 the next iteration step, so you should duplicate them (e.g. with 3034 :func:`dup`) if you want to keep them longer. 3035 3036 This example displays the number of bytes taken by non-directory files in each 3037 directory under the starting directory, except that it doesn't look under any 3038 CVS subdirectory:: 3039 3040 import os 3041 for root, dirs, files, rootfd in os.fwalk('python/Lib/email'): 3042 print(root, "consumes", end="") 3043 print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), 3044 end="") 3045 print("bytes in", len(files), "non-directory files") 3046 if 'CVS' in dirs: 3047 dirs.remove('CVS') # don't visit CVS directories 3048 3049 In the next example, walking the tree bottom-up is essential: 3050 :func:`rmdir` doesn't allow deleting a directory before the directory is 3051 empty:: 3052 3053 # Delete everything reachable from the directory named in "top", 3054 # assuming there are no symbolic links. 3055 # CAUTION: This is dangerous! For example, if top == '/', it 3056 # could delete all your disk files. 3057 import os 3058 for root, dirs, files, rootfd in os.fwalk(top, topdown=False): 3059 for name in files: 3060 os.unlink(name, dir_fd=rootfd) 3061 for name in dirs: 3062 os.rmdir(name, dir_fd=rootfd) 3063 3064 .. availability:: Unix. 3065 3066 .. versionadded:: 3.3 3067 3068 .. versionchanged:: 3.6 3069 Accepts a :term:`path-like object`. 3070 3071 .. versionchanged:: 3.7 3072 Added support for :class:`bytes` paths. 3073 3074 3075.. function:: memfd_create(name[, flags=os.MFD_CLOEXEC]) 3076 3077 Create an anonymous file and return a file descriptor that refers to it. 3078 *flags* must be one of the ``os.MFD_*`` constants available on the system 3079 (or a bitwise ORed combination of them). By default, the new file 3080 descriptor is :ref:`non-inheritable <fd_inheritance>`. 3081 3082 The name supplied in *name* is used as a filename and will be displayed as 3083 the target of the corresponding symbolic link in the directory 3084 ``/proc/self/fd/``. The displayed name is always prefixed with ``memfd:`` 3085 and serves only for debugging purposes. Names do not affect the behavior of 3086 the file descriptor, and as such multiple files can have the same name 3087 without any side effects. 3088 3089 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer. 3090 3091 .. versionadded:: 3.8 3092 3093 3094.. data:: MFD_CLOEXEC 3095 MFD_ALLOW_SEALING 3096 MFD_HUGETLB 3097 MFD_HUGE_SHIFT 3098 MFD_HUGE_MASK 3099 MFD_HUGE_64KB 3100 MFD_HUGE_512KB 3101 MFD_HUGE_1MB 3102 MFD_HUGE_2MB 3103 MFD_HUGE_8MB 3104 MFD_HUGE_16MB 3105 MFD_HUGE_32MB 3106 MFD_HUGE_256MB 3107 MFD_HUGE_512MB 3108 MFD_HUGE_1GB 3109 MFD_HUGE_2GB 3110 MFD_HUGE_16GB 3111 3112 These flags can be passed to :func:`memfd_create`. 3113 3114 .. availability:: Linux 3.17 or newer with glibc 2.27 or newer. The 3115 ``MFD_HUGE*`` flags are only available since Linux 4.14. 3116 3117 .. versionadded:: 3.8 3118 3119 3120Linux extended attributes 3121~~~~~~~~~~~~~~~~~~~~~~~~~ 3122 3123.. versionadded:: 3.3 3124 3125These functions are all available on Linux only. 3126 3127.. function:: getxattr(path, attribute, *, follow_symlinks=True) 3128 3129 Return the value of the extended filesystem attribute *attribute* for 3130 *path*. *attribute* can be bytes or str (directly or indirectly through the 3131 :class:`PathLike` interface). If it is str, it is encoded with the filesystem 3132 encoding. 3133 3134 This function can support :ref:`specifying a file descriptor <path_fd>` and 3135 :ref:`not following symlinks <follow_symlinks>`. 3136 3137 .. versionchanged:: 3.6 3138 Accepts a :term:`path-like object` for *path* and *attribute*. 3139 3140 3141.. function:: listxattr(path=None, *, follow_symlinks=True) 3142 3143 Return a list of the extended filesystem attributes on *path*. The 3144 attributes in the list are represented as strings decoded with the filesystem 3145 encoding. If *path* is ``None``, :func:`listxattr` will examine the current 3146 directory. 3147 3148 This function can support :ref:`specifying a file descriptor <path_fd>` and 3149 :ref:`not following symlinks <follow_symlinks>`. 3150 3151 .. versionchanged:: 3.6 3152 Accepts a :term:`path-like object`. 3153 3154 3155.. function:: removexattr(path, attribute, *, follow_symlinks=True) 3156 3157 Removes the extended filesystem attribute *attribute* from *path*. 3158 *attribute* should be bytes or str (directly or indirectly through the 3159 :class:`PathLike` interface). If it is a string, it is encoded 3160 with the filesystem encoding. 3161 3162 This function can support :ref:`specifying a file descriptor <path_fd>` and 3163 :ref:`not following symlinks <follow_symlinks>`. 3164 3165 .. versionchanged:: 3.6 3166 Accepts a :term:`path-like object` for *path* and *attribute*. 3167 3168 3169.. function:: setxattr(path, attribute, value, flags=0, *, follow_symlinks=True) 3170 3171 Set the extended filesystem attribute *attribute* on *path* to *value*. 3172 *attribute* must be a bytes or str with no embedded NULs (directly or 3173 indirectly through the :class:`PathLike` interface). If it is a str, 3174 it is encoded with the filesystem encoding. *flags* may be 3175 :data:`XATTR_REPLACE` or :data:`XATTR_CREATE`. If :data:`XATTR_REPLACE` is 3176 given and the attribute does not exist, ``EEXISTS`` will be raised. 3177 If :data:`XATTR_CREATE` is given and the attribute already exists, the 3178 attribute will not be created and ``ENODATA`` will be raised. 3179 3180 This function can support :ref:`specifying a file descriptor <path_fd>` and 3181 :ref:`not following symlinks <follow_symlinks>`. 3182 3183 .. note:: 3184 3185 A bug in Linux kernel versions less than 2.6.39 caused the flags argument 3186 to be ignored on some filesystems. 3187 3188 .. versionchanged:: 3.6 3189 Accepts a :term:`path-like object` for *path* and *attribute*. 3190 3191 3192.. data:: XATTR_SIZE_MAX 3193 3194 The maximum size the value of an extended attribute can be. Currently, this 3195 is 64 KiB on Linux. 3196 3197 3198.. data:: XATTR_CREATE 3199 3200 This is a possible value for the flags argument in :func:`setxattr`. It 3201 indicates the operation must create an attribute. 3202 3203 3204.. data:: XATTR_REPLACE 3205 3206 This is a possible value for the flags argument in :func:`setxattr`. It 3207 indicates the operation must replace an existing attribute. 3208 3209 3210.. _os-process: 3211 3212Process Management 3213------------------ 3214 3215These functions may be used to create and manage processes. 3216 3217The various :func:`exec\* <execl>` functions take a list of arguments for the new 3218program loaded into the process. In each case, the first of these arguments is 3219passed to the new program as its own name rather than as an argument a user may 3220have typed on a command line. For the C programmer, this is the ``argv[0]`` 3221passed to a program's :c:func:`main`. For example, ``os.execv('/bin/echo', 3222['foo', 'bar'])`` will only print ``bar`` on standard output; ``foo`` will seem 3223to be ignored. 3224 3225 3226.. function:: abort() 3227 3228 Generate a :const:`SIGABRT` signal to the current process. On Unix, the default 3229 behavior is to produce a core dump; on Windows, the process immediately returns 3230 an exit code of ``3``. Be aware that calling this function will not call the 3231 Python signal handler registered for :const:`SIGABRT` with 3232 :func:`signal.signal`. 3233 3234 3235.. function:: add_dll_directory(path) 3236 3237 Add a path to the DLL search path. 3238 3239 This search path is used when resolving dependencies for imported 3240 extension modules (the module itself is resolved through sys.path), 3241 and also by :mod:`ctypes`. 3242 3243 Remove the directory by calling **close()** on the returned object 3244 or using it in a :keyword:`with` statement. 3245 3246 See the `Microsoft documentation 3247 <https://msdn.microsoft.com/44228cf2-6306-466c-8f16-f513cd3ba8b5>`_ 3248 for more information about how DLLs are loaded. 3249 3250 .. availability:: Windows. 3251 3252 .. versionadded:: 3.8 3253 Previous versions of CPython would resolve DLLs using the default 3254 behavior for the current process. This led to inconsistencies, 3255 such as only sometimes searching :envvar:`PATH` or the current 3256 working directory, and OS functions such as ``AddDllDirectory`` 3257 having no effect. 3258 3259 In 3.8, the two primary ways DLLs are loaded now explicitly 3260 override the process-wide behavior to ensure consistency. See the 3261 :ref:`porting notes <bpo-36085-whatsnew>` for information on 3262 updating libraries. 3263 3264 3265.. function:: execl(path, arg0, arg1, ...) 3266 execle(path, arg0, arg1, ..., env) 3267 execlp(file, arg0, arg1, ...) 3268 execlpe(file, arg0, arg1, ..., env) 3269 execv(path, args) 3270 execve(path, args, env) 3271 execvp(file, args) 3272 execvpe(file, args, env) 3273 3274 These functions all execute a new program, replacing the current process; they 3275 do not return. On Unix, the new executable is loaded into the current process, 3276 and will have the same process id as the caller. Errors will be reported as 3277 :exc:`OSError` exceptions. 3278 3279 The current process is replaced immediately. Open file objects and 3280 descriptors are not flushed, so if there may be data buffered 3281 on these open files, you should flush them using 3282 :func:`sys.stdout.flush` or :func:`os.fsync` before calling an 3283 :func:`exec\* <execl>` function. 3284 3285 The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how 3286 command-line arguments are passed. The "l" variants are perhaps the easiest 3287 to work with if the number of parameters is fixed when the code is written; the 3288 individual parameters simply become additional parameters to the :func:`execl\*` 3289 functions. The "v" variants are good when the number of parameters is 3290 variable, with the arguments being passed in a list or tuple as the *args* 3291 parameter. In either case, the arguments to the child process should start with 3292 the name of the command being run, but this is not enforced. 3293 3294 The variants which include a "p" near the end (:func:`execlp`, 3295 :func:`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the 3296 :envvar:`PATH` environment variable to locate the program *file*. When the 3297 environment is being replaced (using one of the :func:`exec\*e <execl>` variants, 3298 discussed in the next paragraph), the new environment is used as the source of 3299 the :envvar:`PATH` variable. The other variants, :func:`execl`, :func:`execle`, 3300 :func:`execv`, and :func:`execve`, will not use the :envvar:`PATH` variable to 3301 locate the executable; *path* must contain an appropriate absolute or relative 3302 path. 3303 3304 For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` (note 3305 that these all end in "e"), the *env* parameter must be a mapping which is 3306 used to define the environment variables for the new process (these are used 3307 instead of the current process' environment); the functions :func:`execl`, 3308 :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to 3309 inherit the environment of the current process. 3310 3311 For :func:`execve` on some platforms, *path* may also be specified as an open 3312 file descriptor. This functionality may not be supported on your platform; 3313 you can check whether or not it is available using :data:`os.supports_fd`. 3314 If it is unavailable, using it will raise a :exc:`NotImplementedError`. 3315 3316 .. availability:: Unix, Windows. 3317 3318 .. versionadded:: 3.3 3319 Added support for specifying *path* as an open file descriptor 3320 for :func:`execve`. 3321 3322 .. versionchanged:: 3.6 3323 Accepts a :term:`path-like object`. 3324 3325.. function:: _exit(n) 3326 3327 Exit the process with status *n*, without calling cleanup handlers, flushing 3328 stdio buffers, etc. 3329 3330 .. note:: 3331 3332 The standard way to exit is ``sys.exit(n)``. :func:`_exit` should 3333 normally only be used in the child process after a :func:`fork`. 3334 3335The following exit codes are defined and can be used with :func:`_exit`, 3336although they are not required. These are typically used for system programs 3337written in Python, such as a mail server's external command delivery program. 3338 3339.. note:: 3340 3341 Some of these may not be available on all Unix platforms, since there is some 3342 variation. These constants are defined where they are defined by the underlying 3343 platform. 3344 3345 3346.. data:: EX_OK 3347 3348 Exit code that means no error occurred. 3349 3350 .. availability:: Unix. 3351 3352 3353.. data:: EX_USAGE 3354 3355 Exit code that means the command was used incorrectly, such as when the wrong 3356 number of arguments are given. 3357 3358 .. availability:: Unix. 3359 3360 3361.. data:: EX_DATAERR 3362 3363 Exit code that means the input data was incorrect. 3364 3365 .. availability:: Unix. 3366 3367 3368.. data:: EX_NOINPUT 3369 3370 Exit code that means an input file did not exist or was not readable. 3371 3372 .. availability:: Unix. 3373 3374 3375.. data:: EX_NOUSER 3376 3377 Exit code that means a specified user did not exist. 3378 3379 .. availability:: Unix. 3380 3381 3382.. data:: EX_NOHOST 3383 3384 Exit code that means a specified host did not exist. 3385 3386 .. availability:: Unix. 3387 3388 3389.. data:: EX_UNAVAILABLE 3390 3391 Exit code that means that a required service is unavailable. 3392 3393 .. availability:: Unix. 3394 3395 3396.. data:: EX_SOFTWARE 3397 3398 Exit code that means an internal software error was detected. 3399 3400 .. availability:: Unix. 3401 3402 3403.. data:: EX_OSERR 3404 3405 Exit code that means an operating system error was detected, such as the 3406 inability to fork or create a pipe. 3407 3408 .. availability:: Unix. 3409 3410 3411.. data:: EX_OSFILE 3412 3413 Exit code that means some system file did not exist, could not be opened, or had 3414 some other kind of error. 3415 3416 .. availability:: Unix. 3417 3418 3419.. data:: EX_CANTCREAT 3420 3421 Exit code that means a user specified output file could not be created. 3422 3423 .. availability:: Unix. 3424 3425 3426.. data:: EX_IOERR 3427 3428 Exit code that means that an error occurred while doing I/O on some file. 3429 3430 .. availability:: Unix. 3431 3432 3433.. data:: EX_TEMPFAIL 3434 3435 Exit code that means a temporary failure occurred. This indicates something 3436 that may not really be an error, such as a network connection that couldn't be 3437 made during a retryable operation. 3438 3439 .. availability:: Unix. 3440 3441 3442.. data:: EX_PROTOCOL 3443 3444 Exit code that means that a protocol exchange was illegal, invalid, or not 3445 understood. 3446 3447 .. availability:: Unix. 3448 3449 3450.. data:: EX_NOPERM 3451 3452 Exit code that means that there were insufficient permissions to perform the 3453 operation (but not intended for file system problems). 3454 3455 .. availability:: Unix. 3456 3457 3458.. data:: EX_CONFIG 3459 3460 Exit code that means that some kind of configuration error occurred. 3461 3462 .. availability:: Unix. 3463 3464 3465.. data:: EX_NOTFOUND 3466 3467 Exit code that means something like "an entry was not found". 3468 3469 .. availability:: Unix. 3470 3471 3472.. function:: fork() 3473 3474 Fork a child process. Return ``0`` in the child and the child's process id in the 3475 parent. If an error occurs :exc:`OSError` is raised. 3476 3477 Note that some platforms including FreeBSD <= 6.3 and Cygwin have 3478 known issues when using ``fork()`` from a thread. 3479 3480 .. versionchanged:: 3.8 3481 Calling ``fork()`` in a subinterpreter is no longer supported 3482 (:exc:`RuntimeError` is raised). 3483 3484 .. warning:: 3485 3486 See :mod:`ssl` for applications that use the SSL module with fork(). 3487 3488 .. availability:: Unix. 3489 3490 3491.. function:: forkpty() 3492 3493 Fork a child process, using a new pseudo-terminal as the child's controlling 3494 terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, the 3495 new child's process id in the parent, and *fd* is the file descriptor of the 3496 master end of the pseudo-terminal. For a more portable approach, use the 3497 :mod:`pty` module. If an error occurs :exc:`OSError` is raised. 3498 3499 .. versionchanged:: 3.8 3500 Calling ``forkpty()`` in a subinterpreter is no longer supported 3501 (:exc:`RuntimeError` is raised). 3502 3503 .. availability:: some flavors of Unix. 3504 3505 3506.. function:: kill(pid, sig) 3507 3508 .. index:: 3509 single: process; killing 3510 single: process; signalling 3511 3512 Send signal *sig* to the process *pid*. Constants for the specific signals 3513 available on the host platform are defined in the :mod:`signal` module. 3514 3515 Windows: The :data:`signal.CTRL_C_EVENT` and 3516 :data:`signal.CTRL_BREAK_EVENT` signals are special signals which can 3517 only be sent to console processes which share a common console window, 3518 e.g., some subprocesses. Any other value for *sig* will cause the process 3519 to be unconditionally killed by the TerminateProcess API, and the exit code 3520 will be set to *sig*. The Windows version of :func:`kill` additionally takes 3521 process handles to be killed. 3522 3523 See also :func:`signal.pthread_kill`. 3524 3525 .. versionadded:: 3.2 3526 Windows support. 3527 3528 3529.. function:: killpg(pgid, sig) 3530 3531 .. index:: 3532 single: process; killing 3533 single: process; signalling 3534 3535 Send the signal *sig* to the process group *pgid*. 3536 3537 .. availability:: Unix. 3538 3539 3540.. function:: nice(increment) 3541 3542 Add *increment* to the process's "niceness". Return the new niceness. 3543 3544 .. availability:: Unix. 3545 3546 3547.. function:: plock(op) 3548 3549 Lock program segments into memory. The value of *op* (defined in 3550 ``<sys/lock.h>``) determines which segments are locked. 3551 3552 .. availability:: Unix. 3553 3554 3555.. function:: popen(cmd, mode='r', buffering=-1) 3556 3557 Open a pipe to or from command *cmd*. 3558 The return value is an open file object 3559 connected to the pipe, which can be read or written depending on whether *mode* 3560 is ``'r'`` (default) or ``'w'``. The *buffering* argument has the same meaning as 3561 the corresponding argument to the built-in :func:`open` function. The 3562 returned file object reads or writes text strings rather than bytes. 3563 3564 The ``close`` method returns :const:`None` if the subprocess exited 3565 successfully, or the subprocess's return code if there was an 3566 error. On POSIX systems, if the return code is positive it 3567 represents the return value of the process left-shifted by one 3568 byte. If the return code is negative, the process was terminated 3569 by the signal given by the negated value of the return code. (For 3570 example, the return value might be ``- signal.SIGKILL`` if the 3571 subprocess was killed.) On Windows systems, the return value 3572 contains the signed integer return code from the child process. 3573 3574 This is implemented using :class:`subprocess.Popen`; see that class's 3575 documentation for more powerful ways to manage and communicate with 3576 subprocesses. 3577 3578 3579.. function:: posix_spawn(path, argv, env, *, file_actions=None, \ 3580 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \ 3581 setsigdef=(), scheduler=None) 3582 3583 Wraps the :c:func:`posix_spawn` C library API for use from Python. 3584 3585 Most users should use :func:`subprocess.run` instead of :func:`posix_spawn`. 3586 3587 The positional-only arguments *path*, *args*, and *env* are similar to 3588 :func:`execve`. 3589 3590 The *path* parameter is the path to the executable file.The *path* should 3591 contain a directory.Use :func:`posix_spawnp` to pass an executable file 3592 without directory. 3593 3594 The *file_actions* argument may be a sequence of tuples describing actions 3595 to take on specific file descriptors in the child process between the C 3596 library implementation's :c:func:`fork` and :c:func:`exec` steps. 3597 The first item in each tuple must be one of the three type indicator 3598 listed below describing the remaining tuple elements: 3599 3600 .. data:: POSIX_SPAWN_OPEN 3601 3602 (``os.POSIX_SPAWN_OPEN``, *fd*, *path*, *flags*, *mode*) 3603 3604 Performs ``os.dup2(os.open(path, flags, mode), fd)``. 3605 3606 .. data:: POSIX_SPAWN_CLOSE 3607 3608 (``os.POSIX_SPAWN_CLOSE``, *fd*) 3609 3610 Performs ``os.close(fd)``. 3611 3612 .. data:: POSIX_SPAWN_DUP2 3613 3614 (``os.POSIX_SPAWN_DUP2``, *fd*, *new_fd*) 3615 3616 Performs ``os.dup2(fd, new_fd)``. 3617 3618 These tuples correspond to the C library 3619 :c:func:`posix_spawn_file_actions_addopen`, 3620 :c:func:`posix_spawn_file_actions_addclose`, and 3621 :c:func:`posix_spawn_file_actions_adddup2` API calls used to prepare 3622 for the :c:func:`posix_spawn` call itself. 3623 3624 The *setpgroup* argument will set the process group of the child to the value 3625 specified. If the value specified is 0, the child's process group ID will be 3626 made the same as its process ID. If the value of *setpgroup* is not set, the 3627 child will inherit the parent's process group ID. This argument corresponds 3628 to the C library :c:data:`POSIX_SPAWN_SETPGROUP` flag. 3629 3630 If the *resetids* argument is ``True`` it will reset the effective UID and 3631 GID of the child to the real UID and GID of the parent process. If the 3632 argument is ``False``, then the child retains the effective UID and GID of 3633 the parent. In either case, if the set-user-ID and set-group-ID permission 3634 bits are enabled on the executable file, their effect will override the 3635 setting of the effective UID and GID. This argument corresponds to the C 3636 library :c:data:`POSIX_SPAWN_RESETIDS` flag. 3637 3638 If the *setsid* argument is ``True``, it will create a new session ID 3639 for `posix_spawn`. *setsid* requires :c:data:`POSIX_SPAWN_SETSID` 3640 or :c:data:`POSIX_SPAWN_SETSID_NP` flag. Otherwise, :exc:`NotImplementedError` 3641 is raised. 3642 3643 The *setsigmask* argument will set the signal mask to the signal set 3644 specified. If the parameter is not used, then the child inherits the 3645 parent's signal mask. This argument corresponds to the C library 3646 :c:data:`POSIX_SPAWN_SETSIGMASK` flag. 3647 3648 The *sigdef* argument will reset the disposition of all signals in the set 3649 specified. This argument corresponds to the C library 3650 :c:data:`POSIX_SPAWN_SETSIGDEF` flag. 3651 3652 The *scheduler* argument must be a tuple containing the (optional) scheduler 3653 policy and an instance of :class:`sched_param` with the scheduler parameters. 3654 A value of ``None`` in the place of the scheduler policy indicates that is 3655 not being provided. This argument is a combination of the C library 3656 :c:data:`POSIX_SPAWN_SETSCHEDPARAM` and :c:data:`POSIX_SPAWN_SETSCHEDULER` 3657 flags. 3658 3659 .. versionadded:: 3.8 3660 3661 .. availability:: Unix. 3662 3663.. function:: posix_spawnp(path, argv, env, *, file_actions=None, \ 3664 setpgroup=None, resetids=False, setsid=False, setsigmask=(), \ 3665 setsigdef=(), scheduler=None) 3666 3667 Wraps the :c:func:`posix_spawnp` C library API for use from Python. 3668 3669 Similar to :func:`posix_spawn` except that the system searches 3670 for the *executable* file in the list of directories specified by the 3671 :envvar:`PATH` environment variable (in the same way as for ``execvp(3)``). 3672 3673 .. versionadded:: 3.8 3674 3675 .. availability:: See :func:`posix_spawn` documentation. 3676 3677 3678.. function:: register_at_fork(*, before=None, after_in_parent=None, \ 3679 after_in_child=None) 3680 3681 Register callables to be executed when a new child process is forked 3682 using :func:`os.fork` or similar process cloning APIs. 3683 The parameters are optional and keyword-only. 3684 Each specifies a different call point. 3685 3686 * *before* is a function called before forking a child process. 3687 * *after_in_parent* is a function called from the parent process 3688 after forking a child process. 3689 * *after_in_child* is a function called from the child process. 3690 3691 These calls are only made if control is expected to return to the 3692 Python interpreter. A typical :mod:`subprocess` launch will not 3693 trigger them as the child is not going to re-enter the interpreter. 3694 3695 Functions registered for execution before forking are called in 3696 reverse registration order. Functions registered for execution 3697 after forking (either in the parent or in the child) are called 3698 in registration order. 3699 3700 Note that :c:func:`fork` calls made by third-party C code may not 3701 call those functions, unless it explicitly calls :c:func:`PyOS_BeforeFork`, 3702 :c:func:`PyOS_AfterFork_Parent` and :c:func:`PyOS_AfterFork_Child`. 3703 3704 There is no way to unregister a function. 3705 3706 .. availability:: Unix. 3707 3708 .. versionadded:: 3.7 3709 3710 3711.. function:: spawnl(mode, path, ...) 3712 spawnle(mode, path, ..., env) 3713 spawnlp(mode, file, ...) 3714 spawnlpe(mode, file, ..., env) 3715 spawnv(mode, path, args) 3716 spawnve(mode, path, args, env) 3717 spawnvp(mode, file, args) 3718 spawnvpe(mode, file, args, env) 3719 3720 Execute the program *path* in a new process. 3721 3722 (Note that the :mod:`subprocess` module provides more powerful facilities for 3723 spawning new processes and retrieving their results; using that module is 3724 preferable to using these functions. Check especially the 3725 :ref:`subprocess-replacements` section.) 3726 3727 If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new 3728 process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it 3729 exits normally, or ``-signal``, where *signal* is the signal that killed the 3730 process. On Windows, the process id will actually be the process handle, so can 3731 be used with the :func:`waitpid` function. 3732 3733 Note on VxWorks, this function doesn't return ``-signal`` when the new process is 3734 killed. Instead it raises OSError exception. 3735 3736 The "l" and "v" variants of the :func:`spawn\* <spawnl>` functions differ in how 3737 command-line arguments are passed. The "l" variants are perhaps the easiest 3738 to work with if the number of parameters is fixed when the code is written; the 3739 individual parameters simply become additional parameters to the 3740 :func:`spawnl\*` functions. The "v" variants are good when the number of 3741 parameters is variable, with the arguments being passed in a list or tuple as 3742 the *args* parameter. In either case, the arguments to the child process must 3743 start with the name of the command being run. 3744 3745 The variants which include a second "p" near the end (:func:`spawnlp`, 3746 :func:`spawnlpe`, :func:`spawnvp`, and :func:`spawnvpe`) will use the 3747 :envvar:`PATH` environment variable to locate the program *file*. When the 3748 environment is being replaced (using one of the :func:`spawn\*e <spawnl>` variants, 3749 discussed in the next paragraph), the new environment is used as the source of 3750 the :envvar:`PATH` variable. The other variants, :func:`spawnl`, 3751 :func:`spawnle`, :func:`spawnv`, and :func:`spawnve`, will not use the 3752 :envvar:`PATH` variable to locate the executable; *path* must contain an 3753 appropriate absolute or relative path. 3754 3755 For :func:`spawnle`, :func:`spawnlpe`, :func:`spawnve`, and :func:`spawnvpe` 3756 (note that these all end in "e"), the *env* parameter must be a mapping 3757 which is used to define the environment variables for the new process (they are 3758 used instead of the current process' environment); the functions 3759 :func:`spawnl`, :func:`spawnlp`, :func:`spawnv`, and :func:`spawnvp` all cause 3760 the new process to inherit the environment of the current process. Note that 3761 keys and values in the *env* dictionary must be strings; invalid keys or 3762 values will cause the function to fail, with a return value of ``127``. 3763 3764 As an example, the following calls to :func:`spawnlp` and :func:`spawnvpe` are 3765 equivalent:: 3766 3767 import os 3768 os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') 3769 3770 L = ['cp', 'index.html', '/dev/null'] 3771 os.spawnvpe(os.P_WAIT, 'cp', L, os.environ) 3772 3773 .. availability:: Unix, Windows. :func:`spawnlp`, :func:`spawnlpe`, :func:`spawnvp` 3774 and :func:`spawnvpe` are not available on Windows. :func:`spawnle` and 3775 :func:`spawnve` are not thread-safe on Windows; we advise you to use the 3776 :mod:`subprocess` module instead. 3777 3778 .. versionchanged:: 3.6 3779 Accepts a :term:`path-like object`. 3780 3781 3782.. data:: P_NOWAIT 3783 P_NOWAITO 3784 3785 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of 3786 functions. If either of these values is given, the :func:`spawn\*` functions 3787 will return as soon as the new process has been created, with the process id as 3788 the return value. 3789 3790 .. availability:: Unix, Windows. 3791 3792 3793.. data:: P_WAIT 3794 3795 Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of 3796 functions. If this is given as *mode*, the :func:`spawn\*` functions will not 3797 return until the new process has run to completion and will return the exit code 3798 of the process the run is successful, or ``-signal`` if a signal kills the 3799 process. 3800 3801 .. availability:: Unix, Windows. 3802 3803 3804.. data:: P_DETACH 3805 P_OVERLAY 3806 3807 Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of 3808 functions. These are less portable than those listed above. :const:`P_DETACH` 3809 is similar to :const:`P_NOWAIT`, but the new process is detached from the 3810 console of the calling process. If :const:`P_OVERLAY` is used, the current 3811 process will be replaced; the :func:`spawn\* <spawnl>` function will not return. 3812 3813 .. availability:: Windows. 3814 3815 3816.. function:: startfile(path[, operation]) 3817 3818 Start a file with its associated application. 3819 3820 When *operation* is not specified or ``'open'``, this acts like double-clicking 3821 the file in Windows Explorer, or giving the file name as an argument to the 3822 :program:`start` command from the interactive command shell: the file is opened 3823 with whatever application (if any) its extension is associated. 3824 3825 When another *operation* is given, it must be a "command verb" that specifies 3826 what should be done with the file. Common verbs documented by Microsoft are 3827 ``'print'`` and ``'edit'`` (to be used on files) as well as ``'explore'`` and 3828 ``'find'`` (to be used on directories). 3829 3830 :func:`startfile` returns as soon as the associated application is launched. 3831 There is no option to wait for the application to close, and no way to retrieve 3832 the application's exit status. The *path* parameter is relative to the current 3833 directory. If you want to use an absolute path, make sure the first character 3834 is not a slash (``'/'``); the underlying Win32 :c:func:`ShellExecute` function 3835 doesn't work if it is. Use the :func:`os.path.normpath` function to ensure that 3836 the path is properly encoded for Win32. 3837 3838 To reduce interpreter startup overhead, the Win32 :c:func:`ShellExecute` 3839 function is not resolved until this function is first called. If the function 3840 cannot be resolved, :exc:`NotImplementedError` will be raised. 3841 3842 .. availability:: Windows. 3843 3844 3845.. function:: system(command) 3846 3847 Execute the command (a string) in a subshell. This is implemented by calling 3848 the Standard C function :c:func:`system`, and has the same limitations. 3849 Changes to :data:`sys.stdin`, etc. are not reflected in the environment of 3850 the executed command. If *command* generates any output, it will be sent to 3851 the interpreter standard output stream. 3852 3853 On Unix, the return value is the exit status of the process encoded in the 3854 format specified for :func:`wait`. Note that POSIX does not specify the 3855 meaning of the return value of the C :c:func:`system` function, so the return 3856 value of the Python function is system-dependent. 3857 3858 On Windows, the return value is that returned by the system shell after 3859 running *command*. The shell is given by the Windows environment variable 3860 :envvar:`COMSPEC`: it is usually :program:`cmd.exe`, which returns the exit 3861 status of the command run; on systems using a non-native shell, consult your 3862 shell documentation. 3863 3864 The :mod:`subprocess` module provides more powerful facilities for spawning 3865 new processes and retrieving their results; using that module is preferable 3866 to using this function. See the :ref:`subprocess-replacements` section in 3867 the :mod:`subprocess` documentation for some helpful recipes. 3868 3869 .. audit-event:: os.system command os.system 3870 3871 .. availability:: Unix, Windows. 3872 3873 3874.. function:: times() 3875 3876 Returns the current global process times. 3877 The return value is an object with five attributes: 3878 3879 * :attr:`user` - user time 3880 * :attr:`system` - system time 3881 * :attr:`children_user` - user time of all child processes 3882 * :attr:`children_system` - system time of all child processes 3883 * :attr:`elapsed` - elapsed real time since a fixed point in the past 3884 3885 For backwards compatibility, this object also behaves like a five-tuple 3886 containing :attr:`user`, :attr:`system`, :attr:`children_user`, 3887 :attr:`children_system`, and :attr:`elapsed` in that order. 3888 3889 See the Unix manual page 3890 :manpage:`times(2)` and :manpage:`times(3)` manual page on Unix or `the GetProcessTimes MSDN 3891 <https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes>` 3892 _ on Windows. 3893 On Windows, only :attr:`user` and :attr:`system` are known; the other 3894 attributes are zero. 3895 3896 .. availability:: Unix, Windows. 3897 3898 .. versionchanged:: 3.3 3899 Return type changed from a tuple to a tuple-like object 3900 with named attributes. 3901 3902 3903.. function:: wait() 3904 3905 Wait for completion of a child process, and return a tuple containing its pid 3906 and exit status indication: a 16-bit number, whose low byte is the signal number 3907 that killed the process, and whose high byte is the exit status (if the signal 3908 number is zero); the high bit of the low byte is set if a core file was 3909 produced. 3910 3911 .. availability:: Unix. 3912 3913.. function:: waitid(idtype, id, options) 3914 3915 Wait for the completion of one or more child processes. 3916 *idtype* can be :data:`P_PID`, :data:`P_PGID` or :data:`P_ALL`. 3917 *id* specifies the pid to wait on. 3918 *options* is constructed from the ORing of one or more of :data:`WEXITED`, 3919 :data:`WSTOPPED` or :data:`WCONTINUED` and additionally may be ORed with 3920 :data:`WNOHANG` or :data:`WNOWAIT`. The return value is an object 3921 representing the data contained in the :c:type:`siginfo_t` structure, namely: 3922 :attr:`si_pid`, :attr:`si_uid`, :attr:`si_signo`, :attr:`si_status`, 3923 :attr:`si_code` or ``None`` if :data:`WNOHANG` is specified and there are no 3924 children in a waitable state. 3925 3926 .. availability:: Unix. 3927 3928 .. versionadded:: 3.3 3929 3930.. data:: P_PID 3931 P_PGID 3932 P_ALL 3933 3934 These are the possible values for *idtype* in :func:`waitid`. They affect 3935 how *id* is interpreted. 3936 3937 .. availability:: Unix. 3938 3939 .. versionadded:: 3.3 3940 3941.. data:: WEXITED 3942 WSTOPPED 3943 WNOWAIT 3944 3945 Flags that can be used in *options* in :func:`waitid` that specify what 3946 child signal to wait for. 3947 3948 .. availability:: Unix. 3949 3950 .. versionadded:: 3.3 3951 3952 3953.. data:: CLD_EXITED 3954 CLD_DUMPED 3955 CLD_TRAPPED 3956 CLD_CONTINUED 3957 3958 These are the possible values for :attr:`si_code` in the result returned by 3959 :func:`waitid`. 3960 3961 .. availability:: Unix. 3962 3963 .. versionadded:: 3.3 3964 3965 3966.. function:: waitpid(pid, options) 3967 3968 The details of this function differ on Unix and Windows. 3969 3970 On Unix: Wait for completion of a child process given by process id *pid*, and 3971 return a tuple containing its process id and exit status indication (encoded as 3972 for :func:`wait`). The semantics of the call are affected by the value of the 3973 integer *options*, which should be ``0`` for normal operation. 3974 3975 If *pid* is greater than ``0``, :func:`waitpid` requests status information for 3976 that specific process. If *pid* is ``0``, the request is for the status of any 3977 child in the process group of the current process. If *pid* is ``-1``, the 3978 request pertains to any child of the current process. If *pid* is less than 3979 ``-1``, status is requested for any process in the process group ``-pid`` (the 3980 absolute value of *pid*). 3981 3982 An :exc:`OSError` is raised with the value of errno when the syscall 3983 returns -1. 3984 3985 On Windows: Wait for completion of a process given by process handle *pid*, and 3986 return a tuple containing *pid*, and its exit status shifted left by 8 bits 3987 (shifting makes cross-platform use of the function easier). A *pid* less than or 3988 equal to ``0`` has no special meaning on Windows, and raises an exception. The 3989 value of integer *options* has no effect. *pid* can refer to any process whose 3990 id is known, not necessarily a child process. The :func:`spawn\* <spawnl>` 3991 functions called with :const:`P_NOWAIT` return suitable process handles. 3992 3993 .. versionchanged:: 3.5 3994 If the system call is interrupted and the signal handler does not raise an 3995 exception, the function now retries the system call instead of raising an 3996 :exc:`InterruptedError` exception (see :pep:`475` for the rationale). 3997 3998 3999.. function:: wait3(options) 4000 4001 Similar to :func:`waitpid`, except no process id argument is given and a 4002 3-element tuple containing the child's process id, exit status indication, 4003 and resource usage information is returned. Refer to 4004 :mod:`resource`.\ :func:`~resource.getrusage` for details on resource usage 4005 information. The option argument is the same as that provided to 4006 :func:`waitpid` and :func:`wait4`. 4007 4008 .. availability:: Unix. 4009 4010 4011.. function:: wait4(pid, options) 4012 4013 Similar to :func:`waitpid`, except a 3-element tuple, containing the child's 4014 process id, exit status indication, and resource usage information is returned. 4015 Refer to :mod:`resource`.\ :func:`~resource.getrusage` for details on 4016 resource usage information. The arguments to :func:`wait4` are the same 4017 as those provided to :func:`waitpid`. 4018 4019 .. availability:: Unix. 4020 4021 4022.. data:: WNOHANG 4023 4024 The option for :func:`waitpid` to return immediately if no child process status 4025 is available immediately. The function returns ``(0, 0)`` in this case. 4026 4027 .. availability:: Unix. 4028 4029 4030.. data:: WCONTINUED 4031 4032 This option causes child processes to be reported if they have been continued 4033 from a job control stop since their status was last reported. 4034 4035 .. availability:: some Unix systems. 4036 4037 4038.. data:: WUNTRACED 4039 4040 This option causes child processes to be reported if they have been stopped but 4041 their current state has not been reported since they were stopped. 4042 4043 .. availability:: Unix. 4044 4045 4046The following functions take a process status code as returned by 4047:func:`system`, :func:`wait`, or :func:`waitpid` as a parameter. They may be 4048used to determine the disposition of a process. 4049 4050.. function:: WCOREDUMP(status) 4051 4052 Return ``True`` if a core dump was generated for the process, otherwise 4053 return ``False``. 4054 4055 .. availability:: Unix. 4056 4057 4058.. function:: WIFCONTINUED(status) 4059 4060 Return ``True`` if the process has been continued from a job control stop, 4061 otherwise return ``False``. 4062 4063 .. availability:: Unix. 4064 4065 4066.. function:: WIFSTOPPED(status) 4067 4068 Return ``True`` if the process has been stopped, otherwise return 4069 ``False``. 4070 4071 .. availability:: Unix. 4072 4073 4074.. function:: WIFSIGNALED(status) 4075 4076 Return ``True`` if the process exited due to a signal, otherwise return 4077 ``False``. 4078 4079 .. availability:: Unix. 4080 4081 4082.. function:: WIFEXITED(status) 4083 4084 Return ``True`` if the process exited using the :manpage:`exit(2)` system call, 4085 otherwise return ``False``. 4086 4087 .. availability:: Unix. 4088 4089 4090.. function:: WEXITSTATUS(status) 4091 4092 If ``WIFEXITED(status)`` is true, return the integer parameter to the 4093 :manpage:`exit(2)` system call. Otherwise, the return value is meaningless. 4094 4095 .. availability:: Unix. 4096 4097 4098.. function:: WSTOPSIG(status) 4099 4100 Return the signal which caused the process to stop. 4101 4102 .. availability:: Unix. 4103 4104 4105.. function:: WTERMSIG(status) 4106 4107 Return the signal which caused the process to exit. 4108 4109 .. availability:: Unix. 4110 4111 4112Interface to the scheduler 4113-------------------------- 4114 4115These functions control how a process is allocated CPU time by the operating 4116system. They are only available on some Unix platforms. For more detailed 4117information, consult your Unix manpages. 4118 4119.. versionadded:: 3.3 4120 4121The following scheduling policies are exposed if they are supported by the 4122operating system. 4123 4124.. data:: SCHED_OTHER 4125 4126 The default scheduling policy. 4127 4128.. data:: SCHED_BATCH 4129 4130 Scheduling policy for CPU-intensive processes that tries to preserve 4131 interactivity on the rest of the computer. 4132 4133.. data:: SCHED_IDLE 4134 4135 Scheduling policy for extremely low priority background tasks. 4136 4137.. data:: SCHED_SPORADIC 4138 4139 Scheduling policy for sporadic server programs. 4140 4141.. data:: SCHED_FIFO 4142 4143 A First In First Out scheduling policy. 4144 4145.. data:: SCHED_RR 4146 4147 A round-robin scheduling policy. 4148 4149.. data:: SCHED_RESET_ON_FORK 4150 4151 This flag can be OR'ed with any other scheduling policy. When a process with 4152 this flag set forks, its child's scheduling policy and priority are reset to 4153 the default. 4154 4155 4156.. class:: sched_param(sched_priority) 4157 4158 This class represents tunable scheduling parameters used in 4159 :func:`sched_setparam`, :func:`sched_setscheduler`, and 4160 :func:`sched_getparam`. It is immutable. 4161 4162 At the moment, there is only one possible parameter: 4163 4164 .. attribute:: sched_priority 4165 4166 The scheduling priority for a scheduling policy. 4167 4168 4169.. function:: sched_get_priority_min(policy) 4170 4171 Get the minimum priority value for *policy*. *policy* is one of the 4172 scheduling policy constants above. 4173 4174 4175.. function:: sched_get_priority_max(policy) 4176 4177 Get the maximum priority value for *policy*. *policy* is one of the 4178 scheduling policy constants above. 4179 4180 4181.. function:: sched_setscheduler(pid, policy, param) 4182 4183 Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means 4184 the calling process. *policy* is one of the scheduling policy constants 4185 above. *param* is a :class:`sched_param` instance. 4186 4187 4188.. function:: sched_getscheduler(pid) 4189 4190 Return the scheduling policy for the process with PID *pid*. A *pid* of 0 4191 means the calling process. The result is one of the scheduling policy 4192 constants above. 4193 4194 4195.. function:: sched_setparam(pid, param) 4196 4197 Set a scheduling parameters for the process with PID *pid*. A *pid* of 0 means 4198 the calling process. *param* is a :class:`sched_param` instance. 4199 4200 4201.. function:: sched_getparam(pid) 4202 4203 Return the scheduling parameters as a :class:`sched_param` instance for the 4204 process with PID *pid*. A *pid* of 0 means the calling process. 4205 4206 4207.. function:: sched_rr_get_interval(pid) 4208 4209 Return the round-robin quantum in seconds for the process with PID *pid*. A 4210 *pid* of 0 means the calling process. 4211 4212 4213.. function:: sched_yield() 4214 4215 Voluntarily relinquish the CPU. 4216 4217 4218.. function:: sched_setaffinity(pid, mask) 4219 4220 Restrict the process with PID *pid* (or the current process if zero) to a 4221 set of CPUs. *mask* is an iterable of integers representing the set of 4222 CPUs to which the process should be restricted. 4223 4224 4225.. function:: sched_getaffinity(pid) 4226 4227 Return the set of CPUs the process with PID *pid* (or the current process 4228 if zero) is restricted to. 4229 4230 4231.. _os-path: 4232 4233Miscellaneous System Information 4234-------------------------------- 4235 4236 4237.. function:: confstr(name) 4238 4239 Return string-valued system configuration values. *name* specifies the 4240 configuration value to retrieve; it may be a string which is the name of a 4241 defined system value; these names are specified in a number of standards (POSIX, 4242 Unix 95, Unix 98, and others). Some platforms define additional names as well. 4243 The names known to the host operating system are given as the keys of the 4244 ``confstr_names`` dictionary. For configuration variables not included in that 4245 mapping, passing an integer for *name* is also accepted. 4246 4247 If the configuration value specified by *name* isn't defined, ``None`` is 4248 returned. 4249 4250 If *name* is a string and is not known, :exc:`ValueError` is raised. If a 4251 specific value for *name* is not supported by the host system, even if it is 4252 included in ``confstr_names``, an :exc:`OSError` is raised with 4253 :const:`errno.EINVAL` for the error number. 4254 4255 .. availability:: Unix. 4256 4257 4258.. data:: confstr_names 4259 4260 Dictionary mapping names accepted by :func:`confstr` to the integer values 4261 defined for those names by the host operating system. This can be used to 4262 determine the set of names known to the system. 4263 4264 .. availability:: Unix. 4265 4266 4267.. function:: cpu_count() 4268 4269 Return the number of CPUs in the system. Returns ``None`` if undetermined. 4270 4271 This number is not equivalent to the number of CPUs the current process can 4272 use. The number of usable CPUs can be obtained with 4273 ``len(os.sched_getaffinity(0))`` 4274 4275 4276 .. versionadded:: 3.4 4277 4278 4279.. function:: getloadavg() 4280 4281 Return the number of processes in the system run queue averaged over the last 4282 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was 4283 unobtainable. 4284 4285 .. availability:: Unix. 4286 4287 4288.. function:: sysconf(name) 4289 4290 Return integer-valued system configuration values. If the configuration value 4291 specified by *name* isn't defined, ``-1`` is returned. The comments regarding 4292 the *name* parameter for :func:`confstr` apply here as well; the dictionary that 4293 provides information on the known names is given by ``sysconf_names``. 4294 4295 .. availability:: Unix. 4296 4297 4298.. data:: sysconf_names 4299 4300 Dictionary mapping names accepted by :func:`sysconf` to the integer values 4301 defined for those names by the host operating system. This can be used to 4302 determine the set of names known to the system. 4303 4304 .. availability:: Unix. 4305 4306The following data values are used to support path manipulation operations. These 4307are defined for all platforms. 4308 4309Higher-level operations on pathnames are defined in the :mod:`os.path` module. 4310 4311 4312.. index:: single: . (dot); in pathnames 4313.. data:: curdir 4314 4315 The constant string used by the operating system to refer to the current 4316 directory. This is ``'.'`` for Windows and POSIX. Also available via 4317 :mod:`os.path`. 4318 4319 4320.. index:: single: ..; in pathnames 4321.. data:: pardir 4322 4323 The constant string used by the operating system to refer to the parent 4324 directory. This is ``'..'`` for Windows and POSIX. Also available via 4325 :mod:`os.path`. 4326 4327 4328.. index:: single: / (slash); in pathnames 4329.. index:: single: \ (backslash); in pathnames (Windows) 4330.. data:: sep 4331 4332 The character used by the operating system to separate pathname components. 4333 This is ``'/'`` for POSIX and ``'\\'`` for Windows. Note that knowing this 4334 is not sufficient to be able to parse or concatenate pathnames --- use 4335 :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally 4336 useful. Also available via :mod:`os.path`. 4337 4338 4339.. index:: single: / (slash); in pathnames 4340.. data:: altsep 4341 4342 An alternative character used by the operating system to separate pathname 4343 components, or ``None`` if only one separator character exists. This is set to 4344 ``'/'`` on Windows systems where ``sep`` is a backslash. Also available via 4345 :mod:`os.path`. 4346 4347 4348.. index:: single: . (dot); in pathnames 4349.. data:: extsep 4350 4351 The character which separates the base filename from the extension; for example, 4352 the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`. 4353 4354 4355.. index:: single: : (colon); path separator (POSIX) 4356 single: ; (semicolon) 4357.. data:: pathsep 4358 4359 The character conventionally used by the operating system to separate search 4360 path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` for 4361 Windows. Also available via :mod:`os.path`. 4362 4363 4364.. data:: defpath 4365 4366 The default search path used by :func:`exec\*p\* <execl>` and 4367 :func:`spawn\*p\* <spawnl>` if the environment doesn't have a ``'PATH'`` 4368 key. Also available via :mod:`os.path`. 4369 4370 4371.. data:: linesep 4372 4373 The string used to separate (or, rather, terminate) lines on the current 4374 platform. This may be a single character, such as ``'\n'`` for POSIX, or 4375 multiple characters, for example, ``'\r\n'`` for Windows. Do not use 4376 *os.linesep* as a line terminator when writing files opened in text mode (the 4377 default); use a single ``'\n'`` instead, on all platforms. 4378 4379 4380.. data:: devnull 4381 4382 The file path of the null device. For example: ``'/dev/null'`` for 4383 POSIX, ``'nul'`` for Windows. Also available via :mod:`os.path`. 4384 4385.. data:: RTLD_LAZY 4386 RTLD_NOW 4387 RTLD_GLOBAL 4388 RTLD_LOCAL 4389 RTLD_NODELETE 4390 RTLD_NOLOAD 4391 RTLD_DEEPBIND 4392 4393 Flags for use with the :func:`~sys.setdlopenflags` and 4394 :func:`~sys.getdlopenflags` functions. See the Unix manual page 4395 :manpage:`dlopen(3)` for what the different flags mean. 4396 4397 .. versionadded:: 3.3 4398 4399 4400Random numbers 4401-------------- 4402 4403 4404.. function:: getrandom(size, flags=0) 4405 4406 Get up to *size* random bytes. The function can return less bytes than 4407 requested. 4408 4409 These bytes can be used to seed user-space random number generators or for 4410 cryptographic purposes. 4411 4412 ``getrandom()`` relies on entropy gathered from device drivers and other 4413 sources of environmental noise. Unnecessarily reading large quantities of 4414 data will have a negative impact on other users of the ``/dev/random`` and 4415 ``/dev/urandom`` devices. 4416 4417 The flags argument is a bit mask that can contain zero or more of the 4418 following values ORed together: :py:data:`os.GRND_RANDOM` and 4419 :py:data:`GRND_NONBLOCK`. 4420 4421 See also the `Linux getrandom() manual page 4422 <http://man7.org/linux/man-pages/man2/getrandom.2.html>`_. 4423 4424 .. availability:: Linux 3.17 and newer. 4425 4426 .. versionadded:: 3.6 4427 4428.. function:: urandom(size) 4429 4430 Return a string of *size* random bytes suitable for cryptographic use. 4431 4432 This function returns random bytes from an OS-specific randomness source. The 4433 returned data should be unpredictable enough for cryptographic applications, 4434 though its exact quality depends on the OS implementation. 4435 4436 On Linux, if the ``getrandom()`` syscall is available, it is used in 4437 blocking mode: block until the system urandom entropy pool is initialized 4438 (128 bits of entropy are collected by the kernel). See the :pep:`524` for 4439 the rationale. On Linux, the :func:`getrandom` function can be used to get 4440 random bytes in non-blocking mode (using the :data:`GRND_NONBLOCK` flag) or 4441 to poll until the system urandom entropy pool is initialized. 4442 4443 On a Unix-like system, random bytes are read from the ``/dev/urandom`` 4444 device. If the ``/dev/urandom`` device is not available or not readable, the 4445 :exc:`NotImplementedError` exception is raised. 4446 4447 On Windows, it will use ``CryptGenRandom()``. 4448 4449 .. seealso:: 4450 The :mod:`secrets` module provides higher level functions. For an 4451 easy-to-use interface to the random number generator provided by your 4452 platform, please see :class:`random.SystemRandom`. 4453 4454 .. versionchanged:: 3.6.0 4455 On Linux, ``getrandom()`` is now used in blocking mode to increase the 4456 security. 4457 4458 .. versionchanged:: 3.5.2 4459 On Linux, if the ``getrandom()`` syscall blocks (the urandom entropy pool 4460 is not initialized yet), fall back on reading ``/dev/urandom``. 4461 4462 .. versionchanged:: 3.5 4463 On Linux 3.17 and newer, the ``getrandom()`` syscall is now used 4464 when available. On OpenBSD 5.6 and newer, the C ``getentropy()`` 4465 function is now used. These functions avoid the usage of an internal file 4466 descriptor. 4467 4468.. data:: GRND_NONBLOCK 4469 4470 By default, when reading from ``/dev/random``, :func:`getrandom` blocks if 4471 no random bytes are available, and when reading from ``/dev/urandom``, it blocks 4472 if the entropy pool has not yet been initialized. 4473 4474 If the :py:data:`GRND_NONBLOCK` flag is set, then :func:`getrandom` does not 4475 block in these cases, but instead immediately raises :exc:`BlockingIOError`. 4476 4477 .. versionadded:: 3.6 4478 4479.. data:: GRND_RANDOM 4480 4481 If this bit is set, then random bytes are drawn from the 4482 ``/dev/random`` pool instead of the ``/dev/urandom`` pool. 4483 4484 .. versionadded:: 3.6 4485