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