"os" --- Miscellaneous operating system interfaces
**************************************************

**Code source:** Lib/os.py

======================================================================

Ce module fournit une façon portable d'utiliser les fonctionnalités
dépendantes du système d'exploitation.  Si vous voulez simplement lire
ou écrire un fichier, voir "open()", si vous voulez manipuler les
chemins de fichiers, voir le module "os.path", et si vous voulez lire
toutes les lignes de tous les fichiers de la ligne de commande, voir
le module "fileinput". Pour la création de fichiers et de répertoires
temporaires, voir le module "tempfile", et pour la manipulation de
fichiers et de répertoires de haut niveau, voir le module "shutil".

Notes sur la disponibilité de ces fonctions :

* La conception des modules natifs Python dépendants du système
  d'exploitation est qu'une même fonctionnalité utilise une même
  interface. Par exemple, la fonction "os.stat(path)" renvoie des
  informations sur les statistiques de *path* dans le même format (qui
  est originaire de l'interface POSIX).

* Les extensions propres à un certain système d'exploitation sont
  également disponible par le module "os", mais les utiliser est bien
  entendu une menace pour la portabilité.

* Toutes les fonctions acceptant les chemins ou noms de fichiers
  acceptent aussi bien des *bytes* que des *string*, et si un chemin
  ou un nom de fichier est renvoyé, il sera du même type.

* On VxWorks, os.popen, os.fork, os.execv and os.spawn*p* are not
  supported.

* On WebAssembly platforms "wasm32-emscripten" and "wasm32-wasi",
  large parts of the "os" module are not available or behave
  differently. API related to processes (e.g. "fork()", "execve()"),
  signals (e.g. "kill()", "wait()"), and resources (e.g. "nice()") are
  not available. Others like "getuid()" and "getpid()" are emulated or
  stubs.

Note:

  Toutes les fonctions de ce module lèvent une "OSError" (ou une de
  ses sous-classes) dans le cas d'un chemin ou nom de fichier invalide
  ou inaccessible, ou si d'autres arguments sont de type correct mais
  non géré par le système d'exploitation.

exception os.error

   Un alias pour les exceptions natives "OSError".

os.name

   Le nom du module importé dépendant du système d'exploitation.  Les
   noms suivants ont actuellement été enregistrés : "'posix'", "'nt'",
   "'java'".

   Voir aussi:

     "sys.platform" has a finer granularity.  "os.uname()" gives
     system-dependent version information.

     Le module "platform" fournit des vérifications détaillées pour
     l'identité du système.


Noms de fichiers, arguments en ligne de commande, et variables d'environnement
==============================================================================

In Python, file names, command line arguments, and environment
variables are represented using the string type. On some systems,
decoding these strings to and from bytes is necessary before passing
them to the operating system. Python uses the *filesystem encoding and
error handler* to perform this conversion (see
"sys.getfilesystemencoding()").

The *filesystem encoding and error handler* are configured at Python
startup by the "PyConfig_Read()" function: see "filesystem_encoding"
and "filesystem_errors" members of "PyConfig".

Modifié dans la version 3.1: On some systems, conversion using the
file system encoding may fail. In this case, Python uses the
surrogateescape encoding error handler, which means that undecodable
bytes are replaced by a Unicode character U+DC*xx* on decoding, and
these are again translated to the original byte on encoding.

The *file system encoding* must guarantee to successfully decode all
bytes below 128. If the file system encoding fails to provide this
guarantee, API functions can raise "UnicodeError".

See also the *locale encoding*.


Python UTF-8 Mode
=================

Ajouté dans la version 3.7: See **PEP 540** for more details.

The Python UTF-8 Mode ignores the *locale encoding* and forces the
usage of the UTF-8 encoding:

* Use UTF-8 as the *filesystem encoding*.

* "sys.getfilesystemencoding()" returns "'utf-8'".

* "locale.getpreferredencoding()" returns "'utf-8'" (the
  *do_setlocale* argument has no effect).

* "sys.stdin", "sys.stdout", and "sys.stderr" all use UTF-8 as their
  text encoding, with the "surrogateescape" error handler being
  enabled for "sys.stdin" and "sys.stdout" ("sys.stderr" continues to
  use "backslashreplace" as it does in the default locale-aware mode)

* On Unix, "os.device_encoding()" returns "'utf-8'" rather than the
  device encoding.

Note that the standard stream settings in UTF-8 mode can be overridden
by "PYTHONIOENCODING" (just as they can be in the default locale-aware
mode).

As a consequence of the changes in those lower level APIs, other
higher level APIs also exhibit different default behaviours:

* Command line arguments, environment variables and filenames are
  decoded to text using the UTF-8 encoding.

* "os.fsdecode()" and "os.fsencode()" use the UTF-8 encoding.

* "open()", "io.open()", and "codecs.open()" use the UTF-8 encoding by
  default. However, they still use the strict error handler by default
  so that attempting to open a binary file in text mode is likely to
  raise an exception rather than producing nonsense data.

The Python UTF-8 Mode is enabled if the LC_CTYPE locale is "C" or
"POSIX" at Python startup (see the "PyConfig_Read()" function).

It can be enabled or disabled using the "-X utf8" command line option
and the "PYTHONUTF8" environment variable.

If the "PYTHONUTF8" environment variable is not set at all, then the
interpreter defaults to using the current locale settings, *unless*
the current locale is identified as a legacy ASCII-based locale (as
described for "PYTHONCOERCECLOCALE"), and locale coercion is either
disabled or fails. In such legacy locales, the interpreter will
default to enabling UTF-8 mode unless explicitly instructed not to do
so.

The Python UTF-8 Mode can only be enabled at the Python startup. Its
value can be read from "sys.flags.utf8_mode".

See also the UTF-8 mode on Windows and the *filesystem encoding and
error handler*.

Voir aussi:

  **PEP 686**
     Python 3.15 will make Python UTF-8 Mode default.


Paramètres de processus
=======================

Ces fonctions et valeurs fournissent des informations et agissent sur
le processus actuel et sur l'utilisateur.

os.ctermid()

   Renvoie l'identifiant de fichier correspondant au terminal
   contrôlant le processus.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.environ

   A *mapping* object where keys and values are strings that represent
   the process environment.  For example, "environ['HOME']" is the
   pathname of your home directory (on some platforms), and is
   equivalent to "getenv("HOME")" in C.

   This mapping is captured the first time the "os" module is
   imported, typically during Python startup as part of processing
   "site.py".  Changes to the environment made after this time are not
   reflected in "os.environ", except for changes made by modifying
   "os.environ" directly.

   This mapping may be used to modify the environment as well as query
   the environment.  "putenv()" will be called automatically when the
   mapping is modified.

   Sur Unix, les clefs et les valeurs utilisent
   "sys.getfilesystemencoding()" et le gestionnaire d'erreurs
   "surrogateescape". Utilisez "environb" si vous désirez utiliser un
   encodage différent.

   On Windows, the keys are converted to uppercase. This also applies
   when getting, setting, or deleting an item. For example,
   "environ['monty'] = 'python'" maps the key "'MONTY'" to the value
   "'python'".

   Note:

     Calling "putenv()" directly does not change "os.environ", so it's
     better to modify "os.environ".

   Note:

     On some platforms, including FreeBSD and macOS, setting "environ"
     may cause memory leaks.  Refer to the system documentation for
     "putenv()".

   You can delete items in this mapping to unset environment
   variables. "unsetenv()" will be called automatically when an item
   is deleted from "os.environ", and when one of the "pop()" or
   "clear()" methods is called.

   Modifié dans la version 3.9: Mis à jour pour gérer les opérateurs
   *merge* ("|") et *update* ("|=") de **PEP 584**.

os.environb

   Bytes version of "environ": a *mapping* object where both keys and
   values are "bytes" objects representing the process environment.
   "environ" and "environb" are synchronized (modifying "environb"
   updates "environ", and vice versa).

   "environb" is only available if "supports_bytes_environ" is "True".

   Ajouté dans la version 3.2.

   Modifié dans la version 3.9: Mis à jour pour gérer les opérateurs
   *merge* ("|") et *update* ("|=") de **PEP 584**.

os.chdir(path)
os.fchdir(fd)
os.getcwd()

   Ces fonctions sont décrites dans le chapitre Fichiers et
   répertoires.

os.fsencode(filename)

   Encode *path-like* *filename* to the *filesystem encoding and error
   handler*; return "bytes" unchanged.

   "fsdecode()" est la fonction inverse.

   Ajouté dans la version 3.2.

   Modifié dans la version 3.6: Ajout de la prise en charge des objets
   implémentant l'interface "os.PathLike".

os.fsdecode(filename)

   Decode the *path-like* *filename* from the *filesystem encoding and
   error handler*; return "str" unchanged.

   "fsencode()" est la fonction inverse.

   Ajouté dans la version 3.2.

   Modifié dans la version 3.6: Ajout de la prise en charge des objets
   implémentant l'interface "os.PathLike".

os.fspath(path)

   Renvoie une représentation du chemin utilisable par le système de
   fichiers.

   Si un objet "str" ou "bytes" est passé, il est renvoyé inchangé.
   Autrement, "__fspath__()" est appelée et sa valeur renvoyée tant
   qu'elle est un objet "str" ou "bytes". Dans tous les autres cas,
   une "TypeError" est levée.

   Ajouté dans la version 3.6.

class os.PathLike

   *Classe mère abstraite* pour les objets représentant un chemin du
   système de fichiers, comme "pathlib.PurePath".

   Ajouté dans la version 3.6.

   abstractmethod __fspath__()

      Renvoie une représentation de l'objet utilisable par le système
      de fichiers.

      La méthode ne devrait renvoyer que des objets "str" ou "bytes",
      avec une préférence pour les "str".

os.getenv(key, default=None)

   Return the value of the environment variable *key* as a string if
   it exists, or *default* if it doesn't. *key* is a string. Note that
   since "getenv()" uses "os.environ", the mapping of "getenv()" is
   similarly also captured on import, and the function may not reflect
   future environment changes.

   Sur Unix, les clefs et les valeurs sont décodées avec
   "sys.getfilesystemencoding()" et le gestionnaire d'erreurs
   "surrogateescape". Utilisez "os.getenvb()" si vous voulez utiliser
   un encodage différent.

   Disponibilité : Unix, Windows.

os.getenvb(key, default=None)

   Return the value of the environment variable *key* as bytes if it
   exists, or *default* if it doesn't. *key* must be bytes. Note that
   since "getenvb()" uses "os.environb", the mapping of "getenvb()" is
   similarly also captured on import, and the function may not reflect
   future environment changes.

   "getenvb()" is only available if "supports_bytes_environ" is
   "True".

   Disponibilité : Unix.

   Ajouté dans la version 3.2.

os.get_exec_path(env=None)

   Renvoie la liste des dossiers qui seront parcourus pour trouver un
   exécutable, similaire à un shell lorsque il lance un processus.
   *env*, quand spécifié, doit être un dictionnaire de variable
   d'environnement  afin d'y rechercher le PATH. Par défaut quand
   *env* est "None", "environ" est utilisé.

   Ajouté dans la version 3.2.

os.getegid()

   Renvoie l'identifiant du groupe effectif du processus actuel. Ça
   correspond au bit "*set id*" du fichier qui s'exécute dans le
   processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.geteuid()

   Renvoie l'identifiant de l'utilisateur effectif du processus
   actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.getgid()

   Renvoie l'identifiant de groupe réel du processus actuel.

   Disponibilité : Unix.

   The function is a stub on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

os.getgrouplist(user, group, /)

   Return list of group ids that *user* belongs to. If *group* is not
   in the list, it is included; typically, *group* is specified as the
   group ID field from the password record for *user*, because that
   group ID will otherwise be potentially omitted.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.getgroups()

   Renvoie une liste d'identifiants de groupes additionnels associés
   au processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Note:

     On macOS, "getgroups()" behavior differs somewhat from other Unix
     platforms. If the Python interpreter was built with a deployment
     target of "10.5" or earlier, "getgroups()" returns the list of
     effective group ids associated with the current user process;
     this list is limited to a system-defined number of entries,
     typically 16, and may be modified by calls to "setgroups()" if
     suitably privileged. If built with a deployment target greater
     than "10.5", "getgroups()" returns the current group access list
     for the user associated with the effective user id of the
     process; the group access list may change over the lifetime of
     the process, it is not affected by calls to "setgroups()", and
     its length is not limited to 16.  The deployment target value,
     "MACOSX_DEPLOYMENT_TARGET", can be obtained with
     "sysconfig.get_config_var()".

os.getlogin()

   Renvoie le nom de l'utilisateur connecté sur le terminal contrôlant
   le processus. Dans la plupart des cas, il est plus utile d'utiliser
   "getpass.getuser()" puisque cette fonction consulte les variables
   d'environnement "LOGNAME" et "USERNAME" pour savoir qui est
   l'utilisateur, et se replie finalement sur
   "pwd.getpwduid(os.getuid())[0]" pour avoir le nom lié à
   l'identifiant de l'utilisateur courant.

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

os.getpgid(pid)

   Renvoie l'identifiant de groupe de processus du processus de PID
   *pid*. Si *pid* vaut 0, l'identifiant de groupe de processus du
   processus actuel est renvoyé.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.getpgrp()

   Renvoie l'identifiant du groupe de processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.getpid()

   Renvoie l'identifiant du processus actuel.

   The function is a stub on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

os.getppid()

   Renvoie l'identifiant du processus parent. Quand le processus
   parent est terminé, sur Unix, l'identifiant renvoyé est 1 pour le
   processus *init*, sur Windows, c'est toujours le même id, qui peut
   déjà avoir été réutilisé par un autre processus.

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

   Modifié dans la version 3.2: Prise en charge sur Windows.

os.getpriority(which, who)

   Récupère la priorité d'ordonnancement des programmes. La valeur
   *which* est une des constantes suivantes : "PRIO_PROCESS",
   "PRIO_PGRP", ou "PRIO_USER", et la valeur *who* est interprétée par
   rapport à *which* (un id de processus pour "PRIO_PROCESS", un id de
   groupe de processus pour "PRIO_PGRP", et un id d'utilisateur pour
   "PRIO_USER"). Une valeur nulle pour *who* dénote (respectivement)
   le processus appelant, le groupe de processus du processus
   appelant, ou l'identifiant d'utilisateur réel du processus
   appelant.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER

   Paramètres pour les fonctions "getpriority()" et "setpriority()".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.PRIO_DARWIN_THREAD
os.PRIO_DARWIN_PROCESS
os.PRIO_DARWIN_BG
os.PRIO_DARWIN_NONUI

   Paramètres pour les fonctions "getpriority()" et "setpriority()".

   Availability: macOS

   Ajouté dans la version 3.12.

os.getresuid()

   Renvoie un triplet (*ruid*, *euid*, *suid*) dénotant les
   identifiants de l'utilisateur réel, effectif et sauvé du processus
   actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.2.

os.getresgid()

   Renvoie un triplet (*rgid*, *egid*, *sgid*) dénotant les
   identifiants des groupes de processus réel effectif, et sauvé du
   processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.2.

os.getuid()

   Renvoie l'identifiant réel du processus actuel.

   Disponibilité : Unix.

   The function is a stub on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

os.initgroups(username, gid, /)

   Appelle la fonction système *initgroups* pour initialiser la liste
   des groupes d'accès des groupes dont *username* est membre, plus le
   groupe spécifié par *gid*.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.2.

os.putenv(key, value, /)

   Assigne la chaîne de caractères *value* à la variable
   d'environnement *key*. De tels changements à l'environnement
   affectent les sous-processus lancés par "os.system()", "popen()" ou
   "fork()" et "execv()".

   Assignments to items in "os.environ" are automatically translated
   into corresponding calls to "putenv()"; however, calls to
   "putenv()" don't update "os.environ", so it is actually preferable
   to assign to items of "os.environ". This also applies to "getenv()"
   and "getenvb()", which respectively use "os.environ" and
   "os.environb" in their implementations.

   Note:

     On some platforms, including FreeBSD and macOS, setting "environ"
     may cause memory leaks. Refer to the system documentation for
     "putenv()".

   Raises an auditing event "os.putenv" with arguments "key", "value".

   Modifié dans la version 3.9: The function is now always available.

os.setegid(egid, /)

   Définit l'identifiant du groupe de processus effectif du processus
   actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.seteuid(euid, /)

   Définit l'identifiant de l'utilisateur effectif du processus
   actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setgid(gid, /)

   Définit l'identifiant du groupe de processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setgroups(groups, /)

   Place *groups* dans la liste d'identifiants de groupes additionnels
   associée. *groups* doit être une séquence, et chaque élément doit
   être un nombre entier identifiant un groupe. Cette opération est
   typiquement disponible uniquement pour le super utilisateur.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Note:

     On macOS, the length of *groups* may not exceed the system-
     defined maximum number of effective group ids, typically 16. See
     the documentation for "getgroups()" for cases where it may not
     return the same group list set by calling setgroups().

os.setns(fd, nstype=0)

   Reassociate the current thread with a Linux namespace. See the
   *setns(2)* and *namespaces(7)* man pages for more details.

   If *fd* refers to a "/proc/*pid*/ns/" link, "setns()" reassociates
   the calling thread with the namespace associated with that link,
   and *nstype* may be set to one of the CLONE_NEW* constants to
   impose constraints on the operation ("0" means no constraints).

   Since Linux 5.8, *fd* may refer to a PID file descriptor obtained
   from "pidfd_open()". In this case, "setns()" reassociates the
   calling thread into one or more of the same namespaces as the
   thread referred to by *fd*. This is subject to any constraints
   imposed by *nstype*, which is a bit mask combining one or more of
   the CLONE_NEW* constants, e.g. "setns(fd, os.CLONE_NEWUTS |
   os.CLONE_NEWPID)". The caller's memberships in unspecified
   namespaces are left unchanged.

   *fd* can be any object with a "fileno()" method, or a raw file
   descriptor.

   This example reassociates the thread with the "init" process's
   network namespace:

      fd = os.open("/proc/1/ns/net", os.O_RDONLY)
      os.setns(fd, os.CLONE_NEWNET)
      os.close(fd)

   Availability: Linux >= 3.0 with glibc >= 2.14.

   Ajouté dans la version 3.12.

   Voir aussi: The "unshare()" function.

os.setpgrp()

   Call the system call "setpgrp()" or "setpgrp(0, 0)" depending on
   which version is implemented (if any).  See the Unix manual for the
   semantics.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setpgid(pid, pgrp, /)

   Call the system call "setpgid()" to set the process group id of the
   process with id *pid* to the process group with id *pgrp*.  See the
   Unix manual for the semantics.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setpriority(which, who, priority)

   Définit la priorité d'ordonnancement des programmes. La valeur
   *which* est une des constantes suivantes : "PRIO_PROCESS",
   "PRIO_PGRP", ou "PRIO_USER", et *who* est interprété en fonction de
   *which* (un PID pour "PRIO_PROCESS", un identifiant de groupe de
   processus pour "PRIO_PGRP", et un identifiant d'utilisateur pour
   "PRIO_USER"). Une valeur nulle pour *who* dénote (respectivement)
   le processus appelant, le groupe de processus du processus
   appelant, ou l'identifiant de l'utilisateur réel du processus
   appelant. *priority* est une valeur comprise entre "-20" et "19".
   La priorité par défaut est 0 ; les priorités plus faibles amènent à
   un ordonnancement plus favorable.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.setregid(rgid, egid, /)

   Définit l'identifiant des groupes réel et effectif du processus
   actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setresgid(rgid, egid, sgid, /)

   Définit l'identifiant des groupes réel, effectif et sauvé du
   processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.2.

os.setresuid(ruid, euid, suid, /)

   Définit l'identifiant des utilisateurs réel, effectif et sauvé du
   processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.2.

os.setreuid(ruid, euid, /)

   Définit l'identifiant des utilisateurs réel et effectif du
   processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.getsid(pid, /)

   Call the system call "getsid()".  See the Unix manual for the
   semantics.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setsid()

   Call the system call "setsid()".  See the Unix manual for the
   semantics.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.setuid(uid, /)

   Définit l'identifiant de l'utilisateur du processus actuel.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.strerror(code, /)

   Return the error message corresponding to the error code in *code*.
   On platforms where "strerror()" returns "NULL" when given an
   unknown error number, "ValueError" is raised.

os.supports_bytes_environ

   "True" si le type natif de l'environnement du système
   d'exploitation est *bytes* (par exemple : "False" sur Windows).

   Ajouté dans la version 3.2.

os.umask(mask, /)

   Définit le *umask* actuel et renvoie la valeur précédente.

   The function is a stub on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

os.uname()

   Renvoie des informations identifiant le système d'exploitation
   actuel. La valeur de retour est un objet à cinq attributs :

   * "sysname" — nom du système d'exploitation

   * "nodename" — nom de la machine sur le réseau (dépendant de
     l'implémentation)

   * "release" — *release* du système d'exploitation

   * "version" — version du système d'exploitation

   * "machine" — identifiant du matériel

   Pour la rétrocompatibilité, cet objet est également itérable, se
   comportant comme un quintuplet contenant "sysname", "nodename",
   "release", "version", et "machine" dans cet ordre.

   Certains systèmes tronquent "nodename" à 8 caractères ou à la
   composante dominante. Un meilleur moyen de récupérer le nom de
   l'hôte est "socket.gethostname()" ou encore
   "socket.gethostbyaddr(socket.gethostname())".

   Disponibilité : Unix.

   Modifié dans la version 3.3: Type de retour changé d'un quintuplet
   en un objet compatible avec le type *n*-uplet, avec des attributs
   nommés.

os.unsetenv(key, /)

   Supprime la variable d'environnement appelée *key*. De tels
   changements à l'environnement affectent les sous-processus lancés
   avec "os.system()", "popen()" ou "fork()" et "execv()".

   Deletion of items in "os.environ" is automatically translated into
   a corresponding call to "unsetenv()"; however, calls to
   "unsetenv()" don't update "os.environ", so it is actually
   preferable to delete items of "os.environ".

   Raises an auditing event "os.unsetenv" with argument "key".

   Modifié dans la version 3.9: The function is now always available
   and is also available on Windows.

os.unshare(flags)

   Disassociate parts of the process execution context, and move them
   into a newly created namespace. See the *unshare(2)* man page for
   more details. The *flags* argument is a bit mask, combining zero or
   more of the CLONE_* constants, that specifies which parts of the
   execution context should be unshared from their existing
   associations and moved to a new namespace. If the *flags* argument
   is "0", no changes are made to the calling process's execution
   context.

   Availability: Linux >= 2.6.16.

   Ajouté dans la version 3.12.

   Voir aussi: The "setns()" function.

Flags to the "unshare()" function, if the implementation supports
them. See *unshare(2)* in the Linux manual for their exact effect and
availability.

os.CLONE_FILES
os.CLONE_FS
os.CLONE_NEWCGROUP
os.CLONE_NEWIPC
os.CLONE_NEWNET
os.CLONE_NEWNS
os.CLONE_NEWPID
os.CLONE_NEWTIME
os.CLONE_NEWUSER
os.CLONE_NEWUTS
os.CLONE_SIGHAND
os.CLONE_SYSVSEM
os.CLONE_THREAD
os.CLONE_VM


Création de fichiers objets
===========================

These functions create new *file objects*.  (See also "open()" for
opening file descriptors.)

os.fdopen(fd, *args, **kwargs)

   Renvoie un fichier objet ouvert connecté au descripteur de fichier
   *fd*. C'est un alias de la primitive "open()" et accepte les mêmes
   arguments. La seule différence est que le premier argument de
   "fdopen()" doit toujours être un entier.


Opérations sur les descripteurs de fichiers
===========================================

Ces fonctions opèrent sur des flux d'entrées/sorties référencés par
des descripteurs de fichiers.

Les descripteurs de fichiers sont de petits entiers correspondant à un
fichier qui a été ouvert par le processus courant. Par exemple,
l'entrée standard est habituellement le descripteur de fichier 0, la
sortie standard est 1, et le flux standard d'erreur est 2. Les autres
fichiers ouverts par un processus vont se voir assigner 3, 4, 5, etc.
Le nom « descripteur de fichier » est légèrement trompeur : sur les
plate-formes Unix, les connecteurs (*socket* en anglais) et les tubes
(*pipe* en anglais) sont également référencés par des descripteurs.

La méthode "fileno()" peut être utilisée pour obtenir le descripteur
de fichier associé à un *file object* quand nécessaire. Notez
qu'utiliser le descripteur directement outrepasse les méthodes du
fichier objet, ignorant donc des aspects tels que la mise en tampon
interne des données.

os.close(fd)

   Ferme le descripteur de fichier *fd*.

   Note:

     Cette fonction est destinée aux opérations d'entrées/sorties de
     bas niveau et doit être appliquée à un descripteur de fichier
     comme ceux donnés par "os.open()" ou "pipe()". Pour fermer un «
     fichier objet » renvoyé par la primitive "open()", "popen()" ou
     "fdopen()", il faut utiliser sa méthode "close()".

os.closerange(fd_low, fd_high, /)

   Ferme tous les descripteurs de fichiers entre *fd_low* (inclus)
   jusque *fd_high* (exclus), en ignorant les erreurs. Équivalent
   (mais beaucoup plus rapide) à :

      for fd in range(fd_low, fd_high):
          try:
              os.close(fd)
          except OSError:
              pass

os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

   Copy *count* bytes from file descriptor *src*, starting from offset
   *offset_src*, to file descriptor *dst*, starting from offset
   *offset_dst*. If *offset_src* is "None", then *src* is read from
   the current position; respectively for *offset_dst*.

   In Linux kernel older than 5.3, the files pointed to by *src* and
   *dst* must reside in the same filesystem, otherwise an "OSError" is
   raised with "errno" set to "errno.EXDEV".

   This copy is done without the additional cost of transferring data
   from the kernel to user space and then back into the kernel.
   Additionally, some filesystems could implement extra optimizations,
   such as the use of reflinks (i.e., two or more inodes that share
   pointers to the same copy-on-write disk blocks; supported file
   systems include btrfs and XFS) and server-side copy (in the case of
   NFS).

   The function copies bytes between two file descriptors. Text
   options, like the encoding and the line ending, are ignored.

   La valeur de retour est le nombre d'octets copiés. Cela peut être
   moins que le nombre demandé.

   Note:

     On Linux, "os.copy_file_range()" should not be used for copying a
     range of a pseudo file from a special filesystem like procfs and
     sysfs. It will always copy no bytes and return 0 as if the file
     was empty because of a known Linux kernel issue.

   Disponibilité : noyaux Linux >= 4.5 avec glibc >= 2.27.

   Ajouté dans la version 3.8.

os.device_encoding(fd)

   Renvoie une chaîne de caractères décrivant l'encodage du
   périphérique associé à *fd* s'il est connecté à un terminal, sinon
   renvoie "None".

   On Unix, if the Python UTF-8 Mode is enabled, return "'UTF-8'"
   rather than the device encoding.

   Modifié dans la version 3.10: On Unix, the function now implements
   the Python UTF-8 Mode.

os.dup(fd, /)

   Renvoie une copie du descripteur de fichier *fd*. Le nouveau
   descripteur de fichier est non-héritable.

   Sur Windows, quand un flux standard est dupliqué (0 : *stdin*, 1 :
   *stdout*, 2 : *stderr*), le nouveau descripteur de fichier est
   héritable.

   Disponibilité : pas disponible pour WASI.

   Modifié dans la version 3.4: Le nouveau descripteur de fichier est
   maintenant non-héritable.

os.dup2(fd, fd2, inheritable=True)

   Copie le descripteur de fichier *fd* dans *fd2*, en fermant le
   second d'abord si nécessaire. Renvoie *fd2*. Le nouveau descripteur
   de fichier est héritable par défaut, ou non-héritable si
   *inheritable* vaut "False".

   Disponibilité : pas disponible pour WASI.

   Modifié dans la version 3.4: Ajout du paramètre optionnel
   *inheritable*.

   Modifié dans la version 3.7: Renvoie *fd2* en cas de succès.
   Auparavant, "None" était toujours renvoyé.

os.fchmod(fd, mode)

   Change le mode du fichier donné par *fd* en la valeur numérique
   *mode*. Voir la documentation de "chmod()" pour les valeurs
   possibles de *mode*. Depuis Python 3.3, c'est équivalent à
   "os.chmod(fd, mode)".

   Raises an auditing event "os.chmod" with arguments "path", "mode",
   "dir_fd".

   Disponibilité : Unix.

   The function is limited on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

os.fchown(fd, uid, gid)

   Change le propriétaire et l'identifiant de groupe du fichier donné
   par *fd* en les valeurs numériques *uid* et *gid*. Pour laisser
   l'un des identifiants inchangés, mettez-le à "-1". Voir "chown()".
   Depuis Python 3.3, c'est équivalent à "os.chown(fd, uid, gid)".

   Raises an auditing event "os.chown" with arguments "path", "uid",
   "gid", "dir_fd".

   Disponibilité : Unix.

   The function is limited on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

os.fdatasync(fd)

   Force l'écriture du fichier ayant le descripteur *fd* sur le
   disque. Ne force pas la mise à jour des méta-données.

   Disponibilité : Unix.

   Note:

     Cette fonction n'est pas disponible sur MacOS.

os.fpathconf(fd, name, /)

   Renvoie les informations de la configuration du système pour un
   fichier ouvert. *name* spécifie la valeur de la configuration à
   récupérer, ça peut être une chaîne de caractères avec le nom d'une
   valeur système définie ; ces valeurs sont spécifiées dans certains
   standards (POSIX.1, Unix 95, Unix 98, et d'autres). Certaines
   plate-formes définissent des noms additionnels également. Les noms
   connus par le système d'exploitation sont donnés dans le
   dictionnaire "pathconf_names". Pour les variables de configuration
   qui ne sont pas inclues dans ce *mapping*, passer un entier pour
   *name* est également accepté.

   Si *name* est une chaîne de caractères et n'est pas connu, une
   "ValueError" est levée. Si une valeur spécifique de *name* n'est
   pas gérée par le système hôte, même si elle est incluse dans
   "pathconf_names", une "OSError" est levée avec "errno.EINVAL" pour
   code d'erreur.

   Depuis Python 3.3, c'est équivalent à "os.pathconf(fd, name)".

   Disponibilité : Unix.

os.fstat(fd)

   Récupère le statut du descripteur de fichier *fd*. Renvoie un objet
   "stat_result".

   Depuis Python 3.3, c'est équivalent à "os.stat(fd)".

   Voir aussi: La fonction "stat()".

os.fstatvfs(fd, /)

   Renvoie des informations sur le système de fichier contenant le
   fichier associé au descripteur *fd*, comme "statvfs()". Depuis
   Python 3.3, c'est équivalent à "os.statvfs(fd)".

   Disponibilité : Unix.

os.fsync(fd)

   Force write of file with filedescriptor *fd* to disk.  On Unix,
   this calls the native "fsync()" function; on Windows, the MS
   "_commit()" function.

   Si vous débutez avec un *file object* Python mis en tampon *f*,
   commencez par faire "f.flush()" et seulement ensuite
   "os.fsync(f.fileno())" pour être sûr que tous les tampons internes
   associés à *f* soient écrits sur le disque.

   Disponibilité : Unix, Windows.

os.ftruncate(fd, length, /)

   Tronque le fichier correspondant au descripteur *fd* pour qu'il
   soit maximum long de *length* *bytes*. Depuis Python 3.3, c'est
   équivalent à "os.truncate(fd, length)".

   Raises an auditing event "os.truncate" with arguments "fd",
   "length".

   Disponibilité : Unix, Windows.

   Modifié dans la version 3.5: Prise en charge de Windows

os.get_blocking(fd, /)

   Récupère le mode bloquant du descripteur de fichier : "False" si
   l'indicateur "O_NONBLOCK" est mis, et "True" si l'indicateur est
   effacé.

   Voir également "set_blocking()" et "socket.socket.setblocking()".

   Disponibilité : Unix, Windows.

   The function is limited on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

   On Windows, this function is limited to pipes.

   Ajouté dans la version 3.5.

   Modifié dans la version 3.12: Added support for pipes on Windows.

os.isatty(fd, /)

   Renvoie "True" si le descripteur de fichier *fd* est ouvert et
   connecté à un périphérique TTY (ou compatible), sinon "False".

os.lockf(fd, cmd, len, /)

   Applique, teste, ou retire un verrou POSIX sur un descripteur de
   fichier ouvert. *fd* est un descripteur de fichier ouvert. *cmd*
   spécifie la commande à utiliser (une des valeurs suivantes :
   "F_LOCK", "F_TLOCK", "F_ULOCK", ou "F_TEST"). *len* spécifie la
   section du fichier à verrouiller.

   Raises an auditing event "os.lockf" with arguments "fd", "cmd",
   "len".

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.F_LOCK
os.F_TLOCK
os.F_ULOCK
os.F_TEST

   Indicateurs spécifiant quelle action "lockf()" va prendre.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.login_tty(fd, /)

   Prepare the tty of which fd is a file descriptor for a new login
   session. Make the calling process a session leader; make the tty
   the controlling tty, the stdin, the stdout, and the stderr of the
   calling process; close fd.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.11.

os.lseek(fd, pos, whence, /)

   Set the current position of file descriptor *fd* to position *pos*,
   modified by *whence*, and return the new position in bytes relative
   to the start of the file. Valid values for *whence* are:

   * "SEEK_SET" or "0" -- set *pos* relative to the beginning of the
     file

   * "SEEK_CUR" or "1" -- set *pos* relative to the current file
     position

   * "SEEK_END" or "2" -- set *pos* relative to the end of the file

   * "SEEK_HOLE" -- set *pos* to the next data location, relative to
     *pos*

   * "SEEK_DATA" -- set *pos* to the next data hole, relative to *pos*

   Modifié dans la version 3.3: Add support for "SEEK_HOLE" and
   "SEEK_DATA".

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

   Parameters to the "lseek()" function and the "seek()" method on
   *file-like objects*, for whence to adjust the file position
   indicator.

   "SEEK_SET"
      Adjust the file position relative to the beginning of the file.

   "SEEK_CUR"
      Adjust the file position relative to the current file position.

   "SEEK_END"
      Adjust the file position relative to the end of the file.

   Their values are 0, 1, and 2, respectively.

os.SEEK_HOLE
os.SEEK_DATA

   Parameters to the "lseek()" function and the "seek()" method on
   *file-like objects*, for seeking file data and holes on sparsely
   allocated files.

   "SEEK_DATA"
      Adjust the file offset to the next location containing data,
      relative to the seek position.

   "SEEK_HOLE"
      Adjust the file offset to the next location containing a hole,
      relative to the seek position. A hole is defined as a sequence
      of zeros.

   Note:

     These operations only make sense for filesystems that support
     them.

   Availability: Linux >= 3.1, macOS, Unix

   Ajouté dans la version 3.3.

os.open(path, flags, mode=0o777, *, dir_fd=None)

   Ouvre le fichier *path* et met certains indicateurs selon *flags*
   et éventuellement son mode selon *mode*. Lors de l'évaluation de
   *code*, ce *umask* actuel est d'abord masquée. Renvoie le
   descripteur de fichier du fichier nouvellement ouvert. Le nouveau
   descripteur de fichier est non-héritable.

   Pour une description des indicateurs et des valeurs des modes, voir
   la documentation de la bibliothèque standard du C. Les constantes
   d'indicateurs (telles que "O_RDONLY" et "O_WRONLY") sont définies
   dans le module "os". En particulier, sur Windows, ajouter
   "O_BINARY" est nécessaire pour ouvrir des fichiers en binaire.

   Cette fonction prend en charge des chemins relatifs à des
   descripteurs de répertoires avec le paramètre *dir_fd*.

   Raises an auditing event "open" with arguments "path", "mode",
   "flags".

   Modifié dans la version 3.4: Le nouveau descripteur de fichier est
   maintenant non-héritable.

   Note:

     Cette fonction est destinée aux E/S de bas-niveau. Pour un usage
     normal, utilisez la primitive "open()" qui renvoie un *file
     object* avec les méthodes "read()" et "write()" (et plein
     d'autres). Pour envelopper un descripteur de fichier dans un
     fichier objet, utilisez "fdopen()".

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.5: Si l'appel système est interrompu et
   que le gestionnaire de signal ne lève aucune exception, la fonction
   réessaye l'appel système au lieu de lever une "InterruptedError"
   (voir la **PEP 475** à propos du raisonnement).

   Modifié dans la version 3.6: Accepte un *path-like object*.

Les constantes suivantes sont optionnelles pour le paramètre *flag* à
la fonction "open()". Elles peuvent être combinées en utilisant
l'opérateur bit-à-bit OR "|". certains ne sont pas disponibles sur
toutes les plate-formes. Pour une description sur leur disponibilité
et leur usage, consultez la page de manuel Unix *open(2)* ou la MSDN
sur Windows.

os.O_RDONLY
os.O_WRONLY
os.O_RDWR
os.O_APPEND
os.O_CREAT
os.O_EXCL
os.O_TRUNC

   Les constantes ci-dessus sont disponibles sur Unix et Windows.

os.O_DSYNC
os.O_RSYNC
os.O_SYNC
os.O_NDELAY
os.O_NONBLOCK
os.O_NOCTTY
os.O_CLOEXEC

   Les constantes ci-dessus sont uniquement disponibles sur Unix.

   Modifié dans la version 3.3: Ajout de la constante "O_CLOCEXEC".

os.O_BINARY
os.O_NOINHERIT
os.O_SHORT_LIVED
os.O_TEMPORARY
os.O_RANDOM
os.O_SEQUENTIAL
os.O_TEXT

   Les constantes ci-dessus sont uniquement disponibles sur Windows.

os.O_EVTONLY
os.O_FSYNC
os.O_SYMLINK
os.O_NOFOLLOW_ANY

   The above constants are only available on macOS.

   Modifié dans la version 3.10: Add "O_EVTONLY", "O_FSYNC",
   "O_SYMLINK" and "O_NOFOLLOW_ANY" constants.

os.O_ASYNC
os.O_DIRECT
os.O_DIRECTORY
os.O_NOFOLLOW
os.O_NOATIME
os.O_PATH
os.O_TMPFILE
os.O_SHLOCK
os.O_EXLOCK

   Les constantes ci-dessus sont des extensions et ne sont pas
   présentes si elles ne sont pas définies par la bibliothèque C.

   Modifié dans la version 3.4: Ajout de "O_PATH" sur les systèmes qui
   le gèrent. Ajout de "O_TMPFILE", uniquement disponible sur Linux
   Kernel 3.11 ou plus récent.

os.openpty()

   Ouvre une nouvelle paire pseudo-terminal. Renvoie une paire de
   descripteurs de fichiers "(master, slave)" pour le PTY et le TTY
   respectivement. Les nouveaux descripteurs de fichiers sont non-
   héritables. Pour une approche (légèrement) plus portable, utilisez
   le module "pty".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Modifié dans la version 3.4: Les nouveaux descripteurs de fichiers
   sont maintenant non-héritables.

os.pipe()

   Crée un *pipe* (un tube). Renvoie une paire de descripteurs de
   fichiers "(r, w)" utilisables respectivement pour lire et pour
   écrire. Les nouveaux descripteurs de fichiers sont non-héritables.

   Disponibilité : Unix, Windows.

   Modifié dans la version 3.4: Les nouveaux descripteurs de fichiers
   sont maintenant non-héritables.

os.pipe2(flags, /)

   Crée un *pipe* avec *flags* mis atomiquement. *flags* peut être
   construit en appliquant l'opérateur "|" (OU) sur une ou plus de ces
   valeurs : "O_NONBLOCK", "O_CLOEXEC". Renvoie une paire de
   descripteurs de fichiers "(r, w)" utilisables respectivement pour
   lire et pour écrire.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.posix_fallocate(fd, offset, len, /)

   Assure que suffisamment d'espace sur le disque est alloué pour le
   fichier spécifié par *fd* partant de *offset* et continuant sur
   *len* bytes.

   Disponibilité : Unix, pas disponible pour Emscripten.

   Ajouté dans la version 3.3.

os.posix_fadvise(fd, offset, len, advice, /)

   Annonce une intention d'accéder à des données selon un motif
   spécifique, et donc permettant au noyau de faire des optimisations.
   Le conseil *advice* s'applique à la région spécifiée par *fd*,
   démarrant à *offset* et continuant sur *len* bytes. *advice* est
   une des valeurs suivantes : "POSIX_FADV_NORMAL",
   "POSIX_FADV_SEQUENTIAL", "POSIX_FADV_RANDOM", "POSIX_FADV_NOREUSE",
   "POSIX_FADV_WILLNEED", ou "POSIX_FADV_DONTNEED".

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.POSIX_FADV_NORMAL
os.POSIX_FADV_SEQUENTIAL
os.POSIX_FADV_RANDOM
os.POSIX_FADV_NOREUSE
os.POSIX_FADV_WILLNEED
os.POSIX_FADV_DONTNEED

   Indicateurs qui peuvent être utilisés dans *advice* dans la
   fonction "posix_fadvise()" et qui spécifient le motif d'accès qui
   est censé être utilisé.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.pread(fd, n, offset, /)

   Lit au maximum *n* octets depuis le descripteur de fichier *fd* à
   la position *offset* sans modifier cette position.

   Renvoie une chaîne d'octets contenant les octets lus, ou une chaîne
   d'octets vide si la fin du fichier pointé par *fd* est atteinte.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.preadv(fd, buffers, offset, flags=0, /)

   Lit depuis un descripteur de fichier *fd*, à la position *offset*
   dans des *objets bytes-compatibles* mutables *buffers*, sans
   modifier la position dans le fichier. Les données sont transférées
   dans chaque tampon, jusqu'à ce qu'il soit plein, tour à tour.

   L'argument *flags* contient un OU logique bit-à-bit de zéro ou
   plusieurs des indicateurs suivants :

   * "RWF_HIPRI"

   * "RWF_NOWAIT"

   Renvoie le nombre total d'octets réellement lus, qui peut être
   inférieur à la capacité totale de tous les objets.

   Le système d'exploitation peut définir une limite (valeur
   "sysconf()" "'SC_IOV_MAX'") sur le nombre de mémoires tampons
   pouvant être utilisées.

   Combine les fonctionnalités de "os.readv()" et "os.pread()".

   Disponibilité : noyaux Linux 2.6.30+, FreeBSD 6.0+, OpenBSD 2.7+,
   AIX 7.1+

   Using flags requires Linux >= 4.6.

   Ajouté dans la version 3.7.

os.RWF_NOWAIT

   Ne pas attendre pour des données qui ne sont pas immédiatement
   disponibles. Si cette option est spécifiée, l'appel système
   retourne instantanément s'il doit lire les données du stockage
   sous-jacent ou attendre un verrou.

   If some data was successfully read, it will return the number of
   bytes read. If no bytes were read, it will return "-1" and set
   errno to "errno.EAGAIN".

   Disponibilité : Linux 4.14+

   Ajouté dans la version 3.7.

os.RWF_HIPRI

   Lecture/écriture haute priorité. Permet aux systèmes de fichiers de
   type bloc d'utiliser le *polling* du périphérique, qui fournit une
   latence inférieure, mais peut utiliser des ressources
   supplémentaires.

   Actuellement, sous Linux, cette fonctionnalité est utilisable
   uniquement sur un descripteur de fichier ouvert à l'aide de
   l'option "O_DIRECT".

   Disponibilité : Linux 4.6+

   Ajouté dans la version 3.7.

os.pwrite(fd, str, offset, /)

   Écrit la chaîne d'octets de *str* dans le descripteur de fichier
   *fd* à la position *offset* en laissant la position dans le fichier
   inchangée.

   Renvoie le nombre d'octets effectivement écrits.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.pwritev(fd, buffers, offset, flags=0, /)

   Write the *buffers* contents to file descriptor *fd* at an offset
   *offset*, leaving the file offset unchanged.  *buffers* must be a
   sequence of *bytes-like objects*. Buffers are processed in array
   order. Entire contents of the first buffer is written before
   proceeding to the second, and so on.

   L'argument *flags* contient un OU logique bit-à-bit de zéro ou
   plusieurs des indicateurs suivants :

   * "RWF_DSYNC"

   * "RWF_SYNC"

   * "RWF_APPEND"

   Renvoie le nombre total d'octets effectivement écrits.

   Le système d'exploitation peut définir une limite (valeur
   "sysconf()" "'SC_IOV_MAX'") sur le nombre de mémoires tampons
   pouvant être utilisées.

   Combine les fonctionnalités de "os. writev()" et "os. pwrite()".

   Disponibilité : noyaux Linux 2.6.30+, FreeBSD 6.0+, OpenBSD 2.7+,
   AIX 7.1+

   Using flags requires Linux >= 4.6.

   Ajouté dans la version 3.7.

os.RWF_DSYNC

   Provide a per-write equivalent of the "O_DSYNC" "os.open()" flag.
   This flag effect applies only to the data range written by the
   system call.

   Disponibilité : Linux 4.7+

   Ajouté dans la version 3.7.

os.RWF_SYNC

   Provide a per-write equivalent of the "O_SYNC" "os.open()" flag.
   This flag effect applies only to the data range written by the
   system call.

   Disponibilité : Linux 4.7+

   Ajouté dans la version 3.7.

os.RWF_APPEND

   Provide a per-write equivalent of the "O_APPEND" "os.open()" flag.
   This flag is meaningful only for "os.pwritev()", and its effect
   applies only to the data range written by the system call. The
   *offset* argument does not affect the write operation; the data is
   always appended to the end of the file. However, if the *offset*
   argument is "-1", the current file *offset* is updated.

   Disponibilité : Linux 4.16+

   Ajouté dans la version 3.10.

os.read(fd, n, /)

   Lit au maximum *n* octets du descripteur de fichier *fd*.

   Renvoie une chaîne d'octets contenant les octets lus, ou une chaîne
   d'octets vide si la fin du fichier pointé par *fd* est atteinte.

   Note:

     Cette fonction est destinée aux E/S bas niveau et doit être
     appliquée à un descripteur de fichier comme renvoyé par
     "os.open()" ou "pipe()". Pour lire dans un « fichier objet »
     renvoyé par la primitive "open()", "popen()" ou "fdopen()", ou
     par "stdin", utilisez sa méthode "read()" ou "readline()".

   Modifié dans la version 3.5: Si l'appel système est interrompu et
   que le gestionnaire de signal ne lève aucune exception, la fonction
   réessaye l'appel système au lieu de lever une "InterruptedError"
   (voir la **PEP 475** à propos du raisonnement).

os.sendfile(out_fd, in_fd, offset, count)
os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

   Copy *count* bytes from file descriptor *in_fd* to file descriptor
   *out_fd* starting at *offset*. Return the number of bytes sent.
   When EOF is reached return "0".

   La première notation de fonction est prise en charge par toutes les
   plate-formes qui définissent "sendfile()".

   On Linux, if *offset* is given as "None", the bytes are read from
   the current position of *in_fd* and the position of *in_fd* is
   updated.

   The second case may be used on macOS and FreeBSD where *headers*
   and *trailers* are arbitrary sequences of buffers that are written
   before and after the data from *in_fd* is written. It returns the
   same as the first case.

   On macOS and FreeBSD, a value of "0" for *count* specifies to send
   until the end of *in_fd* is reached.

   All platforms support sockets as *out_fd* file descriptor, and some
   platforms allow other types (e.g. regular file, pipe) as well.

   Les applications multiplateformes ne devraient pas utiliser les
   arguments  *headers*, *trailers*, et *flags*.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Note:

     Pour une interface de plus haut niveau de "sendfile()", voir
     "socket.socket.setfile()".

   Ajouté dans la version 3.3.

   Modifié dans la version 3.9: Les paramètres *out* et *in* ont été
   renommés *out_fd* et *in_fd*.

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

   Paramètres de la fonction "sendfile()", si l'implémentation les
   gère.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.SF_NOCACHE

   Parameter to the "sendfile()" function, if the implementation
   supports it. The data won't be cached in the virtual memory and
   will be freed afterwards.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.11.

os.set_blocking(fd, blocking, /)

   Définit le mode bloquant d'un descripteur de fichier spécifié.
   Assigne l'indicateur "O_NONBLOCK" si *blocking* vaut "False",
   efface l'indicateur sinon.

   Voir aussi "get_blocking()" et "socket;socket.setblocking()".

   Disponibilité : Unix, Windows.

   The function is limited on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

   On Windows, this function is limited to pipes.

   Ajouté dans la version 3.5.

   Modifié dans la version 3.12: Added support for pipes on Windows.

os.splice(src, dst, count, offset_src=None, offset_dst=None)

   Transfer *count* bytes from file descriptor *src*, starting from
   offset *offset_src*, to file descriptor *dst*, starting from offset
   *offset_dst*. At least one of the file descriptors must refer to a
   pipe. If *offset_src* is "None", then *src* is read from the
   current position; respectively for *offset_dst*. The offset
   associated to the file descriptor that refers to a pipe must be
   "None". The files pointed to by *src* and *dst* must reside in the
   same filesystem, otherwise an "OSError" is raised with "errno" set
   to "errno.EXDEV".

   Cette copie est faite sans le coût additionnel de transférer les
   données depuis le noyau vers l'espace utilisateur puis dans le sens
   inverse vers le noyau. En outre, certains systèmes de fichiers
   peuvent implémenter des optimisations supplémentaires. Cette copie
   est faite comme si les deux fichiers étaient ouverts en mode
   binaire.

   Upon successful completion, returns the number of bytes spliced to
   or from the pipe. A return value of 0 means end of input. If *src*
   refers to a pipe, then this means that there was no data to
   transfer, and it would not make sense to block because there are no
   writers connected to the write end of the pipe.

   Disponibilité : noyaux Linux 2.6.17+ avec glibc 2.5+.

   Ajouté dans la version 3.10.

os.SPLICE_F_MOVE
os.SPLICE_F_NONBLOCK
os.SPLICE_F_MORE

   Ajouté dans la version 3.10.

os.readv(fd, buffers, /)

   Lit depuis un descripteur de fichier *fd* dans une séquence
   d'*objets bytes-compatibles* mutables : *buffers*. Les données sont
   transférées dans chaque tampon, jusqu'à ce qu'il soit plein, tour à
   tour.

   Renvoie le nombre total d'octets réellement lus, qui peut être
   inférieur à la capacité totale de tous les objets.

   Le système d'exploitation peut définir une limite (valeur
   "sysconf()" "'SC_IOV_MAX'") sur le nombre de mémoires tampons
   pouvant être utilisées.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.tcgetpgrp(fd, /)

   Renvoie le groupe de processus associé au terminal donné par *fd*
   (un descripteur de fichier ouvert comme renvoyé par "os.open()").

   Disponibilité : Unix, pas disponible pour WASI.

os.tcsetpgrp(fd, pg, /)

   Place *pg* dans le groupe de processus associé au terminal donné
   par *fd* (un descripteur de fichier ouvert comme renvoyé par
   "os.open()").

   Disponibilité : Unix, pas disponible pour WASI.

os.ttyname(fd, /)

   Renvoie une chaîne de caractères spécifiant le périphérique
   terminal associé au descripteur de fichier *fd*. Si *fd* n'est pas
   associé à un périphérique terminal, une exception est levée.

   Disponibilité : Unix.

os.write(fd, str, /)

   Écrit la chaîne d'octets de *str* vers le descripteur de fichier
   *fd*.

   Renvoie le nombre d'octets effectivement écrits.

   Note:

     Cette fonction est destinée aux entrées-sorties bas niveau et
     doit être appliquée à un descripteur de fichier comme renvoyé par
     "os.open()" ou "pipe()". Pour écrire dans un « fichier objet »
     renvoyé par la primitive "open()", "popen()", ou par "fdopen()",
     ou par "sys.stdout" ou "sys.stderr", utilisez sa méthode
     "write()".

   Modifié dans la version 3.5: Si l'appel système est interrompu et
   que le gestionnaire de signal ne lève aucune exception, la fonction
   réessaye l'appel système au lieu de lever une "InterruptedError"
   (voir la **PEP 475** à propos du raisonnement).

os.writev(fd, buffers, /)

   Écrit le contenu de *buffers* vers le descripteur de fichier *fd*.
   *buffers* doit être une séquence d'*objets bytes-compatibles*. Les
   tampons sont traités dans l'ordre du tableau. Le contenu entier du
   premier tampon est écrit avant le traitement du second, etc.

   Renvoie le nombre total d'octets effectivement écrits.

   Le système d'exploitation peut définir une limite (valeur
   "sysconf()" "'SC_IOV_MAX'") sur le nombre de mémoires tampons
   pouvant être utilisées.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.


Demander la taille d'un terminal
--------------------------------

Ajouté dans la version 3.3.

os.get_terminal_size(fd=STDOUT_FILENO, /)

   Renvoie la taille du terminal comme un couple "(columns, lines)" de
   type "terminal_size".

   L'argument optionnel "fd" (par défaut  : "STDOUT_FILENO", ou la
   sortie standard) spécifie le descripteur de fichier auquel la
   requête doit être envoyée.

   Si le descripteur de fichier  n'est pas connecté à un terminal, une
   "OSError" est levée.

   "shutil.get_terminal_size()" est la fonction haut-niveau qui
   devrait normalement être utilisée, "os.get_terminal_size" en est
   l'implémentation bas-niveau.

   Disponibilité : Unix, Windows.

class os.terminal_size

   Une sous-classe de *tuple*, contenant "(columns, lines)", la taille
   du terminal.

   columns

      Longueur du terminal en caractères.

   lines

      Hauteur du terminal en caractères.


Héritage de descripteurs de fichiers
------------------------------------

Ajouté dans la version 3.4.

Un descripteur de fichier a un indicateur indiquant s'il peut être
hérité par les processus-fils. Depuis Python 3.4, les descripteurs de
fichiers créés par Python ne sont pas héritable par défaut.

Sur UNIX, les descripteurs de fichiers non-héritables sont fermés dans
les processus-fils à l'exécution, les autres descripteurs sont
hérités.

Sur Windows, les fichiers et identificateurs non-héritables sont
fermés dans les processus-fils, à part les flux standards
(descripteurs 0, 1, et 2 : *stdin*, *stdout* et *stderr*) qui sont
toujours hérités. En utilisant les fonctions "spawn*", tous les
identificateurs héritables et les descripteurs de fichiers héritables
sont hérités. En utilisant le module "subprocess", tous les
descripteurs de fichiers (à part les flux standards) sont fermés, et
les identificateurs héritables sont hérités seulement si le paramètre
*close_fds* vaut "False".

On WebAssembly platforms "wasm32-emscripten" and "wasm32-wasi", the
file descriptor cannot be modified.

os.get_inheritable(fd, /)

   Récupère le marqueur « héritable » (booléen) du descripteur de
   fichier spécifié.

os.set_inheritable(fd, inheritable, /)

   Définit le marqueur « héritable » du descripteur de fichier
   spécifié.

os.get_handle_inheritable(handle, /)

   Récupère le marqueur « héritable » (booléen) de l'identificateur
   spécifié.

   Disponibilité : Windows.

os.set_handle_inheritable(handle, inheritable, /)

   Définit le marqueur « héritable » de l'identificateur spécifié.

   Disponibilité : Windows.


Fichiers et répertoires
=======================

Sur certaines plate-formes Unix, beaucoup de ces fonctions gèrent une
ou plusieurs des fonctionnalités suivantes :

* **specifying a file descriptor:** Normally the *path* argument
  provided to functions in the "os" module must be a string specifying
  a file path.  However, some functions now alternatively accept an
  open file descriptor for their *path* argument. The function will
  then operate on the file referred to by the descriptor. (For POSIX
  systems, Python will call the variant of the function prefixed with
  "f" (e.g. call "fchdir" instead of "chdir").)

  You can check whether or not *path* can be specified as a file
  descriptor for a particular function on your platform using
  "os.supports_fd". If this functionality is unavailable, using it
  will raise a "NotImplementedError".

  If the function also supports *dir_fd* or *follow_symlinks*
  arguments, it's an error to specify one of those when supplying
  *path* as a file descriptor.

* **paths relative to directory descriptors:** If *dir_fd* is not
  "None", it should be a file descriptor referring to a directory, and
  the path to operate on should be relative; path will then be
  relative to that directory.  If the path is absolute, *dir_fd* is
  ignored.  (For POSIX systems, Python will call the variant of the
  function with an "at" suffix and possibly prefixed with "f" (e.g.
  call "faccessat" instead of "access").

  You can check whether or not *dir_fd* is supported for a particular
  function on your platform using "os.supports_dir_fd".  If it's
  unavailable, using it will raise a "NotImplementedError".

* **not following symlinks:** If *follow_symlinks* is "False", and the
  last element of the path to operate on is a symbolic link, the
  function will operate on the symbolic link itself rather than the
  file pointed to by the link.  (For POSIX systems, Python will call
  the "l..." variant of the function.)

  You can check whether or not *follow_symlinks* is supported for a
  particular function on your platform using
  "os.supports_follow_symlinks". If it's unavailable, using it will
  raise a "NotImplementedError".

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

   Utilise l'*uid*/*gid* réel pour tester l'accès à *path*. Notez que
   la plupart des opérations utiliseront l'*uid*/*gid* effectif, dès
   lors cette méthode peut être utilisée dans un environnement
   *suid*/*sgid* pour tester si l'utilisateur invoquant a les droits
   d'accès pour accéder à *path*. *mode* devrait être "F_OK" pour
   tester l'existence de *path*, ou il peut être le OR (OU inclusif)
   d'une ou plusieurs des constantes suivantes : "R_OK", "W_OK", et
   "X_OK" pour tester les permissions. Renvoie "True" si l'accès est
   permis, et "False" s'il ne l'est pas. Voir la page de manuel Unix
   *access(2)* pour plus d'informations.

   Cette fonction peut gérer la spécification de chemins relatifs vers
   des descripteurs de fichiers et le suivi des liens symboliques.

   Si *effective_id* vaut "True", "access()" effectuera ses
   vérifications d'accès en utilisant l'*uid*/*gid* effectif à la
   place de l'*uid*/*gid* réel. *effective_ids* peut ne pas être géré
   sur votre plate-forme, vous pouvez vérifier s'il est disponible en
   utilisant "os.supports_effective_ids". S'il est indisponible,
   l'utiliser lèvera une "NotImplementedError".

   Note:

     Utiliser "access()" pour vérifier si un utilisateur est autorisé
     (par exemple) à ouvrir un fichier avant d'effectivement le faire
     en utilisant "open()" crée une faille de sécurité : l'utilisateur
     peut exploiter le court intervalle de temps entre la vérification
     et l'ouverture du fichier pour le manipuler. Il est préférable
     d'utiliser les techniques *EAFP*. Par exemple :

        if os.access("myfile", os.R_OK):
            with open("myfile") as fp:
                return fp.read()
        return "some default data"

     est mieux écrit comme suit :

        try:
            fp = open("myfile")
        except PermissionError:
            return "some default data"
        else:
            with fp:
                return fp.read()

   Note:

     Les opérations d'entrées/sorties peuvent échouer même quand
     "access()" indique qu'elles devraient réussir, particulièrement
     pour les opérations sur les systèmes de fichiers réseaux qui
     peuvent avoir une sémantique de permissions au-delà du modèle de
     bits de permission usuel POSIX.

   Modifié dans la version 3.3: Paramètres *dir_fd*, *effective_ids*,
   et *follow_symlinks* ajoutés.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.F_OK
os.R_OK
os.W_OK
os.X_OK

   Valeurs à passer au paramètre *mode* de "access()" pour tester
   respectivement l'existence, les droits de lecture, d'écriture et
   d'exécution.

os.chdir(path)

   Change le répertoire de travail actuel par *path*.

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier. Le descripteur doit référencer un répertoire ouvert, pas
   un fichier ouvert.

   Cette fonction peut lever "OSError" et des sous-classes telles que
   "FileNotFoundError", "PermissionError" et "NotADirectoryError".

   Raises an auditing event "os.chdir" with argument "path".

   Modifié dans la version 3.3: Prise en charge de la spécification de
   *path* par un descripteur de fichier sur certaines plate-formes.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.chflags(path, flags, *, follow_symlinks=True)

   Définit les marqueurs de *path* par la valeur numérique *flags*.
   *flags* peut prendre une combinaison (OU bit-à-bit) des valeurs
   suivantes (comme défini dans le module "stat") :

   * "stat.UF_NODUMP"

   * "stat.UF_IMMUTABLE"

   * "stat.UF_APPEND"

   * "stat.UF_OPAQUE"

   * "stat.UF_NOUNLINK"

   * "stat.UF_COMPRESSED"

   * "stat.UF_HIDDEN"

   * "stat.SF_ARCHIVED"

   * "stat.SF_IMMUTABLE"

   * "stat.SF_APPEND"

   * "stat.SF_NOUNLINK"

   * "stat.SF_SNAPSHOT"

   Cette fonction prend en charge le suivi des liens symboliques.

   Raises an auditing event "os.chflags" with arguments "path",
   "flags".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Modifié dans la version 3.3: Added the *follow_symlinks* parameter.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

   Change le mode de *path* par la valeur numérique *mode*. *mode*
   peut prendre une des valeurs suivantes (comme défini dans le module
   "stat") ou une combinaison (OU bit-à-bit) de ces valeurs :

   * "stat.S_ISUID"

   * "stat.S_ISGID"

   * "stat.S_ENFMT"

   * "stat.S_ISVTX"

   * "stat.S_IREAD"

   * "stat.S_IWRITE"

   * "stat.S_IEXEC"

   * "stat.S_IRWXU"

   * "stat.S_IRUSR"

   * "stat.S_IWUSR"

   * "stat.S_IXUSR"

   * "stat.S_IRWXG"

   * "stat.S_IRGRP"

   * "stat.S_IWGRP"

   * "stat.S_IXGRP"

   * "stat.S_IRWXO"

   * "stat.S_IROTH"

   * "stat.S_IWOTH"

   * "stat.S_IXOTH"

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier, les chemins relatifs à des descripteurs de répertoires, et
   le non-suivi des liens symboliques.

   Note:

     Bien que Windows gère "chmod()", vous ne pouvez y définir que le
     marqueur de lecture-seule du fichier (via les constantes
     "stat.S_IWRITE" et "stat.S_IREAD" ou une constante entière
     correspondante). Tous les autres bits sont ignorés.The function
     is limited on Emscripten and WASI, see Plateformes WebAssembly
     for more information.

   Raises an auditing event "os.chmod" with arguments "path", "mode",
   "dir_fd".

   Modifié dans la version 3.3: Prise en charge de la spécification de
   *path* par un répertoire ouvert et des arguments *dir_fd* et
   *follow_symlinks* ajoutés.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

   Change l'identifiant du propriétaire et du groupe de *path* par les
   valeurs numériques *uid* et *gid*. Pour laisser l'un de ces
   identifiants inchangé, le définir à "-1".

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier, les chemins relatifs à des descripteurs de répertoires, et
   le non-suivi des liens symboliques.

   Voir "shutil.chown()" pour une fonction de plus haut-niveau qui
   accepte des noms en plus des identifiants numériques.

   Raises an auditing event "os.chown" with arguments "path", "uid",
   "gid", "dir_fd".

   Disponibilité : Unix.

   The function is limited on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

   Modifié dans la version 3.3: Prise en charge de la spécification de
   *path* par un répertoire ouvert et des arguments *dir_fd* et
   *follow_symlinks* ajoutés.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.chroot(path)

   Change le répertoire racine du processus actuel par *path*.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.fchdir(fd)

   Change le répertoire de travail actuel par le répertoire représenté
   par le descripteur de fichier *fd*. Le descripteur doit référencer
   un répertoire ouvert, pas un fichier ouvert. Depuis Python 3.3,
   c'est équivalent à "os.chdir(fd)".

   Raises an auditing event "os.chdir" with argument "path".

   Disponibilité : Unix.

os.getcwd()

   Renvoie une chaîne de caractères représentant le répertoire de
   travail actuel.

os.getcwdb()

   Renvoie une chaîne de *bytes* représentant le répertoire de travail
   actuel.

   Modifié dans la version 3.8: La fonction utilise maintenant
   l'encodage UTF-8 sur Windows, plutôt que la *page de code* ANSI :
   la **PEP 529** explique la raison. Cette fonction n'est plus
   obsolète sur Windows.

os.lchflags(path, flags)

   Définit les marqueurs de *path* par la valeur numérique *flags*,
   comme "chflags()", mais ne suit pas les liens symboliques. Depuis
   Python 3.3, c'est équivalent à "os.chflags(path, flags,
   follow_symlinks=False)".

   Raises an auditing event "os.chflags" with arguments "path",
   "flags".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.lchmod(path, mode)

   Change le mode de *path* par la valeur numérique *mode*. Si *path*
   est un lien symbolique, ça affecte le lien symbolique à la place de
   la cible. Voir la documentation pour les valeurs possibles de
   *mode* pour "chmod()". Depuis Python 3.3, c'est équivalent à
   "os.chmod(path, mode, follow_symlinks=False)".

   "lchmod()" is not part of POSIX, but Unix implementations may have
   it if changing the mode of symbolic links is supported.

   Raises an auditing event "os.chmod" with arguments "path", "mode",
   "dir_fd".

   Availability: Unix, not Linux, FreeBSD >= 1.3, NetBSD >= 1.3, not
   OpenBSD

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.lchown(path, uid, gid)

   Change les identifiants du propriétaire et du groupe de *path* par
   *uid* et *gid*. Cette fonction ne suivra pas les liens symboliques.
   Depuis Python 3.3, c'est équivalent à "os.chown(path, uid, gid,
   follow_symlinks=False)".

   Raises an auditing event "os.chown" with arguments "path", "uid",
   "gid", "dir_fd".

   Disponibilité : Unix.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)

   Crée un lien matériel appelé *dst* pointant sur *src*.

   Cette fonction prend en charge la spécification *src_dir_fd* et/ou
   *dst_dir_fd* pour préciser des chemins relatifs à des descripteurs
   de répertoires, et le non-suivi des liens symboliques.

   Raises an auditing event "os.link" with arguments "src", "dst",
   "src_dir_fd", "dst_dir_fd".

   Availability: Unix, Windows, not Emscripten.

   Modifié dans la version 3.2: Prise en charge de Windows.

   Modifié dans la version 3.3: Added the *src_dir_fd*, *dst_dir_fd*,
   and *follow_symlinks* parameters.

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *src* et *dst*.

os.listdir(path='.')

   Return a list containing the names of the entries in the directory
   given by *path*.  The list is in arbitrary order, and does not
   include the special entries "'.'" and "'..'" even if they are
   present in the directory. If a file is removed from or added to the
   directory during the call of this function, whether a name for that
   file be included is unspecified.

   *path* peut être un *path-like object*.  Si *path* est de type
   "bytes" (directement ou indirectement à travers une interface
   "PathLike"), les noms de fichiers renvoyés seront aussi de type
   "bytes" ; dans toutes les autres circonstances, ils seront de type
   "str".

   Cette fonction peut également gérer la spécification de
   descripteurs de fichiers. Le descripteur doit référencer un
   répertoire.

   Raises an auditing event "os.listdir" with argument "path".

   Note:

     Pour encoder des noms de fichiers de type "str" en "bytes",
     utilisez la fonction "encode()".

   Voir aussi:

     La fonction "scandir()" renvoie les entrées du répertoire ainsi
     que leurs attributs , offrant une meilleure performance pour
     beaucoup de cas utilisés fréquemment.

   Modifié dans la version 3.2: Le paramètre *path* est devenu
   optionnel.

   Modifié dans la version 3.3: Ajout de la possibilité de spécifier
   *path* comme descripteur de fichier ouvert.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.listdrives()

   Return a list containing the names of drives on a Windows system.

   A drive name typically looks like "'C:\\'". Not every drive name
   will be associated with a volume, and some may be inaccessible for
   a variety of reasons, including permissions, network connectivity
   or missing media. This function does not test for access.

   May raise "OSError" if an error occurs collecting the drive names.

   Raises an auditing event "os.listdrives" with no arguments.

   Availability: Windows

   Ajouté dans la version 3.12.

os.listmounts(volume)

   Return a list containing the mount points for a volume on a Windows
   system.

   *volume* must be represented as a GUID path, like those returned by
   "os.listvolumes()". Volumes may be mounted in multiple locations or
   not at all. In the latter case, the list will be empty. Mount
   points that are not associated with a volume will not be returned
   by this function.

   The mount points return by this function will be absolute paths,
   and may be longer than the drive name.

   Raises "OSError" if the volume is not recognized or if an error
   occurs collecting the paths.

   Raises an auditing event "os.listmounts" with argument "volume".

   Availability: Windows

   Ajouté dans la version 3.12.

os.listvolumes()

   Return a list containing the volumes in the system.

   Volumes are typically represented as a GUID path that looks like
   "\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\". Files can
   usually be accessed through a GUID path, permissions allowing.
   However, users are generally not familiar with them, and so the
   recommended use of this function is to retrieve mount points using
   "os.listmounts()".

   May raise "OSError" if an error occurs collecting the volumes.

   Raises an auditing event "os.listvolumes" with no arguments.

   Availability: Windows

   Ajouté dans la version 3.12.

os.lstat(path, *, dir_fd=None)

   Perform the equivalent of an "lstat()" system call on the given
   path. Similar to "stat()", but does not follow symbolic links.
   Return a "stat_result" object.

   Sur les plate-formes qui ne gérant pas les liens symboliques, c'est
   un alias pour "stat()".

   Depuis Python 3.3, c'est équivalent à "os.stat(path, dir_fd=dir_fd,
   follow_symlinks=False)".

   Cette fonction peut également gérer des chemins relatifs à des
   descripteurs de répertoires.

   Voir aussi: La fonction "stat()".

   Modifié dans la version 3.2: Prise en charge des les liens
   symboliques sur Windows 6.0 (Vista).

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

   Modifié dans la version 3.8: On Windows, now opens reparse points
   that represent another path (name surrogates), including symbolic
   links and directory junctions. Other kinds of reparse points are
   resolved by the operating system as for "stat()".

os.mkdir(path, mode=0o777, *, dir_fd=None)

   Crée un répertoire appelé *path* avec pour mode, la valeur
   numérique *mode*.

   If the directory already exists, "FileExistsError" is raised. If a
   parent directory in the path does not exist, "FileNotFoundError" is
   raised.

   Sous certains systèmes, *mode* est ignoré.  Quand il est utilisé,
   il lui est premièrement appliqué le masque courant *umask*. Si des
   bits autres que les 9 derniers sont activés (c.-à-d. les 3 derniers
   chiffres de la représentation octale de *mode*), leur signification
   sera dépendante de la plate-forme.  Sous certaines plate-formes,
   ils seront ignorés et vous devrez appeler explicitement "chmod()"
   pour les modifier.

   On Windows, a *mode* of "0o700" is specifically handled to apply
   access control to the new directory such that only the current user
   and administrators have access. Other values of *mode* are ignored.

   Cette fonction peut également gérer des chemins relatifs à des
   descripteurs de répertoires.

   Il est également possible  de créer des répertoires temporaires,
   voir la fonction "tempfile.mkdtemp()" du module "tempfile".

   Raises an auditing event "os.mkdir" with arguments "path", "mode",
   "dir_fd".

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

   Modifié dans la version 3.12.4: Windows now handles a *mode* of
   "0o700".

os.makedirs(name, mode=0o777, exist_ok=False)

   Fonction de création récursive de répertoires. Comme "mkdir()" mais
   crée tous les répertoires de niveau intermédiaire nécessaires pour
   contenir le répertoire « feuille ».

   The *mode* parameter is passed to "mkdir()" for creating the leaf
   directory; see the mkdir() description for how it is interpreted.
   To set the file permission bits of any newly created parent
   directories you can set the umask before invoking "makedirs()".
   The file permission bits of existing parent directories are not
   changed.

   If *exist_ok* is "False" (the default), a "FileExistsError" is
   raised if the target directory already exists.

   Note:

     Un appel à "makedirs()" est confus si les éléments du chemin à
     créer contiennent "pardir" (par exemple, "".."" sur les systèmes
     UNIX).

   Cette fonction gère les chemins UNC correctement.

   Raises an auditing event "os.mkdir" with arguments "path", "mode",
   "dir_fd".

   Modifié dans la version 3.2: Added the *exist_ok* parameter.

   Modifié dans la version 3.4.1: Avant Python 3.4.1, si *exist_ok*
   valait "True" et le répertoire à créer existait, "makedirs()"
   aurait levé une erreur si *mode* n'était pas équivalent au mode du
   répertoire existant. Puisque ce comportement n'était pas possible )
   implémenter de manière sécurisée, il a été retiré pour Python
   3.4.1. Voir bpo-21082.

   Modifié dans la version 3.6: Accepte un *path-like object*.

   Modifié dans la version 3.7: The *mode* argument no longer affects
   the file permission bits of newly created intermediate-level
   directories.

os.mkfifo(path, mode=0o666, *, dir_fd=None)

   Crée un FIFO (*First In, First Out*, ou un tube (*pipe* en anglais)
   nommé) appelé *path* avec le mode numérique *mode*. La valeur
   actuelle de *umask* est d'abord masquée du mode.

   Cette fonction peut également gérer des chemins relatifs à des
   descripteurs de répertoires.

   Les FIFOs sont des tubes qui peuvent être accédés comme des
   fichiers normaux. Les FIFOs existent jusqu'à ce qu'ils soient
   retirés (par exemple, à l'aide de "os.unlink()"). Généralement, les
   FIFOs sont utilisé comme communication entre des processus de type
   « client » et « serveur » : le serveur ouvre le FIFO pour le lire,
   et le client l'ouvre pour écrire dedans. Notez que "mkfifo()"
   n'ouvre pas le FIFO — il crée juste un point de rendez-vous.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.mknod(path, mode=0o600, device=0, *, dir_fd=None)

   Crée un nœud du système de fichiers (fichier, périphérique, fichier
   spécial, ou tuyau nommé) appelée *path*. *mode* spécifie à la fois
   les permissions à utiliser et le type de nœud à créer, en étant
   combiné (OR bit-à-bit) avec l'une des valeurs suivantes :
   "stat.S_IFREG", "stat.S_IFCHR", "stat.S_IFBLK", et "stat.S_IFIFO"
   (ces constantes sont disponibles dans le module "stat"). Pour
   "stat.S_IFCHR" et "stat.S_IFBLK", *device* définit le fichier
   spécial de périphérique tout juste créé (probablement en utilisant
   "os.makedev()"), sinon, cet argument est ignoré.

   Cette fonction peut également gérer des chemins relatifs à des
   descripteurs de répertoires.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.major(device, /)

   Extract the device major number from a raw device number (usually
   the "st_dev" or "st_rdev" field from "stat").

os.minor(device, /)

   Extract the device minor number from a raw device number (usually
   the "st_dev" or "st_rdev" field from "stat").

os.makedev(major, minor, /)

   Compose un nombre de périphérique brut à partir des nombres de
   périphérique mineur et majeur.

os.pathconf(path, name)

   Renvoie des informations sur la configurations relatives à un
   fichier déterminé. *name* spécifie la valeur de configuration à
   récupérer ; ce peut être une chaîne de caractères qui est le nom
   d'une valeur système particulière. Ces noms sont spécifiés dans
   certains standards (POSIX.1, Unix 95, Unix 98, etc). Certaines
   plate-formes définissent des noms supplémentaires également. Les
   noms connus du système d'exploitation hôte sont donnés dans le
   dictionnaire "pathconf_names". Pour les variables de configuration
   non incluses dans ce *mapping*, passer un entier pour *name* est
   également accepté.

   Si *name* est une chaîne de caractères et n'est pas connu, une
   "ValueError" est levée. Si une valeur spécifique de *name* n'est
   pas gérée par le système hôte, même si elle est incluse dans
   "pathconf_names", une "OSError" est levée avec "errno.EINVAL" pour
   code d'erreur.

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier.

   Disponibilité : Unix.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.pathconf_names

   Dictionnaire liant les noms acceptés par les fonctions "pathconf()"
   et "fpathconf()" aux valeurs entières définies pour ces noms par le
   système d'exploitation hôte. Cette variable peut être utilisée pour
   déterminer l'ensemble des noms connus du système d'exploitation.

   Disponibilité : Unix.

os.readlink(path, *, dir_fd=None)

   Renvoie une chaîne de caractères représentant le chemin vers lequel
   le lien symbolique pointe. Le résultat peut être soit un chemin
   relatif, soit un chemin absolu. S'il est relatif, il peut être
   converti en chemin absolu en utilisant
   "os.path.join(os.path.dirname(path), result)".

   Si *path* est une chaîne de caractères (directement ou
   indirectement à travers une interface "PathLike"), le résultat sera
   aussi une chaîne de caractères, et l'appel pourra lever une
   UnicodeDecodeError. Si *path* est une chaîne d'octets (directement
   ou indirectement), le résultat sera une chaîne d'octets.

   Cette fonction peut également gérer des chemins relatifs à des
   descripteurs de répertoires.

   Lorsque vous essayez de résoudre un chemin qui peut contenir des
   liens, utilisez "realpath()" pour gérer correctement la récursion
   et les différences de plate-forme.

   Disponibilité : Unix, Windows.

   Modifié dans la version 3.2: Prise en charge des les liens
   symboliques sur Windows 6.0 (Vista).

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object* sur
   Unix.

   Modifié dans la version 3.8: Accepte un *path-like object* et une
   chaine d’octets sous Windows.Added support for directory junctions,
   and changed to return the substitution path (which typically
   includes "\\?\" prefix) rather than the optional "print name" field
   that was previously returned.

os.remove(path, *, dir_fd=None)

   Remove (delete) the file *path*.  If *path* is a directory, an
   "OSError" is raised.  Use "rmdir()" to remove directories. If the
   file does not exist, a "FileNotFoundError" is raised.

   Cette fonction prend en charge des chemins relatifs à des
   descripteurs de répertories.

   Sur Windows, tenter de retirer un fichier en cours d'utilisation
   cause la levée d'une exception, sur Unix, l'entrée du répertoire
   est supprimé mais l'espace de stockage alloué au fichier ne sera
   pas disponible avant que le fichier original ne soit plus utilisé.

   La fonction est sémantiquement identique à "unlink()".

   Raises an auditing event "os.remove" with arguments "path",
   "dir_fd".

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.removedirs(name)

   Supprime des répertoires récursivement. Fonctionne comme "rmdir()"
   si ce n'est que si le répertoire feuille est retiré avec succès,
   "removedirs()" essaye de supprimer successivement chaque répertoire
   parent mentionné dans *path* jusqu'à ce qu'un erreur ne soit levée
   (ce qui est ignoré car la signification générale en est qu'un
   répertoire parent n'est pas vide). Par exemple,
   "os.removedirs('foo/bar/baz')" supprimera d'abord le répertoire
   "'foo/bar/baz'", et ensuite supprimera "'foo/bar'" et puis "'foo'"
   s'ils sont vides. Lève une "OSError" si le répertoire feuille n'a
   pas pu être supprimé avec succès.

   Raises an auditing event "os.remove" with arguments "path",
   "dir_fd".

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

   Renomme le fichier ou le répertoire *src* en *dst*. Si *dst*
   existe, l'opération échoue avec une sous-classe "OSError" dans un
   certain nombre de cas :

   On Windows, if *dst* exists a "FileExistsError" is always raised.
   The operation may fail if *src* and *dst* are on different
   filesystems. Use "shutil.move()" to support moves to a different
   filesystem.

   On Unix, if *src* is a file and *dst* is a directory or vice-versa,
   an "IsADirectoryError" or a "NotADirectoryError" will be raised
   respectively.  If both are directories and *dst* is empty, *dst*
   will be silently replaced.  If *dst* is a non-empty directory, an
   "OSError" is raised. If both are files, *dst* will be replaced
   silently if the user has permission.  The operation may fail on
   some Unix flavors if *src* and *dst* are on different filesystems.
   If successful, the renaming will be an atomic operation (this is a
   POSIX requirement).

   Cette fonction prend en charge les spécifications *src_dir_fd*
   et/ou *dst_dir_fd* pour fournir des chemins relatifs à des
   descripteurs de fichiers.

   Si vous désirez un écrasement multiplateformes de la destination,
   utilisez la fonction "replace()".

   Raises an auditing event "os.rename" with arguments "src", "dst",
   "src_dir_fd", "dst_dir_fd".

   Modifié dans la version 3.3: Added the *src_dir_fd* and
   *dst_dir_fd* parameters.

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *src* et *dst*.

os.renames(old, new)

   Fonction récursive de renommage de fichiers ou répertoires.
   Fonctionne comme "rename()", si ce n'est que la création d'un
   répertoire intermédiaire nécessaire pour rendre le nouveau chemin
   correct est essayé en premier. Après le renommage, les répertoires
   correspondant aux segments de chemin les plus à droite de l'ancien
   nom seront élagués en utilisant "removedirs()".

   Note:

     Cette fonction peut échouer avec la nouvelle structure de
     dictionnaire définie si vous n'avez pas les permissions
     nécessaires pour supprimer le répertoire ou fichier feuille.

   Raises an auditing event "os.rename" with arguments "src", "dst",
   "src_dir_fd", "dst_dir_fd".

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *old* et *new*.

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

   Rename the file or directory *src* to *dst*.  If *dst* is a non-
   empty directory, "OSError" will be raised.  If *dst* exists and is
   a file, it will be replaced silently if the user has permission.
   The operation may fail if *src* and *dst* are on different
   filesystems.  If successful, the renaming will be an atomic
   operation (this is a POSIX requirement).

   Cette fonction prend en charge les spécifications *src_dir_fd*
   et/ou *dst_dir_fd* pour fournir des chemins relatifs à des
   descripteurs de fichiers.

   Raises an auditing event "os.rename" with arguments "src", "dst",
   "src_dir_fd", "dst_dir_fd".

   Ajouté dans la version 3.3.

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *src* et *dst*.

os.rmdir(path, *, dir_fd=None)

   Remove (delete) the directory *path*.  If the directory does not
   exist or is not empty, a "FileNotFoundError" or an "OSError" is
   raised respectively.  In order to remove whole directory trees,
   "shutil.rmtree()" can be used.

   Cette fonction prend en charge des chemins relatifs à des
   descripteurs de répertories.

   Raises an auditing event "os.rmdir" with arguments "path",
   "dir_fd".

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.scandir(path='.')

   Return an iterator of "os.DirEntry" objects corresponding to the
   entries in the directory given by *path*. The entries are yielded
   in arbitrary order, and the special entries "'.'" and "'..'" are
   not included.  If a file is removed from or added to the directory
   after creating the iterator, whether an entry for that file be
   included is unspecified.

   Utiliser "scandir()" plutôt que "listdir()" peut significativement
   améliorer les performances des codes qui nécessitent aussi l'accès
   aux types des fichiers ou à leurs attributs, puisque les objets
   "os.DirEntry" exposent ces informations si le système
   d'exploitation les fournit en scannant le répertoire. Toutes les
   méthodes de "os.DirEntry" peuvent réaliser un appel système, mais
   "is_dir()" et "is_file()" n'en requièrent normalement un que pour
   les liens symboliques ; "os.DirEntry.stat()" nécessite toujours un
   appel système sous Unix, mais seulement pour les liens symboliques
   sous Windows.

   *path* peut être un *path-like object*.  Si *path* est de type
   "bytes" (directement ou indirectement à travers une interface
   "PathLike"), le type des attributs "name" et "path" de chaque
   "os.DirEntry" sera "bytes" ; dans toutes les autres circonstances,
   ils seront de type "str".

   Cette fonction peut également gérer la spécification de
   descripteurs de fichiers. Le descripteur doit référencer un
   répertoire.

   Raises an auditing event "os.scandir" with argument "path".

   L'itérateur "scandir()" gère le protocole *context manager* et
   possède la méthode suivante :

   scandir.close()

      Ferme l'itérateur et libère les ressources acquises.

      Elle est appelée automatiquement quand l'itérateur est
      entièrement consommé ou collecté par le ramasse-miettes, ou
      quand une erreur survient durant l'itération.  Il est cependant
      conseillé de l'appeler explicitement ou d'utiliser l'instruction
      "with".

      Ajouté dans la version 3.6.

   L'exemple suivant montre une utilisation simple de "scandir()" pour
   afficher tous les fichiers (à part les répertoires) dans le chemin
   donné par *path* et ne débutant pas par "'.'". L'appel
   "entry.is_file()" ne va généralement pas faire d'appel système
   supplémentaire :

      with os.scandir(path) as it:
          for entry in it:
              if not entry.name.startswith('.') and entry.is_file():
                  print(entry.name)

   Note:

     On Unix-based systems, "scandir()" uses the system's opendir()
     and readdir() functions. On Windows, it uses the Win32
     FindFirstFileW and FindNextFileW functions.

   Ajouté dans la version 3.5.

   Modifié dans la version 3.6: Prise en charge du protocole *context
   manager* et de la méthode "close()".  Si un itérateur sur
   "scandir()" n'est ni entièrement consommé ni explicitement fermé,
   un "ResourceWarning" sera émis dans son destructeur.La fonction
   accepte un *path-like object*.

   Modifié dans la version 3.7: Ajout de la gestion des descripteurs
   de fichiers sur Unix.

class os.DirEntry

   Objet donné par "scandir()" pour exposer le chemin du fichier et
   d'autres attributs de fichier d'une entrée du répertoire.

   "scandir()" fournira autant d'informations que possible sans faire
   d'appels système additionnels. Quand un appel système "stat()" ou
   "lstat()" est réalisé, l'objet "os.DirEntry" mettra le résultat en
   cache.

   Les instances "os.DirEntry" ne sont pas censées être stockées dans
   des structures de données à longue durée de vie ; si vous savez que
   les métadonnées du fichier ont changé ou si un certain temps s'est
   écoulé depuis l'appel à "scandir()", appelez "os.stat(entry.path)"
   pour mettre à jour ces informations.

   Puisque les méthodes de "os.DirEntry" peuvent réaliser des appels
   système, elles peuvent aussi lever des "OSError". Si vous avez
   besoin d'un contrôle fin des erreurs, vous pouvez attraper les
   "OSError" en appelant les méthodes de "os.DirEntry" et les traiter
   comme il vous semble.

   Pour être directement utilisable comme un *path-like object*,
   "os.DirEntry" implémente l'interface "PathLike".

   Les attributs et méthodes des instances de "os.DirEntry" sont les
   suivants :

   name

      Le nom de fichier de base de l'entrée, relatif à l'argument
      *path* de "scandir()".

      L'attribut "name" sera de type "bytes" si l'argument *path* de
      "scandir()" est de type "bytes", sinon il sera de type "str".
      Utilisez "fsdecode()" pour décoder des noms de fichiers de types
      *byte*.

   path

      Le nom entier de l'entrée : équivalent à
      "os.path.join(scandir_path, entry.name)" où *scandir_path* est
      l'argument *path* de "scandir()". Le chemin est absolu
      uniquement si l'argument *path* de "scandir()" était absolu. Si
      l'argument *path* à la fonction "scandir()" est un descripteur
      de fichier l'attribut "path" sera égal à l'attribut "name".

      L'attribut "path" sera de type "bytes" si l'argument *path* de
      la fonction "scandir()" est de type "bytes", sinon il sera de
      type "str". Utilisez "fsdecode()" pour décoder des noms de
      fichiers de type *bytes*.

   inode()

      Renvoie le numéro d'*inode* de l'entrée.

      Le résultat est mis en cache dans l'objet "os.DirEntry".
      Utilisez "os.stat(entry.path, follow_symlinks=False).st_ino"
      pour obtenir l'information à jour.

      Au premier appel non mis en cache, un appel système est requis
      sur Windows, mais pas sur Unix.

   is_dir(*, follow_symlinks=True)

      Renvoie "True" si cette entrée est un répertoire ou un lien
      symbolique pointant vers un répertoire ; renvoie "False" si
      l'entrée est (ou pointe vers) un autre type de fichier, ou s'il
      n'existe plus.

      Si *follow_symlinks* vaut "False", renvoie "True" uniquement si
      l'entrée est un répertoire (sans suivre les liens symboliques) ;
      renvoie "False" si l'entrée est n'importe quel autre type de
      fichier ou s'il n'existe plus.

      Le résultat est mis en cache dans l'objet "os.DirEntry", avec un
      cache séparé pour les valeurs "True" ou "False" de
      *follow_symlinks*. Appelez "os.stat()" avec "stat.S_ISDIR()"
      pour obtenir l'information à jour.

      Au premier appel non mis en cache, aucun appel système n'est
      requis dans la plupart du temps. Spécifiquement, sans les liens
      symboliques, ni Windows, ni Unix ne requiert l'appel système,
      sauf sur certains systèmes de fichiers sur Unix, comme les
      système de fichiers de réseau qui renvoient "dirent.d_type ==
      DT_UNKNOWN". Si l'entrée est un lien symbolique, un appel
      système sera requis pour suivre le lien symbolique, à moins que
      *follow_symlinks* vaille "False".

      Cette méthode peut lever une "OSError" tout comme une
      "PermissionError", mais "FileNotFoundError" est interceptée et
      pas levée.

   is_file(*, follow_symlinks=True)

      Renvoie "True" si l'entrée est un fichier ou un lien symbolique
      pointant vers un fichier, renvoie "False" si l'entrée pointe est
      (ou pointe sur) sur un dossier ou sur un répertoire ou autre
      entrée non-fichier, ou s'il n'existe plus.

      Si *follow_symlinks* vaut "False", renvoie "True" uniquement si
      cette entrée est un fichier (sans suivre les liens symboliques).
      Renvoie "False" si l'entrée est un répertoire ou une autre
      entrée non-fichier, ou s'il n'existe plus.

      Le résultat est mis en cache dans l'objet "os.DirEntry". La mise
      en cache, les appels système réalisés, et les exceptions levées
      sont les mêmes que pour "is_dir()".

   is_symlink()

      Renvoie "True" si l'entrée est un lien symbolique (même cassé).
      Renvoie "False" si l'entrée pinte vers un répertoire ou tout
      autre type de fichier, ou s'il n'existe plus.

      Le résultat est mis en cache dans l'objet "os.DirEntry". Appelez
      "os.path.islink()" pour obtenir l'information à jour.

      Au premier appel non mis en cache, aucun appel système n'est
      requis. Spécifiquement, ni Windows ni Unix ne requiert d'appel
      système, excepté sur certains systèmes de fichiers Unix qui
      renvoient "dirent.d_type == DT_UNKNOWN".

      Cette méthode peut lever une "OSError" tout comme une
      "PermissionError", mais "FileNotFoundError" est interceptée et
      pas levée.

   is_junction()

      Return "True" if this entry is a junction (even if broken);
      return "False" if the entry points to a regular directory, any
      kind of file, a symlink, or if it doesn't exist anymore.

      The result is cached on the "os.DirEntry" object. Call
      "os.path.isjunction()" to fetch up-to-date information.

      Ajouté dans la version 3.12.

   stat(*, follow_symlinks=True)

      Renvoie un objet de type "stat.result" pour cette entrée. Cette
      méthode suit les liens symboliques par défaut. Pour avoir les
      statistiques sur un lien symbolique, ajouter l'argument
      "follow_symlinks=False".

      On Unix, this method always requires a system call. On Windows,
      it only requires a system call if *follow_symlinks* is "True"
      and the entry is a reparse point (for example, a symbolic link
      or directory junction).

      Sur Windows, les attributs "st_ino", "st_dev" et "st_nlink" de
      la classe "stat_result" sont toujours définis à 0. Appelez la
      fonction "os.stat()" pour avoir ces attributs.

      Le résultat est mis en cache dans l'objet "os.DirEntry", avec un
      cache séparé pour les valeurs "True" ou "False" de
      *follow_symlinks*. Appelez "os.stat()" pour obtenir
      l'information à jour.

   Note that there is a nice correspondence between several attributes
   and methods of "os.DirEntry" and of "pathlib.Path".  In particular,
   the "name" attribute has the same meaning, as do the "is_dir()",
   "is_file()", "is_symlink()", "is_junction()", and "stat()" methods.

   Ajouté dans la version 3.5.

   Modifié dans la version 3.6: Prise en charge de l'interface
   "PathLike".  Ajout du support des chemins "bytes" sous Windows.

   Modifié dans la version 3.12: The "st_ctime" attribute of a stat
   result is deprecated on Windows. The file creation time is properly
   available as "st_birthtime", and in the future "st_ctime" may be
   changed to return zero or the metadata change time, if available.

os.stat(path, *, dir_fd=None, follow_symlinks=True)

   Récupère le statut d'un fichier ou d'un descripteur de fichier.
   Réalise l'équivalent d'un appel système "stat()" sur le chemin
   donné. *path* peut être exprimé comme une chaîne de caractères ou
   d'octets -- directement ou indirectement à travers une interface
   "PathLike" -- ou comme un descripteur de fichier ouvert. Renvoie un
   objet "stat_result".

   Cette fonction suit normalement les liens symboliques. Pour
   récupérer les informations d'un lien symbolique, ajoutez l'argument
   "follow_symlinks=False" ou utilisez la fonction "lstat()".

   Cette fonction peut supporter la spécification d'un descripteur de
   fichier et le non-suivi des liens symboliques.

   On Windows, passing "follow_symlinks=False" will disable following
   all name-surrogate reparse points, which includes symlinks and
   directory junctions. Other types of reparse points that do not
   resemble links or that the operating system is unable to follow
   will be opened directly. When following a chain of multiple links,
   this may result in the original link being returned instead of the
   non-link that prevented full traversal. To obtain stat results for
   the final path in this case, use the "os.path.realpath()" function
   to resolve the path name as far as possible and call "lstat()" on
   the result. This does not apply to dangling symlinks or junction
   points, which will raise the usual exceptions.

   Exemple :

      >>> import os
      >>> statinfo = os.stat('somefile.txt')
      >>> statinfo
      os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
      st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
      st_mtime=1297230027, st_ctime=1297230027)
      >>> statinfo.st_size
      264

   Voir aussi: les fonctions "fstat()" et "lstat()".

   Modifié dans la version 3.3: Added the *dir_fd* and
   *follow_symlinks* parameters, specifying a file descriptor instead
   of a path.

   Modifié dans la version 3.6: Accepte un *path-like object*.

   Modifié dans la version 3.8: On Windows, all reparse points that
   can be resolved by the operating system are now followed, and
   passing "follow_symlinks=False" disables following all name
   surrogate reparse points. If the operating system reaches a reparse
   point that it is not able to follow, *stat* now returns the
   information for the original path as if "follow_symlinks=False" had
   been specified instead of raising an error.

class os.stat_result

   Object whose attributes correspond roughly to the members of the
   "stat" structure. It is used for the result of "os.stat()",
   "os.fstat()" and "os.lstat()".

   Attributs :

   st_mode

      Mode du fichier : type du fichier et bits de mode du fichier
      (permissions).

   st_ino

      Dépendant de la plateforme, mais lorsqu'il ne vaut pas zéro il
      identifie de manière unique le fichier pour une certaine valeur
      de "st_dev". Typiquement :

      * le numéro d'*inode* sur Unix,

      * l’index de fichier sur Windows

   st_dev

      Identifiant du périphérique sur lequel ce fichier se trouve.

   st_nlink

      Nombre de liens matériels.

   st_uid

      Identifiant d'utilisateur du propriétaire du fichier.

   st_gid

      Identifiant de groupe du propriétaire du fichier.

   st_size

      Taille du fichier en *bytes* si c'est un fichier normal ou un
      lien symbolique. La taille d'un lien symbolique est la longueur
      du nom de chemin qu'il contient sans le byte nul final.

   Horodatages :

   st_atime

      Moment de l'accès le plus récent, exprimé en secondes.

   st_mtime

      Moment de la modification de contenu la plus récente, exprimé en
      secondes.

   st_ctime

      Time of most recent metadata change expressed in seconds.

      Modifié dans la version 3.12: "st_ctime" is deprecated on
      Windows. Use "st_birthtime" for the file creation time. In the
      future, "st_ctime" will contain the time of the most recent
      metadata change, as for other platforms.

   st_atime_ns

      Moment de l'accès le plus récent, exprimé en nanosecondes, par
      un entier.

      Ajouté dans la version 3.3.

   st_mtime_ns

      Moment de la modification de contenu la plus récente, exprimé en
      nanosecondes, par un entier.

      Ajouté dans la version 3.3.

   st_ctime_ns

      Time of most recent metadata change expressed in nanoseconds as
      an integer.

      Ajouté dans la version 3.3.

      Modifié dans la version 3.12: "st_ctime_ns" is deprecated on
      Windows. Use "st_birthtime_ns" for the file creation time. In
      the future, "st_ctime" will contain the time of the most recent
      metadata change, as for other platforms.

   st_birthtime

      Time of file creation expressed in seconds. This attribute is
      not always available, and may raise "AttributeError".

      Modifié dans la version 3.12: "st_birthtime" is now available on
      Windows.

   st_birthtime_ns

      Time of file creation expressed in nanoseconds as an integer.
      This attribute is not always available, and may raise
      "AttributeError".

      Ajouté dans la version 3.12.

   Note:

     The exact meaning and resolution of the "st_atime", "st_mtime",
     "st_ctime" and "st_birthtime" attributes depend on the operating
     system and the file system. For example, on Windows systems using
     the FAT32 file systems, "st_mtime" has 2-second resolution, and
     "st_atime" has only 1-day resolution. See your operating system
     documentation for details.Similarly, although "st_atime_ns",
     "st_mtime_ns", "st_ctime_ns" and "st_birthtime_ns" are always
     expressed in nanoseconds, many systems do not provide nanosecond
     precision.  On systems that do provide nanosecond precision, the
     floating-point object used to store "st_atime", "st_mtime",
     "st_ctime" and "st_birthtime" cannot preserve all of it, and as
     such will be slightly inexact. If you need the exact timestamps
     you should always use "st_atime_ns", "st_mtime_ns", "st_ctime_ns"
     and "st_birthtime_ns".

   Sur certains systèmes Unix (tels que Linux), les attributs suivants
   peuvent également être disponibles :

   st_blocks

      Nombre de blocs de 512 *bytes* alloués pour le fichier. Cette
      valeur peut être inférieure à "st_size"/512 quand le fichier a
      des trous.

   st_blksize

      Taille de bloc « préférée » pour des entrées-sorties efficaces
      avec le système de fichiers. Écrire dans un fichier avec des
      blocs plus petits peut causer des modifications (lecture-
      écriture-réécriture) inefficaces.

   st_rdev

      Type de périphérique si l'*inode* représente un périphérique.

   st_flags

      Marqueurs définis par l'utilisateur pour le fichier.

   Sur d'autres systèmes Unix (tels que FreeBSD), les attributs
   suivants peuvent être disponibles (mais peuvent être complétés
   uniquement lorsque le super-utilisateur *root* tente de les
   utiliser) :

   st_gen

      Nombre de génération de fichier.

   Sur les systèmes Solaris et dérivés, les attributs suivants peuvent
   également être disponibles :

   st_fstype

      Chaîne qui identifie de manière unique le type du système de
      fichiers qui contient le fichier.

   On macOS systems, the following attributes may also be available:

   st_rsize

      Taillé réelle du fichier.

   st_creator

      Créateur du fichier.

   st_type

      Type du fichier.

   On Windows systems, the following attributes are also available:

   st_file_attributes

      Windows file attributes: "dwFileAttributes" member of the
      "BY_HANDLE_FILE_INFORMATION" structure returned by
      "GetFileInformationByHandle()". See the "FILE_ATTRIBUTE_*
      <stat.FILE_ATTRIBUTE_ARCHIVE>" constants in the "stat" module.

      Ajouté dans la version 3.5.

   st_reparse_tag

      When "st_file_attributes" has the "FILE_ATTRIBUTE_REPARSE_POINT"
      set, this field contains the tag identifying the type of reparse
      point. See the "IO_REPARSE_TAG_*" constants in the "stat"
      module.

   The standard module "stat" defines functions and constants that are
   useful for extracting information from a "stat" structure. (On
   Windows, some items are filled with dummy values.)

   For backward compatibility, a "stat_result" instance is also
   accessible as a tuple of at least 10 integers giving the most
   important (and portable) members of the "stat" structure, in the
   order "st_mode", "st_ino", "st_dev", "st_nlink", "st_uid",
   "st_gid", "st_size", "st_atime", "st_mtime", "st_ctime". More items
   may be added at the end by some implementations. For compatibility
   with older Python versions, accessing "stat_result" as a tuple
   always returns integers.

   Modifié dans la version 3.5: Windows renvoie maintenant l'index du
   fichier dans l'attribut "st_ino", lorsqu'il est disponible.

   Modifié dans la version 3.7: Ajout de l'attribut "st_fstype" sur
   Solaris et dérivés.

   Modifié dans la version 3.8: Added the "st_reparse_tag" member on
   Windows.

   Modifié dans la version 3.8: On Windows, the "st_mode" member now
   identifies special files as "S_IFCHR", "S_IFIFO" or "S_IFBLK" as
   appropriate.

   Modifié dans la version 3.12: On Windows, "st_ctime" is deprecated.
   Eventually, it will contain the last metadata change time, for
   consistency with other platforms, but for now still contains
   creation time. Use "st_birthtime" for the creation time.On Windows,
   "st_ino" may now be up to 128 bits, depending on the file system.
   Previously it would not be above 64 bits, and larger file
   identifiers would be arbitrarily packed.On Windows, "st_rdev" no
   longer returns a value. Previously it would contain the same as
   "st_dev", which was incorrect.Added the "st_birthtime" member on
   Windows.

os.statvfs(path)

   Perform a "statvfs()" system call on the given path.  The return
   value is an object whose attributes describe the filesystem on the
   given path, and correspond to the members of the "statvfs"
   structure, namely: "f_bsize", "f_frsize", "f_blocks", "f_bfree",
   "f_bavail", "f_files", "f_ffree", "f_favail", "f_flag",
   "f_namemax", "f_fsid".

   Deux constantes de module sont définies pour le champ-de-bits de
   l'attribut "f_flag" : si "SR_RDONLY" est activé, le système de
   fichiers est monté en lecture-seule, et si "ST_NOSUID" est activé,
   la sémantique des bits de *setuid* / *getuid* est désactivée ou non
   gérée.

   Des constantes de module supplémentaires sont définies pour les
   systèmes basés sur GNU/glibc. Ces constantes sont "ST_NODEV"
   (interdit l'accès aux fichiers spéciaux du périphérique),
   "ST_NOEXEC" (interdit l'exécution de programmes), "ST_SYNCHRONOUS"
   (les écritures sont synchronisées en une fois), "ST_MANDLOCK"
   (permet les verrous impératifs sur un système de fichiers),
   "ST_WRITE" (écrit sur les fichiers/répertoires/liens symboliques),
   "ST_APPEND" (fichiers en ajout-seul), "ST_IMMUTABLE" (fichiers
   immuables), "ST_NOATIME" (ne met pas à jour les moments d'accès),
   "ST_NODIRATIME" (ne met pas à jour les moments d'accès aux
   répertoires), "ST_REALTIME" (Met *atime* à jour relativement à
   *mtime* / *ctime*).

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier.

   Disponibilité : Unix.

   Modifié dans la version 3.2: Ajout des constantes "ST_RDONLY" et
   "ST_NOSUID".

   Modifié dans la version 3.3: Ajout de la possibilité de spécifier
   *path* comme descripteur de fichier ouvert.

   Modifié dans la version 3.4: Ajout des constantes "ST_NODEV",
   "ST_NOEXEC", "ST_SYNCHRONOUS", "ST_MANDLOCK", "ST_WRITE",
   "ST_APPEND", "ST_IMMUTABLE", "ST_NOATIME", "ST_NODIRATIME", et
   "ST_RELATIME".

   Modifié dans la version 3.6: Accepte un *path-like object*.

   Modifié dans la version 3.7: Added the "f_fsid" attribute.

os.supports_dir_fd

   A "set" object indicating which functions in the "os" module accept
   an open file descriptor for their *dir_fd* parameter. Different
   platforms provide different features, and the underlying
   functionality Python uses to implement the *dir_fd* parameter is
   not available on all platforms Python supports.  For consistency's
   sake, functions that may support *dir_fd* always allow specifying
   the parameter, but will throw an exception if the functionality is
   used when it's not locally available. (Specifying "None" for
   *dir_fd* is always supported on all platforms.)

   To check whether a particular function accepts an open file
   descriptor for its *dir_fd* parameter, use the "in" operator on
   "supports_dir_fd". As an example, this expression evaluates to
   "True" if "os.stat()" accepts open file descriptors for *dir_fd* on
   the local platform:

      os.stat in os.supports_dir_fd

   Actuellement, le paramètre *dir_fd* ne fonctionne que sur les
   plate-formes Unix. Il ne fonctionne jamais sur Windows.

   Ajouté dans la version 3.3.

os.supports_effective_ids

   A "set" object indicating whether "os.access()" permits specifying
   "True" for its *effective_ids* parameter on the local platform.
   (Specifying "False" for *effective_ids* is always supported on all
   platforms.)  If the local platform supports it, the collection will
   contain "os.access()"; otherwise it will be empty.

   This expression evaluates to "True" if "os.access()" supports
   "effective_ids=True" on the local platform:

      os.access in os.supports_effective_ids

   Currently *effective_ids* is only supported on Unix platforms; it
   does not work on Windows.

   Ajouté dans la version 3.3.

os.supports_fd

   A "set" object indicating which functions in the "os" module permit
   specifying their *path* parameter as an open file descriptor on the
   local platform.  Different platforms provide different features,
   and the underlying functionality Python uses to accept open file
   descriptors as *path* arguments is not available on all platforms
   Python supports.

   To determine whether a particular function permits specifying an
   open file descriptor for its *path* parameter, use the "in"
   operator on "supports_fd". As an example, this expression evaluates
   to "True" if "os.chdir()" accepts open file descriptors for *path*
   on your local platform:

      os.chdir in os.supports_fd

   Ajouté dans la version 3.3.

os.supports_follow_symlinks

   A "set" object indicating which functions in the "os" module accept
   "False" for their *follow_symlinks* parameter on the local
   platform. Different platforms provide different features, and the
   underlying functionality Python uses to implement *follow_symlinks*
   is not available on all platforms Python supports.  For
   consistency's sake, functions that may support *follow_symlinks*
   always allow specifying the parameter, but will throw an exception
   if the functionality is used when it's not locally available.
   (Specifying "True" for *follow_symlinks* is always supported on all
   platforms.)

   To check whether a particular function accepts "False" for its
   *follow_symlinks* parameter, use the "in" operator on
   "supports_follow_symlinks".  As an example, this expression
   evaluates to "True" if you may specify "follow_symlinks=False" when
   calling "os.stat()" on the local platform:

      os.stat in os.supports_follow_symlinks

   Ajouté dans la version 3.3.

os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)

   Crée un lien symbolique pointant vers *src* et appelé *dst*.

   Sur Windows, un lien symbolique représente soit lien vers un
   fichier, soit lien vers un répertoire mais ne s'adapte pas
   dynamiquement au type de la cible. Si la cible existe le lien sera
   crée du même type que sa cible. Dans le cas où cible n'existe pas,
   si *target_is_directory* vaut "True" le lien symbolique sera créé
   comme un répertoire, sinon comme un fichier (par défaut). Sur les
   autres plateformes, *target_id_directory* est ignoré.

   Cette fonction prend en charge des chemins relatifs à des
   descripteurs de répertories.

   Note:

     On newer versions of Windows 10, unprivileged accounts can create
     symlinks if Developer Mode is enabled. When Developer Mode is not
     available/enabled, the *SeCreateSymbolicLinkPrivilege* privilege
     is required, or the process must be run as an
     administrator."OSError" est levée quand la fonction est appelée
     par un utilisateur sans privilèges.

   Raises an auditing event "os.symlink" with arguments "src", "dst",
   "dir_fd".

   Disponibilité : Unix, Windows.

   The function is limited on Emscripten and WASI, see Plateformes
   WebAssembly for more information.

   Modifié dans la version 3.2: Prise en charge des les liens
   symboliques sur Windows 6.0 (Vista).

   Modifié dans la version 3.3: Added the *dir_fd* parameter, and now
   allow *target_is_directory* on non-Windows platforms.

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *src* et *dst*.

   Modifié dans la version 3.8: Added support for unelevated symlinks
   on Windows with Developer Mode.

os.sync()

   Force l'écriture de tout sur le disque.

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

os.truncate(path, length)

   Tronque le fichier correspondant à *path*, afin qu'il soit au
   maximum long de *length* bytes.

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier.

   Raises an auditing event "os.truncate" with arguments "path",
   "length".

   Disponibilité : Unix, Windows.

   Ajouté dans la version 3.3.

   Modifié dans la version 3.5: Prise en charge de Windows

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.unlink(path, *, dir_fd=None)

   Supprime (retire) le fichier *path*. Cette fonction est
   sémantiquement identique à "remove()". Le nom "unlink" est un nom
   Unix traditionnel. Veuillez voir la documentation de "remove()"
   pour plus d'informations.

   Raises an auditing event "os.remove" with arguments "path",
   "dir_fd".

   Modifié dans la version 3.3: Paramètre *dir_fd* ajouté.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)

   Définit les derniers moments d'accès et de modification du fichier
   spécifiés par *path*.

   La fonction "utime()" prend deux paramètres optionnels, *times* et
   *ns*. Ils spécifient le temps mis pour *path* et est utilisé comme
   suit :

   * Si *ns* est spécifié, ce doit être un couple de la forme
     "(atime_ns, mtime_ns)" où chaque membre est un entier qui exprime
     des nanosecondes.

   * Si *times* ne vaut pas "None", ce doit être un couple de la forme
     "(atime, mtime)" où chaque membre est un entier ou une expression
     à virgule flottante.

   * Si *times* vaut "None", et *ns* est non-spécifié. C'est
     équivalent à spécifier "ns = (atime_ns, mtime_ns)" où les deux
     moments sont le moment actuel.

   Il est erroné de spécifier des *n*-uplets pour *times* et *ns* à la
   fois.

   Note that the exact times you set here may not be returned by a
   subsequent "stat()" call, depending on the resolution with which
   your operating system records access and modification times; see
   "stat()". The best way to preserve exact times is to use the
   *st_atime_ns* and *st_mtime_ns* fields from the "os.stat()" result
   object with the *ns* parameter to "utime()".

   Cette fonction prend en charge la spécification d'un descripteur de
   fichier, les chemins relatifs à des descripteurs de répertoires, et
   le non-suivi des liens symboliques.

   Raises an auditing event "os.utime" with arguments "path", "times",
   "ns", "dir_fd".

   Modifié dans la version 3.3: Ajoute la prise en charge d'un
   descripteur de fichier pour *path* et des paramètres *dir_fd*,
   *follow_symlinks* et *ns*.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.walk(top, topdown=True, onerror=None, followlinks=False)

   Génère les noms de fichier dans un arbre de répertoire en
   parcourant l'arbre soit de bas-en-haut, soit de haut-en-bas. Pour
   chaque répertoire dans l'arbre enraciné en le répertoire *rop*
   (incluant ledit répertoire *top*), fournit un triplet "(dirpath,
   dirnames, filenames)".

   *dirpath* is a string, the path to the directory.  *dirnames* is a
   list of the names of the subdirectories in *dirpath* (including
   symlinks to directories, and excluding "'.'" and "'..'").
   *filenames* is a list of the names of the non-directory files in
   *dirpath*. Note that the names in the lists contain no path
   components.  To get a full path (which begins with *top*) to a file
   or directory in *dirpath*, do "os.path.join(dirpath, name)".
   Whether or not the lists are sorted depends on the file system.  If
   a file is removed from or added to the *dirpath* directory during
   generating the lists, whether a name for that file be included is
   unspecified.

   Si l'argument optionnel *topdown* vaut "True" ou n'est pas
   spécifié, le triplet pour un répertoire est généré avant les
   triplets de tous ses sous-répertoires (les répertoires sont générés
   de haut-en-bas). Si *topdown* vaut "False", le triplet pour un
   répertoire est généré après les triplets de tous ses sous-
   répertoires (les répertoires sont générés de bas-en-haut). Peu
   importe la valeur de *topdown*, la liste des sous-répertoires est
   récupérée avant que les *n*-uplets pour le répertoires et ses sous-
   répertoires ne soient générés.

   Quand *topdown* vaut "True", l'appelant peut modifier la liste
   *dirnames* en place (par exemple en utilisant "del" ou
   l'assignation par *slicing* (par tranches)) et "walk()" ne fera sa
   récursion que dans les sous-répertoires dont le nom reste dans
   *dirnames* ; cela peut être utilisé pour élaguer la recherche,
   imposer un ordre particulier de visite, ou encore pour informer
   "walk()" des répertoires créés par l'appelant ou renommés avant
   qu'il quitte "walk()" à nouveau. Modifier *dirnames* quand
   *topdown* vaut "False" n'a aucun effet dur le comportement du
   parcours parce qu'en mode bas-en-haut, les répertoires dans
   *dirnames* sont générés avant que *dirpath* ne soit lui-même
   généré.

   Par défaut, les erreurs d'un appel à "scandir()" sont ignorées. Si
   l'argument optionnel *onerror* est spécifié, il doit être une
   fonction qui sera appelée avec un seul argument, une instance de
   "OSError". Elle peut rapporter l'erreur et continuer le parcours,
   ou lever l'exception pour avorter le parcours. Notez que le nom de
   fichier est disponible dans l'attribut "filename" de l'objet
   exception.

   Par défaut, "walk()" ne parcourra pas les liens symboliques qui
   mènent à un répertoire. Définissez *followlinks* avec "True" pour
   visiter les répertoires pointés par des liens symboliques sur les
   systèmes qui le gère.

   Note:

     Soyez au courant que définir *followlinks* avec "True" peut mener
     à une récursion infinie si un lien pointe vers un répertoire
     parent de lui-même. "walk()" ne garde pas de trace des
     répertoires qu'il a déjà visité.

   Note:

     Si vous passez un chemin relatif, ne changer pas le répertoire de
     travail actuel entre deux exécutions de "walk()". "walk()" ne
     change jamais le répertoire actuel, et suppose que l'appelant ne
     le fait pas non plus.

   Cet exemple affiche le nombre de bytes pris par des fichiers non-
   répertoires dans chaque répertoire à partir du répertoire de
   départ, si ce n'est qu'il ne cherche pas après un sous-répertoire
   CSV :

      import os
      from os.path import join, getsize
      for root, dirs, files in os.walk('python/Lib/email'):
          print(root, "consumes", end=" ")
          print(sum(getsize(join(root, name)) for name in files), end=" ")
          print("bytes in", len(files), "non-directory files")
          if 'CVS' in dirs:
              dirs.remove('CVS')  # don't visit CVS directories

   Dans l'exemple suivant (simple implémentation d'un
   "shutil.rmtree()"), parcourir l'arbre de bas-en-haut est essentiel
   : "rmdir()" ne permet pas de supprimer un répertoire avant qu'un ne
   soit vide :

      # Delete everything reachable from the directory named in "top",
      # assuming there are no symbolic links.
      # CAUTION:  This is dangerous!  For example, if top == '/', it
      # could delete all your disk files.
      import os
      for root, dirs, files in os.walk(top, topdown=False):
          for name in files:
              os.remove(os.path.join(root, name))
          for name in dirs:
              os.rmdir(os.path.join(root, name))

   Raises an auditing event "os.walk" with arguments "top", "topdown",
   "onerror", "followlinks".

   Modifié dans la version 3.5: Cette fonction appelle maintenant
   "os.scandir()" au lieu de "os.listdir()", ce qui la rend plus
   rapide en réduisant le nombre d'appels à "os.stat()".

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

   Se comporte exactement comme "walk()", si ce n'est qu'il fournit un
   quadruplet "(dirpath, dirnames, filenames, dirfd)", et gère
   "dir_fd".

   *dirpath*, *dirnames* et *filenames* sont identiques à la sortie de
   "walk()" et *dirfd* est un descripteur de fichier faisant référence
   au répertoire *dirpath*.

   Cette fonction prend toujours en charge les chemins relatifs à des
   descripteurs de fichiers et le non-suivi des liens symboliques.
   Notez cependant qu'à l'inverse des autres fonctions, la valeur par
   défaut de *follow_symlinks* pour "walk()" est "False".

   Note:

     Puisque "fwalk()" fournit des descripteurs de fichiers, ils ne
     sont valides que jusque la prochaine itération. Donc vous devriez
     les dupliquer (par exemple avec "dup()") si vous désirez les
     garder plus longtemps.

   Cet exemple affiche le nombre de bytes pris par des fichiers non-
   répertoires dans chaque répertoire à partir du répertoire de
   départ, si ce n'est qu'il ne cherche pas après un sous-répertoire
   CSV :

      import os
      for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
          print(root, "consumes", end="")
          print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
                end="")
          print("bytes in", len(files), "non-directory files")
          if 'CVS' in dirs:
              dirs.remove('CVS')  # don't visit CVS directories

   Dans le prochain exemple, parcourir l'arbre de bas-en-haut est
   essentiel : "rmdir()" ne permet pas de supprimer un répertoire
   avant qu'il ne soit vide :

      # Delete everything reachable from the directory named in "top",
      # assuming there are no symbolic links.
      # CAUTION:  This is dangerous!  For example, if top == '/', it
      # could delete all your disk files.
      import os
      for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
          for name in files:
              os.unlink(name, dir_fd=rootfd)
          for name in dirs:
              os.rmdir(name, dir_fd=rootfd)

   Raises an auditing event "os.fwalk" with arguments "top",
   "topdown", "onerror", "follow_symlinks", "dir_fd".

   Disponibilité : Unix.

   Ajouté dans la version 3.3.

   Modifié dans la version 3.6: Accepte un *path-like object*.

   Modifié dans la version 3.7: Ajout de la gestion des chemins de
   type "bytes".

os.memfd_create(name[, flags=os.MFD_CLOEXEC])

   Create an anonymous file and return a file descriptor that refers
   to it. *flags* must be one of the "os.MFD_*" constants available on
   the system (or a bitwise ORed combination of them).  By default,
   the new file descriptor is non-inheritable.

   The name supplied in *name* is used as a filename and will be
   displayed as the target of the corresponding symbolic link in the
   directory "/proc/self/fd/". The displayed name is always prefixed
   with "memfd:" and serves only for debugging purposes. Names do not
   affect the behavior of the file descriptor, and as such multiple
   files can have the same name without any side effects.

   Disponibilité : noyaux Linux 3.17+ avec glibc 2.27+.

   Ajouté dans la version 3.8.

os.MFD_CLOEXEC
os.MFD_ALLOW_SEALING
os.MFD_HUGETLB
os.MFD_HUGE_SHIFT
os.MFD_HUGE_MASK
os.MFD_HUGE_64KB
os.MFD_HUGE_512KB
os.MFD_HUGE_1MB
os.MFD_HUGE_2MB
os.MFD_HUGE_8MB
os.MFD_HUGE_16MB
os.MFD_HUGE_32MB
os.MFD_HUGE_256MB
os.MFD_HUGE_512MB
os.MFD_HUGE_1GB
os.MFD_HUGE_2GB
os.MFD_HUGE_16GB

   These flags can be passed to "memfd_create()".

   Disponibilité : noyaux Linux 3.17+ avec glibc 2.27+.

   The "MFD_HUGE*" flags are only available since Linux 4.14.

   Ajouté dans la version 3.8.

os.eventfd(initval[, flags=os.EFD_CLOEXEC])

   Create and return an event file descriptor. The file descriptors
   supports raw "read()" and "write()" with a buffer size of 8,
   "select()", "poll()" and similar. See man page *eventfd(2)* for
   more information.  By default, the new file descriptor is non-
   inheritable.

   *initval* is the initial value of the event counter. The initial
   value must be a 32 bit unsigned integer. Please note that the
   initial value is limited to a 32 bit unsigned int although the
   event counter is an unsigned 64 bit integer with a maximum value of
   2^64-2.

   *flags* can be constructed from "EFD_CLOEXEC", "EFD_NONBLOCK", and
   "EFD_SEMAPHORE".

   If "EFD_SEMAPHORE" is specified and the event counter is non-zero,
   "eventfd_read()" returns 1 and decrements the counter by one.

   If "EFD_SEMAPHORE" is not specified and the event counter is non-
   zero, "eventfd_read()" returns the current event counter value and
   resets the counter to zero.

   If the event counter is zero and "EFD_NONBLOCK" is not specified,
   "eventfd_read()" blocks.

   "eventfd_write()" increments the event counter. Write blocks if the
   write operation would increment the counter to a value larger than
   2^64-2.

   Exemple :

      import os

      # semaphore with start value '1'
      fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)
      try:
          # acquire semaphore
          v = os.eventfd_read(fd)
          try:
              do_work()
          finally:
              # release semaphore
              os.eventfd_write(fd, v)
      finally:
          os.close(fd)

   Disponibilité : noyaux Linux 2.6.27+ avec glibc 2.8+.

   Ajouté dans la version 3.10.

os.eventfd_read(fd)

   Read value from an "eventfd()" file descriptor and return a 64 bit
   unsigned int. The function does not verify that *fd* is an
   "eventfd()".

   Disponibilité : Linux 2.6.27+

   Ajouté dans la version 3.10.

os.eventfd_write(fd, value)

   Add value to an "eventfd()" file descriptor. *value* must be a 64
   bit unsigned int. The function does not verify that *fd* is an
   "eventfd()".

   Disponibilité : Linux 2.6.27+

   Ajouté dans la version 3.10.

os.EFD_CLOEXEC

   Set close-on-exec flag for new "eventfd()" file descriptor.

   Disponibilité : Linux 2.6.27+

   Ajouté dans la version 3.10.

os.EFD_NONBLOCK

   Set "O_NONBLOCK" status flag for new "eventfd()" file descriptor.

   Disponibilité : Linux 2.6.27+

   Ajouté dans la version 3.10.

os.EFD_SEMAPHORE

   Provide semaphore-like semantics for reads from an "eventfd()" file
   descriptor. On read the internal counter is decremented by one.

   Disponibilité : Linux 2.6.30+

   Ajouté dans la version 3.10.


Attributs étendus pour Linux
----------------------------

Ajouté dans la version 3.3.

Toutes ces fonctions ne sont disponibles que sur Linux.

os.getxattr(path, attribute, *, follow_symlinks=True)

   Renvoie la valeur de l'attribut étendu *attribute* du système de
   fichiers pour le chemin *path*. *attribute* peut être une chaîne de
   caractères ou d'octets (directement ou indirectement à travers une
   interface "PathLike"). Si c'est une chaîne de caractères, elle est
   encodée avec l'encodage du système de fichiers.

   Cette fonction peut supporter la spécification d'un descripteur de
   fichier et le non-suivi des liens symboliques.

   Raises an auditing event "os.getxattr" with arguments "path",
   "attribute".

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *path* et *attribute*.

os.listxattr(path=None, *, follow_symlinks=True)

   Renvoie une liste d'attributs du système de fichiers étendu pour
   *path*. Les attributs dans le liste sont représentés par des
   chaînes de caractères et sont décodés avec l'encodage du système de
   fichier. Si *path* vaut "None", "listxattr()" examinera le
   répertoire actuel.

   Cette fonction peut supporter la spécification d'un descripteur de
   fichier et le non-suivi des liens symboliques.

   Raises an auditing event "os.listxattr" with argument "path".

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.removexattr(path, attribute, *, follow_symlinks=True)

   Removes the extended filesystem attribute *attribute* from *path*.
   *attribute* should be bytes or str (directly or indirectly through
   the "PathLike" interface). If it is a string, it is encoded with
   the *filesystem encoding and error handler*.

   Cette fonction peut supporter la spécification d'un descripteur de
   fichier et le non-suivi des liens symboliques.

   Raises an auditing event "os.removexattr" with arguments "path",
   "attribute".

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *path* et *attribute*.

os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)

   Set the extended filesystem attribute *attribute* on *path* to
   *value*. *attribute* must be a bytes or str with no embedded NULs
   (directly or indirectly through the "PathLike" interface). If it is
   a str, it is encoded with the *filesystem encoding and error
   handler*.  *flags* may be "XATTR_REPLACE" or "XATTR_CREATE". If
   "XATTR_REPLACE" is given and the attribute does not exist,
   "ENODATA" will be raised. If "XATTR_CREATE" is given and the
   attribute already exists, the attribute will not be created and
   "EEXISTS" will be raised.

   Cette fonction peut supporter la spécification d'un descripteur de
   fichier et le non-suivi des liens symboliques.

   Note:

     Un bogue des versions inférieures à 2.6.39 du noyau Linux faisait
     que les marqueurs de *flags*  étaient ignorés sur certains
     systèmes.

   Raises an auditing event "os.setxattr" with arguments "path",
   "attribute", "value", "flags".

   Modifié dans la version 3.6: Accepte un *path-like object* pour
   *path* et *attribute*.

os.XATTR_SIZE_MAX

   La taille maximum que peut faire la valeur d'un attribut étendu.
   Actuellement, c'est 64 KiB sur Lniux.

os.XATTR_CREATE

   C'est une valeur possible pour l'argument *flags* de "setxattr()".
   Elle indique que l'opération doit créer un attribut.

os.XATTR_REPLACE

   C'est une valeur possible pour l'argument *flags* de
   "setxattr()".Elle indique que l'opération doit remplacer un
   attribut existant.


Gestion des processus
=====================

Ces fonctions peuvent être utilisées pour créer et gérer des
processus.

Les variantes des fonctions "exec*" prennent une liste d'arguments
pour le nouveau programme chargé dans le processus. Dans tous les cas,
le premier de ces arguments est passé au nouveau programme comme son
propre nom plutôt que comme un argument qu'un utilisateur peut avoir
tapé en ligne de commande. Pour les développeurs C, c'est l'argument
"argv[0]" qui est passé à la fonction "main()" du programme. Par
exemple, "os.execv('/bin/echo/', ['foo', 'bar'])" affichera uniquement
"bar" sur la sortie standard ; "foo" semblera être ignoré.

os.abort()

   Génère un signal "SIGABRT" au processus actuel. Sur Linux, le
   comportement par défaut est de produire un vidage système (*Core
   Dump*) ; sur Windows, le processus renvoie immédiatement un code
   d'erreur "3". Attention : appeler cette fonction n'appellera pas le
   gestionnaire de signal Python enregistré par "SIGABRT" à l'aide de
   "signal.signal()".

os.add_dll_directory(path)

   Ajoute un chemin aux chemins de recherche de DLL.

   This search path is used when resolving dependencies for imported
   extension modules (the module itself is resolved through
   "sys.path"), and also by "ctypes".

   Remove the directory by calling **close()** on the returned object
   or using it in a "with" statement.

   See the Microsoft documentation for more information about how DLLs
   are loaded.

   Raises an auditing event "os.add_dll_directory" with argument
   "path".

   Disponibilité : Windows.

   Ajouté dans la version 3.8: Previous versions of CPython would
   resolve DLLs using the default behavior for the current process.
   This led to inconsistencies, such as only sometimes searching
   "PATH" or the current working directory, and OS functions such as
   "AddDllDirectory" having no effect.In 3.8, the two primary ways
   DLLs are loaded now explicitly override the process-wide behavior
   to ensure consistency. See the porting notes for information on
   updating libraries.

os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)

   Ces fonctions exécutent toutes un nouveau programme, remplaçant le
   processus actuel, elles ne renvoient pas. Sur Unix, le nouvel
   exécutable est chargé dans le processus actuel, et aura le même
   identifiant de processus (PID) que l'appelant. Les erreurs seront
   reportées par des exceptions "OSError".

   Le processus actuel est remplacé immédiatement. Les fichiers objets
   et descripteurs de fichiers ne sont pas purgés, donc s'il est
   possible que des données aient été mises en tampon pour ces
   fichiers, vous devriez les purger manuellement en utilisant
   "sys.stdout.flush()" ou "os.fsync()" avant d'appeler une fonction
   "exec*".

   The "l" and "v" variants of the "exec*" functions differ in how
   command-line arguments are passed.  The "l" variants are perhaps
   the easiest to work with if the number of parameters is fixed when
   the code is written; the individual parameters simply become
   additional parameters to the "execl*()" functions.  The "v"
   variants are good when the number of parameters is variable, with
   the arguments being passed in a list or tuple as the *args*
   parameter.  In either case, the arguments to the child process
   should start with the name of the command being run, but this is
   not enforced.

   The variants which include a "p" near the end ("execlp()",
   "execlpe()", "execvp()", and "execvpe()") will use the "PATH"
   environment variable to locate the program *file*.  When the
   environment is being replaced (using one of the "exec*e" variants,
   discussed in the next paragraph), the new environment is used as
   the source of the "PATH" variable. The other variants, "execl()",
   "execle()", "execv()", and "execve()", will not use the "PATH"
   variable to locate the executable; *path* must contain an
   appropriate absolute or relative path. Relative paths must include
   at least one slash, even on Windows, as plain names will not be
   resolved.

   Pour les fonctions "execle()", "execlpe()", "execve()", et
   "execvpe()" (notez qu'elle finissent toutes par « e »), le
   paramètre *env* doit être un *mapping* qui est utilisé pour définir
   les variables d'environnement du nouveau processus (celles-ci sont
   utilisées à la place de l'environnement du nouveau processus). Les
   fonctions "execl()", "execlp()", "execv()", et "execvp()" causent
   toutes un héritage de l'environnement du processus actuel par le
   processus fils.

   Pour "execve()", sur certaines plate-formes, *path* peut également
   être spécifié par un descripteur de fichier ouvert. Cette
   fonctionnalité peut ne pas être gérée sur votre plate-forme. Vous
   pouvez vérifier si c'est disponible en utilisant "os._supports_fd".
   Si c'est indisponible, l'utiliser lèvera une "NotImplementedError".

   Raises an auditing event "os.exec" with arguments "path", "args",
   "env".

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

   Modifié dans la version 3.3: Added support for specifying *path* as
   an open file descriptor for "execve()".

   Modifié dans la version 3.6: Accepte un *path-like object*.

os._exit(n)

   Quitte le processus avec le statut *n*, sans appeler les
   gestionnaires de nettoyage, sans purger les tampons des fichiers,
   etc.

   Note:

     The standard way to exit is "sys.exit(n)".  "_exit()" should
     normally only be used in the child process after a "fork()".

Les codes de sortie suivants sont définis et peuvent être utilisés
avec "_exit()", mais ils ne sont pas nécessaires. Ils sont typiquement
utilisés pour les programmes systèmes écrits en Python, comme un
programme de gestion de l'exécution des commandes d'un serveur de
mails.

Note:

  Certaines de ces valeurs peuvent ne pas être disponibles sur toutes
  les plate-formes Unix étant donné qu'il en existe des variations.
  Ces constantes sont définies là où elles sont définies par la plate-
  forme sous-jacente.

os.EX_OK

   Exit code that means no error occurred. May be taken from the
   defined value of "EXIT_SUCCESS" on some platforms. Generally has a
   value of zero.

   Disponibilité : Unix, Windows.

os.EX_USAGE

   Code de sortie signifiant que les commandes n'ont pas été utilisées
   correctement, comme quand le mauvais nombre d'arguments a été
   donné.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_DATAERR

   Code de sortie signifiant que les données en entrées étaient
   incorrectes.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_NOINPUT

   Code de sortie signifiant qu'un des fichiers d'entrée n'existe pas
   ou n'est pas lisible.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_NOUSER

   Code de sortie signifiant qu'un utilisateur spécifié n'existe pas.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_NOHOST

   Code de sortie signifiant qu'un hôte spécifié n'existe pas.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_UNAVAILABLE

   Code de sortie signifiant qu'un service requis n'est pas
   disponible.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_SOFTWARE

   Code de sortie signifiant qu'une erreur interne d'un programme a
   été détectée.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_OSERR

   Code de sortie signifiant qu'une erreur du système d'exploitation a
   été détectée, comme l'incapacité à réaliser un *fork* ou à créer un
   tuyau (*pipe*).

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_OSFILE

   Code de sortie signifiant qu'un fichier n'existe pas, n'a pas pu
   être ouvert, ou avait une autre erreur.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_CANTCREAT

   Code de sortie signifiant qu'un fichier spécifié par l'utilisateur
   n'a pas pu être créé.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_IOERR

   Code de sortie signifiant qu'une erreur est apparue pendant une E/S
   sur un fichier.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_TEMPFAIL

   Code de sortie signifiant qu'un échec temporaire est apparu. Cela
   indique quelque chose qui pourrait ne pas être une erreur, comme
   une connexion au réseau qui n'a pas pu être établie pendant une
   opération réessayable.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_PROTOCOL

   Code de sortie signifiant qu'un protocole d'échange est illégal,
   invalide, ou non-compris.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_NOPERM

   Code de sortie signifiant qu'il manque certaines permissions pour
   réaliser une opération (mais n'est pas destiné au problèmes de
   système de fichiers).

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_CONFIG

   Code de sortie signifiant qu'une erreur de configuration est
   apparue.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.EX_NOTFOUND

   Code de sortie signifiant quelque chose comme « une entrée n'a pas
   été trouvée ».

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.fork()

   *Fork* un processus fils. Renvoie "0" dans le processus fils et le
   PID du processus fils dans le processus père. Si une erreur
   apparaît, une "OSError" est levée.

   Note that some platforms including FreeBSD <= 6.3 and Cygwin have
   known issues when using "fork()" from a thread.

   Raises an auditing event "os.fork" with no arguments.

   Avertissement:

     If you use TLS sockets in an application calling "fork()", see
     the warning in the "ssl" documentation.

   Avertissement:

     On macOS the use of this function is unsafe when mixed with using
     higher-level system APIs, and that includes using
     "urllib.request".

   Modifié dans la version 3.8: Calling "fork()" in a subinterpreter
   is no longer supported ("RuntimeError" is raised).

   Modifié dans la version 3.12: If Python is able to detect that your
   process has multiple threads, "os.fork()" now raises a
   "DeprecationWarning".We chose to surface this as a warning, when
   detectable, to better inform developers of a design problem that
   the POSIX platform specifically notes as not supported. Even in
   code that *appears* to work, it has never been safe to mix
   threading with "os.fork()" on POSIX platforms. The CPython runtime
   itself has always made API calls that are not safe for use in the
   child process when threads existed in the parent (such as "malloc"
   and "free").Users of macOS or users of libc or malloc
   implementations other than those typically found in glibc to date
   are among those already more likely to experience deadlocks running
   such code.See this discussion on fork being incompatible with
   threads for technical details of why we're surfacing this
   longstanding platform compatibility problem to developers.

   Disponibilité : POSIX, pas disponible pour Emscripten ni pour WASI.

os.forkpty()

   *Fork* un processus fils, en utilisant un nouveau pseudo-terminal
   comme terminal contrôlant le fils. Renvoie une paire "(pid, fd)" où
   *pid* vaut "0" dans le fils et le PID du processus fils dans le
   parent, et *fd* est le descripteur de fichier de la partie maître
   du pseudo-terminal. Pour une approche plus portable, utilisez le
   module "pty". Si une erreur apparaît, une "OSError" est levée.

   Raises an auditing event "os.forkpty" with no arguments.

   Avertissement:

     On macOS the use of this function is unsafe when mixed with using
     higher-level system APIs, and that includes using
     "urllib.request".

   Modifié dans la version 3.8: Calling "forkpty()" in a
   subinterpreter is no longer supported ("RuntimeError" is raised).

   Modifié dans la version 3.12: If Python is able to detect that your
   process has multiple threads, this now raises a
   "DeprecationWarning". See the longer explanation on "os.fork()".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.kill(pid, sig, /)

   Envoie le signal *sig* au processus *pid*. Les constantes pour les
   signaux spécifiques à la plate-forme hôte sont définies dans le
   module "signal".

   Windows: The "signal.CTRL_C_EVENT" and "signal.CTRL_BREAK_EVENT"
   signals are special signals which can only be sent to console
   processes which share a common console window, e.g., some
   subprocesses. Any other value for *sig* will cause the process to
   be unconditionally killed by the TerminateProcess API, and the exit
   code will be set to *sig*. The Windows version of "kill()"
   additionally takes process handles to be killed.

   Voir également "signal.pthread_kill()".

   Raises an auditing event "os.kill" with arguments "pid", "sig".

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

   Modifié dans la version 3.2: Prise en charge de Windows.

os.killpg(pgid, sig, /)

   Envoie le signal *sig* au groupe de processus *pgid*.

   Raises an auditing event "os.killpg" with arguments "pgid", "sig".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.nice(increment, /)

   Ajoute *increment*  à la priorité du processus. Renvoie la nouvelle
   priorité.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.pidfd_open(pid, flags=0)

   Return a file descriptor referring to the process *pid* with
   *flags* set. This descriptor can be used to perform process
   management without races and signals.

   See the *pidfd_open(2)* man page for more details.

   Disponibilité : Linux 5.3+

   Ajouté dans la version 3.9.

   os.PIDFD_NONBLOCK

      This flag indicates that the file descriptor will be non-
      blocking. If the process referred to by the file descriptor has
      not yet terminated, then an attempt to wait on the file
      descriptor using *waitid(2)* will immediately return the error
      "EAGAIN" rather than blocking.

   Availability: Linux >= 5.10

   Ajouté dans la version 3.12.

os.plock(op, /)

   Verrouille les segments du programme en mémoire. La valeur de *op*
   (définie dans "<sys/lock.h>") détermine quels segments sont
   verrouillés.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.popen(cmd, mode='r', buffering=-1)

   Open a pipe to or from command *cmd*. The return value is an open
   file object connected to the pipe, which can be read or written
   depending on whether *mode* is "'r'" (default) or "'w'". The
   *buffering* argument have the same meaning as the corresponding
   argument to the built-in "open()" function. The returned file
   object reads or writes text strings rather than bytes.

   La méthode "close" renvoie "None" si le sous-processus s'est
   terminé avec succès, ou le code de retour du sous-processus s'il y
   a eu une erreur. Sur les systèmes POSIX, si le code de retour est
   positif, il représente la valeur de retour du processus décalée
   d'un byte sur la gauche. Si le code de retour est négatif, le
   processus le processus s'est terminé avec le signal donné par la
   négation de la valeur de retour. (Par exemple, la valeur de retour
   pourrait être "-signal.SIGKILL" si le sous-processus a été tué).
   Sur les systèmes Windows, la valeur de retour contient le code de
   retour du processus fils dans un entier signé .

   On Unix, "waitstatus_to_exitcode()" can be used to convert the
   "close" method result (exit status) into an exit code if it is not
   "None". On Windows, the "close" method result is directly the exit
   code (or "None").

   Ceci est implémenté en utilisant "subprocess.Popen". Lisez la
   documentation de cette classe pour des méthodes plus puissantes
   pour gérer et communiquer avec des sous-processus.

   Disponibilité : pas disponible pour Emscripten ni pour WASI.

   Note:

     The Python UTF-8 Mode affects encodings used for *cmd* and pipe
     contents."popen()" is a simple wrapper around "subprocess.Popen".
     Use "subprocess.Popen" or "subprocess.run()" to control options
     like encodings.

os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

   Wraps the "posix_spawn()" C library API for use from Python.

   Most users should use "subprocess.run()" instead of
   "posix_spawn()".

   The positional-only arguments *path*, *args*, and *env* are similar
   to "execve()".

   The *path* parameter is the path to the executable file.  The
   *path* should contain a directory.  Use "posix_spawnp()" to pass an
   executable file without directory.

   The *file_actions* argument may be a sequence of tuples describing
   actions to take on specific file descriptors in the child process
   between the C library implementation's "fork()" and "exec()" steps.
   The first item in each tuple must be one of the three type
   indicator listed below describing the remaining tuple elements:

   os.POSIX_SPAWN_OPEN

      ("os.POSIX_SPAWN_OPEN", *fd*, *path*, *flags*, *mode*)

      Performs "os.dup2(os.open(path, flags, mode), fd)".

   os.POSIX_SPAWN_CLOSE

      ("os.POSIX_SPAWN_CLOSE", *fd*)

      Performs "os.close(fd)".

   os.POSIX_SPAWN_DUP2

      ("os.POSIX_SPAWN_DUP2", *fd*, *new_fd*)

      Performs "os.dup2(fd, new_fd)".

   These tuples correspond to the C library
   "posix_spawn_file_actions_addopen()",
   "posix_spawn_file_actions_addclose()", and
   "posix_spawn_file_actions_adddup2()" API calls used to prepare for
   the "posix_spawn()" call itself.

   The *setpgroup* argument will set the process group of the child to
   the value specified. If the value specified is 0, the child's
   process group ID will be made the same as its process ID. If the
   value of *setpgroup* is not set, the child will inherit the
   parent's process group ID. This argument corresponds to the C
   library "POSIX_SPAWN_SETPGROUP" flag.

   If the *resetids* argument is "True" it will reset the effective
   UID and GID of the child to the real UID and GID of the parent
   process. If the argument is "False", then the child retains the
   effective UID and GID of the parent. In either case, if the set-
   user-ID and set-group-ID permission bits are enabled on the
   executable file, their effect will override the setting of the
   effective UID and GID. This argument corresponds to the C library
   "POSIX_SPAWN_RESETIDS" flag.

   If the *setsid* argument is "True", it will create a new session ID
   for "posix_spawn". *setsid* requires "POSIX_SPAWN_SETSID" or
   "POSIX_SPAWN_SETSID_NP" flag. Otherwise, "NotImplementedError" is
   raised.

   The *setsigmask* argument will set the signal mask to the signal
   set specified. If the parameter is not used, then the child
   inherits the parent's signal mask. This argument corresponds to the
   C library "POSIX_SPAWN_SETSIGMASK" flag.

   The *sigdef* argument will reset the disposition of all signals in
   the set specified. This argument corresponds to the C library
   "POSIX_SPAWN_SETSIGDEF" flag.

   The *scheduler* argument must be a tuple containing the (optional)
   scheduler policy and an instance of "sched_param" with the
   scheduler parameters. A value of "None" in the place of the
   scheduler policy indicates that is not being provided. This
   argument is a combination of the C library
   "POSIX_SPAWN_SETSCHEDPARAM" and "POSIX_SPAWN_SETSCHEDULER" flags.

   Raises an auditing event "os.posix_spawn" with arguments "path",
   "argv", "env".

   Ajouté dans la version 3.8.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

   Wraps the "posix_spawnp()" C library API for use from Python.

   Similar to "posix_spawn()" except that the system searches for the
   *executable* file in the list of directories specified by the
   "PATH" environment variable (in the same way as for "execvp(3)").

   Raises an auditing event "os.posix_spawn" with arguments "path",
   "argv", "env".

   Ajouté dans la version 3.8.

   Disponibilité : POSIX, pas disponible pour Emscripten ni pour WASI.

   See "posix_spawn()" documentation.

os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)

   Enregistre des appelables (*callables*) à exécuter quand un nouveau
   processus enfant est crée avec "os.fork()" ou des APIs similaires
   de clonage de processus. Les paramètres sont optionnels et par
   mots-clé uniquement. Chacun spécifie un point d'appel différent.

   * *before* est une fonction appelée avant de *forker* un processus
     enfant.

   * *after_in_parent* est une fonction appelée depuis le processus
     parent après avoir *forké* un processus enfant.

   * *after_in_child* est une fonction appelée depuis le processus
     enfant.

   Ces appels ne sont effectués que si le contrôle est censé retourner
   à l'interpréteur Python. Un lancement de "subprocess" typique ne
   les déclenchera pas, car l'enfant ne ré-entre pas dans
   l'interpréteur.

   Les fonctions enregistrées pour l'exécution avant le *fork* sont
   appelées dans l'ordre inverse à leur enregistrement. Les fonctions
   enregistrées pour l'exécution après le *fork* (soit dans le parent
   ou dans l'enfant) sont appelées dans l'ordre de leur
   enregistrement.

   Notez que les appels à "fork()" faits par du code C de modules
   tiers peuvent ne pas appeler ces fonctions, à moins que ce code
   appelle explicitement "PyOS_BeforeFork()",
   "PyOS_AfterFork_Parent()" et "PyOS_AfterFork_Child()".

   Il n'y a aucun moyen d'annuler l'enregistrement d'une fonction.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.7.

os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)

   Exécute le programme *path* dans un nouveau processus.

   (Notez que le module "subprocess" fournit des outils plus puissants
   pour générer de nouveaux processus et récupérer leur valeur de
   retour. Il est préférable d'utiliser ce module que ces fonctions.
   Voyez surtout la section Remplacer les fonctions plus anciennes par
   le module subprocess.)

   Si *mode* vaut "P_NOWAIT", cette fonction renvoie le PID du nouveau
   processus, et si *mode* vaut "P_WAIT", la fonction renvoie le code
   de sortie du processus s'il se termine normalement, ou "-signal" où
   *signal* est le signal qui a tué le processus. Sur Windows, le PID
   du processus sera en fait l'identificateur du processus (*process
   handle*) et peut donc être utilisé avec la fonction "waitpid()".

   Note on VxWorks, this function doesn't return "-signal" when the
   new process is killed. Instead it raises OSError exception.

   The "l" and "v" variants of the "spawn*" functions differ in how
   command-line arguments are passed.  The "l" variants are perhaps
   the easiest to work with if the number of parameters is fixed when
   the code is written; the individual parameters simply become
   additional parameters to the "spawnl*()" functions.  The "v"
   variants are good when the number of parameters is variable, with
   the arguments being passed in a list or tuple as the *args*
   parameter.  In either case, the arguments to the child process must
   start with the name of the command being run.

   Les variantes qui incluent un « p » vers la fin ("spawnlp()",
   "spawnlpe()", "spawnvp()", et "spawnvpe()") utiliseront la variable
   d'environnement "PATH" pour localiser le programme *file*. Quand
   l'environnement est remplacé (en utilisant une des variantes
   "spawn*e", discutées dans le paragraphe suivant), le nouvel
   environnement est utilisé comme source de la variable
   d'environnement "PATH". Les autres variantes "spawnl()",
   "spawnle()", "spawnv()", et "spawnve()" n'utiliseront pas la
   variable d'environnement "PATH" pour localiser l'exécutable. *path*
   doit contenir un chemin absolue ou relatif approprié.

   Pour les fonctions "spawnle()", "spawnlpe()", "spawnve()", et
   "spawnvpe()" (notez qu'elles finissent toutes par « e »), le
   paramètre *env* doit être un *mapping* qui est utilisé pour définir
   les variables d'environnement du nouveau processus (celles-ci sont
   utilisées à la place de l'environnement du nouveau processus). Les
   fonctions "spawnl()", "spawnlp()", "spawnv()", et "spawnvp()"
   causent toutes un héritage de l'environnement du processus actuel
   par le processus fils. Notez que les clefs et les valeurs du
   dictionnaire *env* doivent être des chaînes de caractères. Des
   valeurs invalides pour les clefs ou les valeurs met la fonction en
   échec et renvoie "127".

   Par exemple, les appels suivants à "spawnlp()" et "spawnvpe()" sont
   équivalents :

      import os
      os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

      L = ['cp', 'index.html', '/dev/null']
      os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

   Raises an auditing event "os.spawn" with arguments "mode", "path",
   "args", "env".

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

   "spawnlp()", "spawnlpe()", "spawnvp()", et "spawnvpe()" ne sont pas
   disponibles sur Windows. "spawnle()" et "spawnve()" ne sont pas
   sécurisés pour les appels concurrents (*thread-safe*) sur Windows,
   il est conseillé d'utiliser le module "subprocess" à la place.

   Modifié dans la version 3.6: Accepte un *path-like object*.

os.P_NOWAIT
os.P_NOWAITO

   Possible values for the *mode* parameter to the "spawn*" family of
   functions.  If either of these values is given, the "spawn*"
   functions will return as soon as the new process has been created,
   with the process id as the return value.

   Disponibilité : Unix, Windows.

os.P_WAIT

   Possible value for the *mode* parameter to the "spawn*" family of
   functions.  If this is given as *mode*, the "spawn*" functions will
   not return until the new process has run to completion and will
   return the exit code of the process the run is successful, or
   "-signal" if a signal kills the process.

   Disponibilité : Unix, Windows.

os.P_DETACH
os.P_OVERLAY

   Valeurs possibles pour le paramètre *mode* de la famille de
   fonctions "spawn*". Ces valeurs sont moins portables que celles
   listées plus haut. "P_DETACH" est similaire à "P_NOWAIT", mais le
   nouveau processus est détaché de la console du processus appelant.
   Si "P_OVERLAY" est utilisé, le processus actuel sera remplacé. La
   fonction "spawn*" ne sort jamais.

   Disponibilité : Windows.

os.startfile(path[, operation][, arguments][, cwd][, show_cmd])

   Lance un fichier avec son application associée.

   When *operation* is not specified, this acts like double-clicking
   the file in Windows Explorer, or giving the file name as an
   argument to the **start** command from the interactive command
   shell: the file is opened with whatever application (if any) its
   extension is associated.

   When another *operation* is given, it must be a "command verb" that
   specifies what should be done with the file. Common verbs
   documented by Microsoft are "'open'", "'print'" and  "'edit'" (to
   be used on files) as well as "'explore'" and "'find'" (to be used
   on directories).

   When launching an application, specify *arguments* to be passed as
   a single string. This argument may have no effect when using this
   function to launch a document.

   The default working directory is inherited, but may be overridden
   by the *cwd* argument. This should be an absolute path. A relative
   *path* will be resolved against this argument.

   Use *show_cmd* to override the default window style. Whether this
   has any effect will depend on the application being launched.
   Values are integers as supported by the Win32 "ShellExecute()"
   function.

   "startfile()" returns as soon as the associated application is
   launched. There is no option to wait for the application to close,
   and no way to retrieve the application's exit status.  The *path*
   parameter is relative to the current directory or *cwd*.  If you
   want to use an absolute path, make sure the first character is not
   a slash ("'/'")  Use "pathlib" or the "os.path.normpath()" function
   to ensure that paths are properly encoded for Win32.

   To reduce interpreter startup overhead, the Win32 "ShellExecute()"
   function is not resolved until this function is first called.  If
   the function cannot be resolved, "NotImplementedError" will be
   raised.

   Raises an auditing event "os.startfile" with arguments "path",
   "operation".

   Raises an auditing event "os.startfile/2" with arguments "path",
   "operation", "arguments", "cwd", "show_cmd".

   Disponibilité : Windows.

   Modifié dans la version 3.10: Added the *arguments*, *cwd* and
   *show_cmd* arguments, and the "os.startfile/2" audit event.

os.system(command)

   Execute the command (a string) in a subshell.  This is implemented
   by calling the Standard C function "system()", and has the same
   limitations. Changes to "sys.stdin", etc. are not reflected in the
   environment of the executed command. If *command* generates any
   output, it will be sent to the interpreter standard output stream.
   The C standard does not specify the meaning of the return value of
   the C function, so the return value of the Python function is
   system-dependent.

   On Unix, the return value is the exit status of the process encoded
   in the format specified for "wait()".

   Sur Windows, la valeur de retour est celle renvoyée par l'invite de
   commande système après avoir lancé *command*. L'invite de commande
   est donné par la variable d'environnement Windows "COMSPEC". Elle
   vaut habituellement **cmd.exe**, qui renvoie l'état de sortie de la
   commande lancée. Sur les systèmes qui utilisent un invite de
   commande non-natif, consultez la documentation propre à l'invite.

   Le module "subprocess" fournit des outils plus puissants pour
   générer de nouveaux processus et pour récupérer leur résultat. Il
   est préférable d'utiliser ce module plutôt que d'utiliser cette
   fonction. Voir la section Remplacer les fonctions plus anciennes
   par le module subprocess de la documentation du module "subprocess"
   pour des informations plus précises et utiles.

   On Unix, "waitstatus_to_exitcode()" can be used to convert the
   result (exit status) into an exit code. On Windows, the result is
   directly the exit code.

   Raises an auditing event "os.system" with argument "command".

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

os.times()

   Renvoie les temps globaux actuels d'exécution du processus. La
   valeur de retour est un objet avec cinq attributs :

   * "user" - user time

   * "system" - system time

   * "children_user" - user time of all child processes

   * "children_system" - system time of all child processes

   * "elapsed" - elapsed real time since a fixed point in the past

   For backwards compatibility, this object also behaves like a five-
   tuple containing "user", "system", "children_user",
   "children_system", and "elapsed" in that order.

   See the Unix manual page *times(2)* and times(3) manual page on
   Unix or the GetProcessTimes MSDN on Windows. On Windows, only
   "user" and "system" are known; the other attributes are zero.

   Disponibilité : Unix, Windows.

   Modifié dans la version 3.3: Type de retour changé d'un quintuplet
   en un objet compatible avec le type *n*-uplet, avec des attributs
   nommés.

os.wait()

   Attend qu'un processus fils soit complété, et renvoie une paire
   contenant son PID et son état de sortie : un nombre de 16 bits dont
   le *byte* de poids faible est le nombre correspondant au signal qui
   a tué le processus, et dont le *byte* de poids fort est le statut
   de sortie (si la signal vaut "0"). Le bit de poids fort du *byte*
   de poids faible est mis à 1 si un (fichier système) *core file* a
   été produit.

   If there are no children that could be waited for,
   "ChildProcessError" is raised.

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exit code.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Voir aussi:

     The other "wait*()" functions documented below can be used to
     wait for the completion of a specific child process and have more
     options. "waitpid()" is the only one also available on Windows.

os.waitid(idtype, id, options, /)

   Wait for the completion of a child process.

   *idtype* can be "P_PID", "P_PGID", "P_ALL", or (on Linux)
   "P_PIDFD". The interpretation of *id* depends on it; see their
   individual descriptions.

   *options* is an OR combination of flags.  At least one of
   "WEXITED", "WSTOPPED" or "WCONTINUED" is required; "WNOHANG" and
   "WNOWAIT" are additional optional flags.

   The return value is an object representing the data contained in
   the "siginfo_t" structure with the following attributes:

   * "si_pid" (process ID)

   * "si_uid" (real user ID of the child)

   * "si_signo" (always "SIGCHLD")

   * "si_status" (the exit status or signal number, depending on
     "si_code")

   * "si_code" (see "CLD_EXITED" for possible values)

   If "WNOHANG" is specified and there are no matching children in the
   requested state, "None" is returned. Otherwise, if there are no
   matching children that could be waited for, "ChildProcessError" is
   raised.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Note:

     This function is not available on macOS.

   Ajouté dans la version 3.3.

os.waitpid(pid, options, /)

   Les détails de cette fonction diffèrent sur Unix et Windows.

   Sur Unix : attend qu'un processus fils donné par son id de
   processus *pid* soit terminé, et renvoie une paire contenant son
   PID et son statut de sortie (encodé comme pour "wait()"). La
   sémantique de cet appel est affecté par la valeur de l'argument
   entier *options*, qui devrait valoir "0" pour les opérations
   normales.

   Si *pid* est plus grand que "0", "waitpid()" introduit une requête
   pour des informations sur le statut du processus spécifié. Si *pid*
   vaut "0", la requête est pour le statut de tous les fils dans le
   groupe de processus du processus actuel. Si *pid* vaut "-1", la
   requête concerne tous les processus fils du processus actuel. Si
   *pid* est inférieur à "-1", une requête est faite pour le statut de
   chaque processus du groupe de processus donné par "-pid" (la valeur
   absolue de *pid*).

   *options* is an OR combination of flags.  If it contains "WNOHANG"
   and there are no matching children in the requested state, "(0, 0)"
   is returned.  Otherwise, if there are no matching children that
   could be waited for, "ChildProcessError" is raised.  Other options
   that can be used are "WUNTRACED" and "WCONTINUED".

   Sur Windows : attend que qu'un processus donné par l'identificateur
   de processus (*process handle*) *pid* soit complété, et renvoie une
   paire contenant *pid* et son statut de sortie décalé de 8 bits vers
   la gauche (le décalage rend l'utilisation multiplateformes plus
   facile). Un *pid* inférieur ou égal à "0" n'a aucune signification
   particulière en Windows, et lève une exception. L'argument entier
   *options* n'a aucun effet. *pid* peut faire référence à tout
   processus dont l'identifiant est connu et pas nécessairement à un
   processus fils. Les fonctions "spawn*" appelées avec "P_NOWAIT"
   renvoient des identificateurs de processus appropriés.

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exit code.

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

   Modifié dans la version 3.5: Si l'appel système est interrompu et
   que le gestionnaire de signal ne lève aucune exception, la fonction
   réessaye l'appel système au lieu de lever une "InterruptedError"
   (voir la **PEP 475** à propos du raisonnement).

os.wait3(options)

   Similar to "waitpid()", except no process id argument is given and
   a 3-element tuple containing the child's process id, exit status
   indication, and resource usage information is returned.  Refer to
   "resource.getrusage()" for details on resource usage information.
   The *options* argument is the same as that provided to "waitpid()"
   and "wait4()".

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exitcode.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.wait4(pid, options)

   Similar to "waitpid()", except a 3-element tuple, containing the
   child's process id, exit status indication, and resource usage
   information is returned.  Refer to "resource.getrusage()" for
   details on resource usage information.  The arguments to "wait4()"
   are the same as those provided to "waitpid()".

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exitcode.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.P_PID
os.P_PGID
os.P_ALL
os.P_PIDFD

   These are the possible values for *idtype* in "waitid()". They
   affect how *id* is interpreted:

   * "P_PID" - wait for the child whose PID is *id*.

   * "P_PGID" - wait for any child whose progress group ID is *id*.

   * "P_ALL" - wait for any child; *id* is ignored.

   * "P_PIDFD" - wait for the child identified by the file descriptor
     *id* (a process file descriptor created with "pidfd_open()").

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Note:

     "P_PIDFD" is only available on Linux >= 5.4.

   Ajouté dans la version 3.3.

   Ajouté dans la version 3.9: The "P_PIDFD" constant.

os.WCONTINUED

   This *options* flag for "waitpid()", "wait3()", "wait4()", and
   "waitid()" causes child processes to be reported if they have been
   continued from a job control stop since they were last reported.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WEXITED

   This *options* flag for "waitid()" causes child processes that have
   terminated to be reported.

   The other "wait*" functions always report children that have
   terminated, so this option is not available for them.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.WSTOPPED

   This *options* flag for "waitid()" causes child processes that have
   been stopped by the delivery of a signal to be reported.

   This option is not available for the other "wait*" functions.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

os.WUNTRACED

   This *options* flag for "waitpid()", "wait3()", and "wait4()"
   causes child processes to also be reported if they have been
   stopped but their current state has not been reported since they
   were stopped.

   This option is not available for "waitid()".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WNOHANG

   This *options* flag causes "waitpid()", "wait3()", "wait4()", and
   "waitid()" to return right away if no child process status is
   available immediately.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WNOWAIT

   This *options* flag causes "waitid()" to leave the child in a
   waitable state, so that a later "wait*()" call can be used to
   retrieve the child status information again.

   This option is not available for the other "wait*" functions.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

   These are the possible values for "si_code" in the result returned
   by "waitid()".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

   Ajouté dans la version 3.3.

   Modifié dans la version 3.9: Added "CLD_KILLED" and "CLD_STOPPED"
   values.

os.waitstatus_to_exitcode(status)

   Convert a wait status to an exit code.

   On Unix:

   * If the process exited normally (if "WIFEXITED(status)" is true),
     return the process exit status (return "WEXITSTATUS(status)"):
     result greater than or equal to 0.

   * If the process was terminated by a signal (if
     "WIFSIGNALED(status)" is true), return "-signum" where *signum*
     is the number of the signal that caused the process to terminate
     (return "-WTERMSIG(status)"): result less than 0.

   * Otherwise, raise a "ValueError".

   On Windows, return *status* shifted right by 8 bits.

   On Unix, if the process is being traced or if "waitpid()" was
   called with "WUNTRACED" option, the caller must first check if
   "WIFSTOPPED(status)" is true. This function must not be called if
   "WIFSTOPPED(status)" is true.

   Voir aussi:

     "WIFEXITED()", "WEXITSTATUS()", "WIFSIGNALED()", "WTERMSIG()",
     "WIFSTOPPED()", "WSTOPSIG()" functions.

   Disponibilité : Unix, Windows, pas disponible pour Emscripten ni
   pour WASI.

   Ajouté dans la version 3.9.

Les fonctions suivantes prennent un code de statu tel que renvoyé par
"system()", "wait()", ou "waitpid()" en paramètre. Ils peuvent être
utilisés pour déterminer la disposition d'un processus.

os.WCOREDUMP(status, /)

   Renvoie "True" si un vidage système (*core dump*) a été généré pour
   le processus, sinon, renvoie "False".

   This function should be employed only if "WIFSIGNALED()" is true.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WIFCONTINUED(status)

   Return "True" if a stopped child has been resumed by delivery of
   "SIGCONT" (if the process has been continued from a job control
   stop), otherwise return "False".

   See "WCONTINUED" option.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WIFSTOPPED(status)

   Return "True" if the process was stopped by delivery of a signal,
   otherwise return "False".

   "WIFSTOPPED()" only returns "True" if the "waitpid()" call was done
   using "WUNTRACED" option or when the process is being traced (see
   *ptrace(2)*).

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WIFSIGNALED(status)

   Return "True" if the process was terminated by a signal, otherwise
   return "False".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WIFEXITED(status)

   Return "True" if the process exited terminated normally, that is,
   by calling "exit()" or "_exit()", or by returning from "main()";
   otherwise return "False".

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WEXITSTATUS(status)

   Return the process exit status.

   This function should be employed only if "WIFEXITED()" is true.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WSTOPSIG(status)

   Renvoie le signal qui a causé l'arrêt du processus.

   This function should be employed only if "WIFSTOPPED()" is true.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.

os.WTERMSIG(status)

   Return the number of the signal that caused the process to
   terminate.

   This function should be employed only if "WIFSIGNALED()" is true.

   Disponibilité : Unix, pas disponible pour Emscripten ni pour WASI.


Interface pour l'ordonnanceur
=============================

Ces fonctions contrôlent un processus se voit allouer du temps de
processus par le système d'exploitation. Elles ne sont disponibles que
sur certaines plate-formes Unix. Pour des informations plus
détaillées, consultez les pages de manuels Unix.

Ajouté dans la version 3.3.

Les polices d'ordonnancement suivantes sont exposées si elles sont
gérées par le système d'exploitation.

os.SCHED_OTHER

   La police d'ordonnancement par défaut.

os.SCHED_BATCH

   Police d'ordonnancement pour les processus intensifs en utilisation
   du processeur. Cette police essaye de préserver l'interactivité
   pour le reste de l'ordinateur.

os.SCHED_IDLE

   Police d'ordonnancement pour les tâches de fond avec une priorité
   extrêmement faible.

os.SCHED_SPORADIC

   Police d'ordonnancement pour des programmes serveurs sporadiques.

os.SCHED_FIFO

   Une police d'ordonnancement *FIFO* (dernier arrivé, premier servi).

os.SCHED_RR

   Une police d'ordonnancement *round-robin* (tourniquet).

os.SCHED_RESET_ON_FORK

   Cette option peut combiner différentes politiques d'ordonnancement
   avec un OU bit-à-bit. Quand un processus avec cette option se
   dédouble, la politique d'ordonnancement et la priorité du processus
   fils sont remises aux valeurs par défaut.

class os.sched_param(sched_priority)

   Cette classe représente des paramètres d'ordonnancement réglables
   utilisés pour "sched_setparam()", "sched_setscheduler()", et
   "sched_getparam()". Un objet de ce type est immuable.

   Pour le moment, il n'y a qu'un seul paramètre possible :

   sched_priority

      La priorité d'ordonnancement pour une police d'ordonnancement.

os.sched_get_priority_min(policy)

   Récupère la valeur minimum pour une priorité pour la police
   *policy*. *policy* est une des constantes de police définies ci-
   dessus.

os.sched_get_priority_max(policy)

   Récupère la valeur maximum pour une priorité pour la police
   *policy*. *policy* est une des constantes de police définies ci-
   dessus.

os.sched_setscheduler(pid, policy, param, /)

   Définit la police d'ordonnancement pour le processus de PID *pid*.
   Un *pid* de "0" signifie le processus appelant. *policy* est une
   des constantes de police définies ci-dessus. *param* est une
   instance de la classe "sched_param".

os.sched_getscheduler(pid, /)

   Renvoie la police d'ordonnancement pour le processus de PID *pid*.
   Un *pid* de 0 signifie le processus appelant. Le résultat est une
   des constantes de police définies ci-dessus.

os.sched_setparam(pid, param, /)

   Set the scheduling parameters for the process with PID *pid*. A
   *pid* of 0 means the calling process. *param* is a "sched_param"
   instance.

os.sched_getparam(pid, /)

   Renvoie les paramètres d'ordonnancement dans une de "sched_param"
   pour le processus de PID *pid*. Un *pid* de "0" signifie le
   processus appelant.

os.sched_rr_get_interval(pid, /)

   Renvoie le quantum de temps du *round-robin* (en secondes) pour le
   processus de PID *pid*. Un *pid* de "0" signifie le processus
   appelant.

os.sched_yield()

   Abandonne volontairement le processeur.

os.sched_setaffinity(pid, mask, /)

   Restreint le processus de PID *pid*  (ou le processus actuel si
   *pid* vaut "0") à un ensemble de CPUs. *mask* est un itérable
   d'entiers représentant l'ensemble de CPUs auquel le processus doit
   être restreint.

os.sched_getaffinity(pid, /)

   Return the set of CPUs the process with PID *pid* is restricted to.

   If *pid* is zero, return the set of CPUs the calling thread of the
   current process is restricted to.


Diverses informations sur le système
====================================

os.confstr(name, /)

   Renvoie les valeurs de configuration en chaînes de caractères.
   *name* spécifie la valeur de configuration à récupérer. Ce peut
   être une chaîne de caractères représentant le nom d'une valeur
   système définie dans un nombre de standards (POSIX, Unix 95, Unix
   98, et d'autres). Certaines plate-formes définissent des noms
   supplémentaires également. Les noms connus par le système
   d'exploitation hôte sont données dans les clefs du dictionnaire
   "confstr_names". Pour les variables de configuration qui ne sont
   pas incluses dans ce *mapping*, passer un entier pour *name* est
   également accepté.

   Si la valeur de configuration spécifiée par *name* n'est pas
   définie, "None" est renvoyé.

   Si *name* est une chaîne de caractères et n'est pas connue, une
   "ValueError" est levée. Si une valeur spécifique pour *name* n'est
   pas gérée par le système hôte, même si elle est incluse dans
   "confstr_names", une "OSError" est levée avec "errno.EINVAL" pour
   numéro d'erreur.

   Disponibilité : Unix.

os.confstr_names

   Dictionnaire liant les noms acceptés par "confstr()" aux valeurs
   entières définies pour ces noms par le système d'exploitation hôte.
   Cela peut être utilisé pour déterminer l'ensemble des noms connus
   du système.

   Disponibilité : Unix.

os.cpu_count()

   Return the number of logical CPUs in the system. Returns "None" if
   undetermined.

   This number is not equivalent to the number of logical CPUs the
   current process can use. "len(os.sched_getaffinity(0))" gets the
   number of logical CPUs the calling thread of the current process is
   restricted to

   Ajouté dans la version 3.4.

os.getloadavg()

   Renvoie le nombre de processus dans la file d'exécution du système
   en moyenne dans les dernières 1, 5, et 15 minutes, ou lève une
   "OSError" si la charge moyenne est impossible à récupérer.

   Disponibilité : Unix.

os.sysconf(name, /)

   Renvoie les valeurs de configuration en nombres entiers. Si la
   valeur de configuration définie par *name* n'est pas spécifiée,
   "-1" est renvoyé. Les commentaires concernant le paramètre *name*
   de "confstr()" s'appliquent également ici, le dictionnaire qui
   fournit les informations sur les noms connus est donné par
   "sysconf_names".

   Disponibilité : Unix.

os.sysconf_names

   Dictionnaire liant les noms acceptés par "sysconf()" aux valeurs
   entières définies pour ces noms par le système d'exploitation hôte.
   Cela peut être utilisé pour déterminer l'ensemble des noms connus
   du système.

   Disponibilité : Unix.

   Modifié dans la version 3.11: Add "'SC_MINSIGSTKSZ'" name.

Les valeurs suivantes sont utilisées pour gérer les opérations de
manipulations de chemins. Elles sont définies pour toutes les plate-
formes.

Des opérations de plus haut niveau sur les chemins sont définies dans
le module "os.path".

os.curdir

   La chaîne de caractère constante utilisée par le système
   d'exploitation pour référencer le répertoire actuel. Ça vaut "'.'"
   pour Windows et POSIX. Également disponible par "os.path".

os.pardir

   La chaîne de caractère constante utilisée par le système
   d'exploitation pour référencer le répertoire parent. Ça vaut "'..'"
   pour Windows et POSIX. Également disponible par "os.path".

os.sep

   Le caractère utilisé par le système d'exploitation pour séparer les
   composantes des chemins. C'est "'/'" pour POSIX, et "'\\'" pour
   Windows. Notez que ce n'est pas suffisant pour pouvoir analyser ou
   concaténer correctement des chemins (utilisez alors
   "os.path.split()" et "os.path.join()"), mais ça peut s'avérer utile
   occasionnellement.  Également disponible par "os.path".

os.altsep

   Un caractère alternatif utilisé par le système d'exploitation pour
   séparer les composantes des chemins, ou "None" si un seul
   séparateur existe. Ça vaut "'/'" sur Windows où "sep" est un
   antislash "'\'". Également disponible par "os.path".

os.extsep

   Le caractère qui sépare la base du nom d'un fichier et son
   extension. Par exemple, le "'.'" de "os.py". Également disponible
   par "os.path".

os.pathsep

   Le caractère conventionnellement utilisé par le système
   d'exploitation pour séparer la recherche des composantes de chemin
   (comme dans la variable d'environnement "PATH"). Cela vaut "':'"
   pour POSIX, ou "';'" pour Windows. Également disponible par
   "os.path".

os.defpath

   Le chemin de recherche par défaut utilisé par "exec*" et "spawn*"
   si l'environnement n'a pas une clef "'PATH'". Également disponible
   par "os.path".

os.linesep

   La chaîne de caractères utilisée pour séparer (ou plutôt pour
   terminer) les lignes sur la plate-forme actuelle. Ce peut être un
   caractère unique (comme "'\n'" pour POSIX,) ou plusieurs caractères
   (comme "'\r\n'" pour Windows). N'utilisez pas *os.linesep* comme
   terminateur de ligne quand vous écrivez dans un fichier ouvert en
   mode *texte* (par défaut). Utilisez un unique "'\n'" à la place,
   sur toutes les plate-formes.

os.devnull

   Le chemin de fichier du périphérique *null*. Par exemple :
   "'/dev/null'" pour POSIX, "'nul'" pour Windows. Également
   disponible par "os.path".

os.RTLD_LAZY
os.RTLD_NOW
os.RTLD_GLOBAL
os.RTLD_LOCAL
os.RTLD_NODELETE
os.RTLD_NOLOAD
os.RTLD_DEEPBIND

   Marqueurs à utiliser avec les fonctions "setdlopenflags()" et
   "getdlopenflags()". Voir les pages de manuel Unix *dlopen(3)* pour
   les différences de significations entre les marqueurs.

   Ajouté dans la version 3.3.


Nombres aléatoires
==================

os.getrandom(size, flags=0)

   Obtient *size* octets aléatoires. La fonction renvoie
   éventuellement moins d'octets que demandé.

   Ces octets peuvent être utilisés pour initialiser un générateur de
   nombres aléatoires dans l'espace utilisateur ou pour des raisons
   cryptographiques.

   "getrandom()" se base sur l'entropie rassemblée depuis les pilotes
   des périphériques et autres sources de bruits de l'environnement.
   La lecture de grosses quantités de données aura un impact négatif
   sur les autres utilisateurs des périphériques "/dev/random" et
   "/dev/urandom".

   The flags argument is a bit mask that can contain zero or more of
   the following values ORed together: "os.GRND_RANDOM" and
   "GRND_NONBLOCK".

   See also the Linux getrandom() manual page.

   Disponibilité : Linux 3.17+

   Ajouté dans la version 3.6.

os.urandom(size, /)

   Return a bytestring of *size* random bytes suitable for
   cryptographic use.

   Cette fonction renvoie des octets aléatoires depuis un source
   spécifique à l'OS.  Les données renvoyées sont censées être
   suffisamment imprévisibles pour les applications cryptographiques,
   bien que la qualité dépende de l'implémentation du système.

   Sous Linux, si l'appel système "getrandom()" est disponible, il est
   utilisé en mode bloquant : il bloque jusqu'à ce que la réserve
   d'entropie d'*urandom* soit initialisée (128 bits d'entropie sont
   collectés par le noyau). Voir la **PEP 524** pour plus
   d'explications. Sous Linux, la fonction "getrandom()" peut être
   utilisée pour obtenir des octets aléatoires en mode non-bloquant
   (avec l'option "GRND_NONBLOCK") ou attendre jusqu'à ce que la
   réserve d'entropie d'*urandom* soit initialisée.

   Sur un système de type UNIX, les octets aléatoires sont lus depuis
   le périphérique "/dev/urandom". Si le périphérique "/dev/urandom"
   n'est pas disponible ou n'est pas lisible, l'exception
   "NotImplementedError" est levée.

   On Windows, it will use "BCryptGenRandom()".

   Voir aussi:

     Le module "secrets" fournit des fonctions de plus haut niveau.
     Pour une interface facile à utiliser du générateur de nombres
     aléatoires fourni par votre plate-forme, veuillez regarder
     "random.SystemRandom".

   Modifié dans la version 3.5: Sur Linux 3.17 et plus récent, l'appel
   système "getrandom()" est maintenant utilisé quand il est
   disponible. Sur OpenBSD 5.6 et plus récent, la fonction C
   "getentropy()" est utilisée. Ces fonctions évitent l'utilisation
   interne d'un descripteur de fichier.

   Modifié dans la version 3.5.2: Sous Linux, si l'appel système
   "getrandom()" bloque (la réserve d'entropie d'*urandom* n'est pas
   encore initialisée), réalise à la place une lecture de
   "/dev/urandom".

   Modifié dans la version 3.6: Sous Linux, "getrandom()" est
   maintenant utilisé en mode bloquant pour renforcer la sécurité.

   Modifié dans la version 3.11: On Windows, "BCryptGenRandom()" is
   used instead of "CryptGenRandom()" which is deprecated.

os.GRND_NONBLOCK

   Par défaut, quand elle lit depuis "/dev/random", "getrandom()"
   bloque si aucun octet aléatoire n'est disponible, et quand elle lit
   depuis "/dev/urandom", elle bloque si la réserve d'entropie n'a pas
   encore été initialisée.

   Si l'option "GRND_NONBLOCK" est activée, "getrandom()" ne bloque
   pas dans ces cas, mais lève immédiatement une "BlockingIOError".

   Ajouté dans la version 3.6.

os.GRND_RANDOM

   Si ce bit est activé, les octets aléatoires sont puisés depuis
   "/dev/random" plutôt que "/dev/urandom".

   Ajouté dans la version 3.6.
