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