"os" — Diverses interfaces pour le système d'exploitation
*********************************************************

**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.

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" a une granularité plus fine. "os.uname()" donne
     des informations relatives à la version du système.

     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()").

L'*encodage du système de fichiers et gestionnaire d'erreurs associé*
sont configurés au démarrage de Python par la fonction
"PyConfig_Read()" : regardez "filesystem_encoding" et
"filesystem_errors" dans les membres de "PyConfig".

Modifié dans la version 3.1: Sur certains systèmes, les conversions
utilisant l'encodage du système de fichiers peut échouer. Dans ce cas,
Python utilise le le gestionnaire d'erreurs d'encodage
*surrogateescape*, ce qui veut dire que les octets indécodables sont
remplacés par un code de substitution lors du décodage, qui est
reconverti vers l'octet original lors de l'encodage.

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".

Voir aussi *encodage régional*.


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

Nouveau dans la version 3.7: Voir la **PEP 540** pour plus
d'informations.

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" et "sys.stderr" utilisent tous l'UTF-8
  pour l'encodage du texte, avec le gestionnaire d'erreurs
  "surrogateescape" activé pour "sys.stdin" et "sys.stdout"
  ("sys.stderr" continue d'utiliser "backslashreplace" comme pour le
  mode par défaut où il prend en compte la configuration régionale).

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

Notez que la configuration des flux standards en mode UTF-8 peut être
surchargée par "PYTHONIOENCODING" (de la même manière qu'elles peuvent
l'être dans le mode par défaut qui est configuré pour la région
locale).

En raison des changements apportés à ces API de bas-niveau, les API de
haut-niveau ont un comportement par défaut différent :

* Les arguments en ligne de commande, les variables d'environnement et
  les noms de fichiers sont décodés en texte en utilisant l'UTF-8.

* "os.fsdecode()" et "os.fsencode()" utilisent l'encodage UTF-8.

* "open()", "io.open()" et "codecs.open()" utilisent l'encodage UTF-8
  par défaut. Cependant, elles utilisent le gestionnaire d'erreurs
  "strict" par défaut, de manière à ce qu'ouvrir un fichier binaire en
  mode texte lève une exception plutôt que de produire de la donnée
  sans aucun sens.

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*.


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.

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" n'est disponible que si "supports_bytes_environ" vaut
   "True".

   Nouveau 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.

   Nouveau 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.

   Nouveau 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.

   Nouveau dans la version 3.6.

class os.PathLike

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

   Nouveau 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é : la plupart des dérivés d'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()" n'est disponible que si "supports_bytes_environ" vaut
   "True".

   Disponibilité : la plupart des dérivés Unix.

   Nouveau 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é.

   Nouveau 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.

os.geteuid()

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

   Disponibilité : Unix.

os.getgid()

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

   Disponibilité : Unix.

os.getgrouplist(user, group)

   Renvoie la liste d'identifiants de groupes auxquels *user*
   appartient. Si *group* n'est pas dans la liste, il y est inclus.
   Typiquement, *group* vaut le *group ID* de l'enregistrement
   *passwd* de *user*.

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

os.getgroups()

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

   Disponibilité : Unix.

   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.

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.

os.getpgrp()

   Renvoie l'identifiant du groupe de processus actuel.

   Disponibilité : Unix.

os.getpid()

   Renvoie l'identifiant du processus actuel.

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.

   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.

   Nouveau dans la version 3.3.

os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER

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

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

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.

   Nouveau 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.

   Nouveau dans la version 3.2.

os.getuid()

   Renvoie l'identifiant réel du processus actuel.

   Disponibilité : Unix.

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.

   Nouveau 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:

     Sur certaines plate-formes, dont FreeBSD et Mac OS X, procéder à
     des assignations sur "environ" peut causer des fuites de mémoire.
     Referez-vous à la documentation système de "putenv()".

   Lève un événement d'audit "os.putenv" avec les 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.

os.seteuid(euid)

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

   Disponibilité : Unix.

os.setgid(gid)

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

   Disponibilité : Unix.

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.

   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.setpgrp()

   Produit l'appel système "setpgrp()" ou "setpgrp(0, 0)" selon la
   version implémentée (s'il y en a une). Voir le manuel Unix pour la
   sémantique de l'opération.

   Disponibilité : Unix.

os.setpgid(pid, pgrp)

   Produit l'appel système "setpgid()" pour placer l'identifiant du
   groupe de processus contenant le processus d'identifiant *pid* dans
   le groupe de processus d'identifiant *pgrp*. Voir le manuel Unix
   pour la sémantique.

   Disponibilité : Unix.

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.

   Nouveau dans la version 3.3.

os.setregid(rgid, egid)

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

   Disponibilité : Unix.

os.setresgid(rgid, egid, sgid)

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

   Disponibilité : Unix.

   Nouveau 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.

   Nouveau dans la version 3.2.

os.setreuid(ruid, euid)

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

   Disponibilité : Unix.

os.getsid(pid)

   Produit l'appel système "getsid()". Voir le manuel Unix pour la
   sémantique.

   Disponibilité : Unix.

os.setsid()

   Produit l'appel système "setsid()". Voir le manuel Unix pour la
   sémantique.

   Disponibilité : Unix.

os.setuid(uid)

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

   Disponibilité : Unix.

os.strerror(code)

   Renvoie le message d'erreur correspondant au code d'erreur *code*.
   Sur les plate-formes où "strerror()" renvoie "NULL" quand un numéro
   d'erreur inconnu est donné, une "ValueError" est levée.

os.supports_bytes_environ

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

   Nouveau dans la version 3.2.

os.umask(mask)

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

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é : dérivés récents de 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".

   Lève un événement d'audit "os.unsetenv" avec l’argument "key".

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


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)

   Copie *count* octets depuis le descripteur de fichier *src*, à
   partir de la position *offset_src*, dans le descripteur de fichier
   *dst*, à la position *offset_dst*. Si *offset_src* est "None",
   alors *src* est lu depuis la position actuelle ; respectivement
   pour *offset_dst*. Les fichiers pointés par *src* et *dst* doivent
   se trouver sur le même système de fichiers, sinon une "OSError" est
   levée avec "errno" défini à "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.

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

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

   Nouveau 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.

   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".

   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)".

   Lève un événement d'audit "os.chmod" avec les arguments "path",
   "mode", "dir_fd".

   Disponibilité : Unix.

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)".

   Lève un événement d'audit "os.chown" avec les arguments "path",
   "uid", "gid", "dir_fd".

   Disponibilité : Unix.

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 l'écriture du fichier ayant le descripteur *fd* sur le
   disque. Sur Unix, cet appel appel la fonction native "fsync()", sur
   Windows, la fonction MS "_commit()".

   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)".

   Lève un événement d'audit "os.truncate" avec les 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.

   Nouveau dans la version 3.5.

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.

   Lève un événement d'audit "os.lockf" avec les arguments "fd",
   "cmd", "len".

   Disponibilité : Unix.

   Nouveau 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.

   Nouveau dans la version 3.3.

os.lseek(fd, pos, how)

   Place la position actuelle du descripteur de fichier *fd* à la
   position *pos*, modifié par *how* : "SEEK_SET" ou "0" pour placer
   la position à partir du début du fichier, "SEEK_CUR" ou "1" pour la
   placer à partir de la position actuelle, et "SEEK_END" ou "2" pour
   la placer par rapport à la fin du fichier. Renvoie la nouvelle
   position du curseur en bytes, à partir du début.

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

   Paramètres de la fonction "lseek()". Leur valeur est respectivement
   0, 1, et 2.

   Nouveau dans la version 3.3: Certains systèmes d'exploitation
   pourraient gérer des valeurs additionnelles telles que
   "os.SEEK_HOLE" ou "os.SEEK_DATA".

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*.

   Lève un événement d'audit "open" avec les 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()".

   Nouveau dans la version 3.3: L'argument *dir_fd*.

   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é : certains dérivés Unix.

   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é : certains dérivés Unix.

   Nouveau 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.

   Nouveau 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.

   Nouveau 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.

   Nouveau 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.

   Nouveau 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* muables *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()".

   Availability: Linux 2.6.30 and newer, FreeBSD 6.0 and newer,
   OpenBSD 2.7 and newer, AIX 7.1 and newer. Using flags requires
   Linux 4.6 or newer.

   Nouveau 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.

   Si certaines données ont été lues avec succès, le nombre d'octets
   lus est renvoyé. Si aucun octet n'a été lu, renvoie "-1" et affecte
   à *errno* la valeur "errno.EAGAIN".

   Disponibilité : Linux 4.14 et ultérieures.

   Nouveau 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 et ultérieures.

   Nouveau 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.

   Nouveau dans la version 3.3.

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

   Écrit le contenu de *buffers* vers le descripteur de fichier *fd* à
   la position *offset*, en laissant la position du fichier inchangée.
   *buffers* doit être une séquence de *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.

   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()".

   Availability: Linux 2.6.30 and newer, FreeBSD 6.0 and newer,
   OpenBSD 2.7 and newer, AIX 7.1 and newer. Using flags requires
   Linux 4.7 or newer.

   Nouveau 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 et ultérieures.

   Nouveau 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 et ultérieures.

   Nouveau 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.

   Availability: Linux 4.16 and newer.

   Nouveau 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.

   Note:

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

   Nouveau 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.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.

   Nouveau dans la version 3.5.

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

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

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

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 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.

   Availability: Linux kernel >= 2.6.17 and glibc >= 2.5

   Nouveau dans la version 3.10.

os.SPLICE_F_MOVE
os.SPLICE_F_NONBLOCK
os.SPLICE_F_MORE

   Nouveau dans la version 3.10.

os.readv(fd, buffers)

   Lit depuis un descripteur de fichier *fd* dans une séquence
   d'*objets bytes-compatibles* muables : *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.

   Nouveau 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.

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.

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.

   Nouveau dans la version 3.3.


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

Nouveau 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
------------------------------------

Nouveau 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".

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".

   Lève un événement d'audit "os.chdir" avec l'argument "path".

   Nouveau 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.

   Lève un événement d'audit "os.chflags" avec les arguments "path",
   "flags".

   Disponibilité : Unix.

   Nouveau dans la version 3.3: L'argument *follow_symlinks*.

   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.

   Lève un événement d'audit "os.chmod" avec les arguments "path",
   "mode", "dir_fd".

   Nouveau 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.

   Lève un événement d'audit "os.chown" avec les arguments "path",
   "uid", "gid", "dir_fd".

   Disponibilité : Unix.

   Nouveau 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.

   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)".

   Lève un événement d'audit "os.chdir" avec l'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)".

   Lève un événement d'audit "os.chflags" avec les arguments "path",
   "flags".

   Disponibilité : Unix.

   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)".

   Lève un événement d'audit "os.chmod" avec les arguments "path",
   "mode", "dir_fd".

   Disponibilité : Unix.

   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)".

   Lève un événement d'audit "os.chown" avec les 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.

   Lève un événement d'audit "os.link" avec les arguments "src",
   "dst", "src_dir_ds", "dst_dir_fd".

   Disponibilité : Unix, Windows.

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

   Nouveau dans la version 3.3: Arguments *src_dir_fd*, *dst_dir_fd*,
   et *follow_symlinks* ajoutés.

   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.

   Lève un événement d'audit "os.listdir" avec l'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.

   Nouveau 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.lstat(path, *, dir_fd=None)

   Effectue l'équivalent d'un appel système "lstat()" sur le chemin
   donné. Similaire à "stat()" mais ne suit pas les liens symboliques.
   Renvoie un objet de type "stat_result".

   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".

   Lève un événement d'audit "os.mkdir" avec les arguments "path",
   "mode", "dir_fd".

   Nouveau dans la version 3.3: L'argument *dir_fd*.

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

   Modifié dans la version 3.10.15: 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.

   Si *exist_ok* vaut "False" (valeur par défaut), une
   "FileExistsError" est levée si le répertoire cible existe déjà.

   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.

   Lève un événement d'audit "os.mkdir" avec les arguments "path",
   "mode", "dir_fd".

   Nouveau dans la version 3.2: Le paramètre *exist_ok*.

   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.

   Nouveau dans la version 3.3: L'argument *dir_fd*.

   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.

   Nouveau dans la version 3.3: L'argument *dir_fd*.

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

os.major(device)

   Extrait le nombre majeur de périphérique d'un nombre de
   périphérique brut (habituellement le champ "st_dev" ou "st_rdev" de
   "stat").

os.minor(device)

   Extrait le nombre mineur de périphérique d'un nombre de
   périphérique brut (habituellement le champ "st_dev" ou "st_rdev" de
   "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).

   Nouveau dans la version 3.3: L'argument *dir_fd*.

   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.

   Modifié dans la version 3.8: 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()".

   Lève un événement d'audit "os.remove" avec les arguments "path",
   "dir_fd".

   Nouveau dans la version 3.3: L'argument *dir_fd*.

   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.

   Lève un événement d'audit "os.remove" avec les 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()".

   Lève un événement d'audit "os.rename" avec les arguments "src",
   "dst", "src_dir_ds", "dst_dir_fd".

   Nouveau dans la version 3.3: Les arguments *src_dir_fd* et
   *dst_dir_fd*.

   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.

   Lève un événement d'audit "os.rename" avec les arguments "src",
   "dst", "src_dir_ds", "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.

   Lève un événement d'audit "os.rename" avec les arguments "src",
   "dst", "src_dir_ds", "dst_dir_fd".

   Nouveau 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)

   Supprime (efface) le répertoire *path*. Si le répertoire n'existe
   pas ou n'est pas vide, une "FileNotFoundError" ou une "OSError" est
   levée, selon le cas. Pour supprimer des arborescences de
   répertoires entières, utilisez "shutil.rmtree()".

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

   Lève un événement d'audit "os.rmdir" avec les arguments "path",
   "dir_fd".

   Nouveau dans la version 3.3: Le paramètre *dir_fd*.

   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.

   Lève un événement d'audit "os.scandir" avec l'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".

      Nouveau 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.

   Nouveau dans la version 3.5.

   Nouveau 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.

   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.

   Notez qu'il y a une correspondance entre différents attributs et
   méthodes de "os.DirEntry" et "pathlib.Path".  En particulier,
   l'attribut "name" a la même signification, ainsi que les méthodes
   "is_dir()", "is_file()", "is_symlink()" et "stat()".

   Nouveau 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.

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()".

   Nouveau dans la version 3.3: Les arguments *dir_fd* et
   *follow_symlinks* ont été ajoutés, spécification d'un descripteur
   de fichier à la place d'un chemin ajoutée également.

   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

   Objet dont les attributs correspondent globalement aux membres de
   la structure "stat()". Utilisé pour le résultat des fonctions
   "os.stat()", "os.fstat()", et "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

      Dépendant de la plate-forme :

      * le moment du changement de méta-données le plus récent sur
        Unix,

      * le moment de création sur Windows, exprimé en secondes.

   st_atime_ns

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

   st_mtime_ns

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

   st_ctime_ns

      Dépendant de la plate-forme :

      * le moment du changement de méta-données le plus récent sur
        Unix,

      * le moment de création sur Windows, exprimé en nanosecondes,
        par un entier.

   Note:

     La signification et la précision exacte des attributs "st_atime",
     "st_mtime", et "st_ctime" dépendent du système d'exploitation et
     du système de fichier. Par exemple sur les systèmes Windows qui
     utilisent un système de fichier FAT ou FAT32, "st_mtime" a une
     précision de 2 secondes, et "st_atime" a une précision de 1 jour.
     Regardez la documentation de votre système d'exploitation pour
     plus de détails.De manière similaire, bien que "st_atime_ns",
     "st_mtime_ns", et "st_ctime_ns" soient toujours exprimés en
     nanosecondes, beaucoup de systèmes ne fournissent pas une
     précision à la nanoseconde près.Sur les systèmes qui fournissent
     une telle précision, l'objet à virgule flottante utilisé pour
     stocker "st_atime", "st_mtime", et "st_ctime" ne peut pas le
     contenir en entier, et donc sera légèrement inexact. Si vous avez
     besoin d'horodatages exacts, vous devriez toujours utiliser
     "st_atime_ns", "st_mtime_ns", et "st_ctime_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.

   st_birthtime

      Moment de la création du 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

      Attributs de fichiers Windows : membre "dwFileAttributes" de la
      structure "BY_HANDLE_FILE_INFORMATION" renvoyée par
      "GetileInformationByHandle()". Soir les constantes
      "FILE_ATTRIBUTE_*" du module "stat".

   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.

   Le module standard "stat" définit des fonctions et des constantes
   qui sont utiles pour l'extraction d'informations d'une structure
   "stat". (Sur Windows, certains éléments sont remplis avec des
   valeurs factices.)

   Pour des raisons de rétro-compatibilité, une instance du
   "stat_result" est également accessible comme un *n*-uplet d'au
   moins 10 valeurs entières donnant les membres les plus importants
   (et portables) de la structure "stat", dans l'ordre : "st_mode",
   "st_ino", "st_dev", "st_nlink", "st_uid", "st_gid", "st_size",
   "st_atime", "st_mtime", "st_ctime". Plus d'éléments peuvent être
   ajoutés à la fin par certaines implémentations. Pour une
   compatibilité avec les anciennes versions de Python, accéder à un
   élément de type "stat_result" comme un *n*-uplet donne toujours des
   entiers.

   Nouveau dans la version 3.3: Les attributs "st_atime_ns",
   "st_mtime_ns", et "st_ctime_ns" ont été ajoutés.

   Nouveau dans la version 3.5: L'attribut "st_file_attributes" a été
   ajouté sur Windows.

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

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

   Nouveau 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.

os.statvfs(path)

   Exécute un appel système "statvfs()" sur le chemin donné par
   *path*. La valeur de retour est un objet dont les attributs
   décrivent le système de fichiers pour le chemin donné, et
   correspondent aux membres de la structure "statvfs", c'est-à-dire :
   "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".

   Nouveau 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*.

   Nouveau dans la version 3.7: Ajout de "f_fsid".

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.

   Nouveau 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.

   Nouveau 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

   Nouveau 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

   Nouveau 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.

   Lève un événement d'audit "os.symlink" avec les arguments "src",
   "dst", "dir_fd".

   Disponibilité : Unix, Windows.

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

   Nouveau dans la version 3.3: Ajout de l'argument *dir_fd* et
   maintenant, permission de *target_is_directory* sur les plate-
   formes non Windows.

   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.

   Nouveau 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.

   Lève un événement d'audit "os.truncate" avec les arguments "path",
   "length".

   Disponibilité : Unix, Windows.

   Nouveau 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.

   Lève un événement d'audit "os.remove" avec les arguments "path",
   "dir_fd".

   Nouveau dans la version 3.3: Le paramètre *dir_fd*.

   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.

   Lève un événement d'audit "os.utime" avec les arguments "path",
   "times", "ns", "dir_fd".

   Nouveau 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))

   Lève un événement d'audit "os.walk" avec les 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)

   Lève un événement d'audit "os.fwalk" avec les arguments "top",
   "topdown", "onerror", "follow_symlinks", "dir_fd".

   Disponibilité : Unix.

   Nouveau 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é : Linux 3.17 ou plus récent avec glibc 2.27 ou plus
   récente.

   Nouveau 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()".

   Availability: Linux 3.17 or newer with glibc 2.27 or newer.  The
   "MFD_HUGE*" flags are only available since Linux 4.14.

   Nouveau 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 an 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)

   Availability: Linux 2.6.27 or newer with glibc 2.8 or newer.

   Nouveau 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()".

   Availability: See "eventfd()"

   Nouveau 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()".

   Availability: See "eventfd()"

   Nouveau dans la version 3.10.

os.EFD_CLOEXEC

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

   Availability: See "eventfd()"

   Nouveau dans la version 3.10.

os.EFD_NONBLOCK

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

   Availability: See "eventfd()"

   Nouveau dans la version 3.10.

os.EFD_SEMAPHORE

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

   Availability: Linux 2.6.30 or newer with glibc 2.8 or newer.

   Nouveau dans la version 3.10.


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

Nouveau 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.

   Lève un événement d'audit "os.getxattr" avec les 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.

   Lève un événement d'audit "os.listxattr" avec l'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.

   Lève un événement d'audit "os.removexattr" avec les 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.

   Lève un événement d'audit "os.setxattr" avec les 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.

   Lève un événement d'audit "os.add_dll_directory" avec l'argument
   "path".

   Disponibilité : Windows.

   Nouveau 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*".

   Les variantes « l » et « v » des fonctions "exec*" différent sur la
   manière de passer les arguments de ligne de commande. Les variantes
   « l » sont probablement les plus simples à utiliser si le nombre de
   paramètres est fixé lors de l'écriture du code. Les paramètres
   individuels deviennent alors des paramètres additionnels aux
   fonctions "exec*()". Les variantes « v » sont préférables quand le
   nombre de paramètres est variable et qu'ils sont passés dans une
   liste ou un *n*-uplet dans le paramètre *args*. Dans tous les cas,
   les arguments aux processus fils devraient commencer avec le nom de
   la commande à lancer, mais ce n'est pas obligatoire.

   Les variantes qui incluent un « p » vers la fin ("execlp()",
   "execlpe()", "execvp()", et "execvpe()") utiliseront la variable
   d'environnement "PATH" pour localiser le programme *file*. Quand
   l'environnement est remplacé (en utilisant une des variantes
   "exec*e", discutées dans le paragraphe suivant), le nouvel
   environnement est utilisé comme source de la variable
   d'environnement "PATH". Les autres variantes "execl()", "execle()",
   "execv()", et "execve()" 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 "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".

   Lève un événement d'audit "os.exec" avec les arguments "path",
   "args", "env".

   Disponibilité : Unix, Windows.

   Nouveau 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

   Code de sortie signifiant qu'aucune erreur n'est arrivée.

   Disponibilité : Unix.

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.

os.EX_DATAERR

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

   Disponibilité : Unix.

os.EX_NOINPUT

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

   Disponibilité : Unix.

os.EX_NOUSER

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

   Disponibilité : Unix.

os.EX_NOHOST

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

   Disponibilité : Unix.

os.EX_UNAVAILABLE

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

   Disponibilité : Unix.

os.EX_SOFTWARE

   Code de sortie signifiant qu'une erreur interne d'un programme a
   été détectée.

   Disponibilité : Unix.

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.

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.

os.EX_CANTCREAT

   Code de sortie signifiant qu'un fichier spécifié par l'utilisateur
   n'a pas pu être créé.

   Disponibilité : Unix.

os.EX_IOERR

   Code de sortie signifiant qu'une erreur est apparue pendant une E/S
   sur un fichier.

   Disponibilité : Unix.

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.

os.EX_PROTOCOL

   Code de sortie signifiant qu'un protocole d'échange est illégal,
   invalide, ou non-compris.

   Disponibilité : Unix.

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.

os.EX_CONFIG

   Code de sortie signifiant qu'une erreur de configuration est
   apparue.

   Disponibilité : Unix.

os.EX_NOTFOUND

   Code de sortie signifiant quelque chose comme « une entrée n'a pas
   été trouvée ».

   Disponibilité : Unix.

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.

   Lève un évènement d'audit "sys.fork" sans argument.

   Modifié dans la version 3.8: Calling "fork()" in a subinterpreter
   is no longer supported ("RuntimeError" is raised).

   Avertissement:

     Voit "ssl" pour les application qui utilisent le module SSL avec
     *fork()*.

   Disponibilité : Unix.

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.

   Lève un évènement d'audit "sys.forkpty" sans argument.

   Modifié dans la version 3.8: Calling "forkpty()" in a
   subinterpreter is no longer supported ("RuntimeError" is raised).

   Disponibilité : certains dérivés Unix.

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 : les signaux "signal.CTRL_C_EVENT" et
   "signal.CTRL_BREAK_EVENT" sont des signaux spéciaux qui ne peuvent
   être envoyés qu'aux processus consoles qui partagent une console
   commune (par exemple, certains sous-processus). Toute autre valeur
   pour *sig* amènera le processus a être tué sans condition par l'API
   TerminateProcess, et le code de retour sera mis à *sig*. La version
   Windows de "kill()" prend en plus les identificateurs de processus
   à tuer.

   Voir également "signal.pthread_kill()".

   Lève un événement d'audit "os.kill" avec les arguments "pid",
   "sig".

   Nouveau dans la version 3.2: Prise en charge de Windows.

os.killpg(pgid, sig)

   Envoie le signal *sig* au groupe de processus *pgid*.

   Lève un événement d'audit "os.killpg" avec les arguments "pgid",
   "sig".

   Disponibilité : Unix.

os.nice(increment)

   Ajoute *increment*  à la priorité du processus. Renvoie la nouvelle
   priorité.

   Disponibilité : Unix.

os.pidfd_open(pid, flags=0)

   Return a file descriptor referring to the process *pid*.  This
   descriptor can be used to perform process management without races
   and signals.  The *flags* argument is provided for future
   extensions; no flag values are currently defined.

   See the *pidfd_open(2)* man page for more details.

   Availability: Linux 5.3+

   Nouveau dans la version 3.9.

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.

os.popen(cmd, mode='r', buffering=- 1)

   Ouvre un tuyau vers ou depuis la commande *cmd*. La valeur de
   retour est un fichier objet ouvert relié au tuyau qui peut être lu
   ou écrit selon la valeur de *mode* qui est "'r'" (par défaut) ou
   "'w'". L'argument *buffering* a le même sens que l'argument
   correspondant de la fonction "open()". L'objet fichier renvoyé
   écrit (ou lit) des chaînes de caractères et non de 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.

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.

   Lève un événement d'audit "os.posix_spawn" avec les arguments
   "path", "argv", "env".

   Nouveau dans la version 3.8.

   Disponibilité : Unix.

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)").

   Lève un événement d'audit "os.posix_spawn" avec les arguments
   "path", "argv", "env".

   Nouveau dans la version 3.8.

   Availability: 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.

   Nouveau 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.

   Les variantes « l » et « v » des fonctions "spawn*" diffèrent sur
   la manière de passer les arguments de ligne de commande. Les
   variantes « l » sont probablement les plus simples à utiliser si le
   nombre de paramètres est fixé lors de l'écriture du code. Les
   paramètres individuels deviennent alors des paramètres additionnels
   aux fonctions "spawn*()". Les variantes « v » sont préférables
   quand le nombre de paramètres est variable et qu'ils sont passés
   dans une liste ou un *n*-uplet dans le paramètre *args*. Dans tous
   les cas, les arguments aux processus fils devraient commencer avec
   le nom de la commande à lancer, mais ce n'est pas obligatoire.

   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)

   Lève un événement d'audit "os.spawn" avec les arguments "mode",
   "path", "args", "env".

   Disponibilité : Unix, Windows. "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

   Valeurs possibles pour le paramètre *mode* de la famille de
   fonctions "spawn*". Si l'une de ces valeurs est donnée, les
   fonctions "spawn*()" sortiront dès que le nouveau processus est
   créé, avec le PID du processus comme valeur de retour.

   Disponibilité : Unix, Windows.

os.P_WAIT

   Valeur possible pour le paramètre *mode* de la famille de fonctions
   "spawn*". Si *mode* est défini par cette valeur, les fonctions
   "spawn*" ne se terminent pas tant que le nouveau processus n'a pas
   été complété et renvoient le code de sortie du processus si
   l'exécution est effectuée avec succès, ou "-signal" si un signal
   tue le processus.

   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.

   Quand *operation* n'est pas spécifié ou vaut "'open'", l'effet est
   le même qu'un double clic sur le fichier dans Windows Explorer, ou
   que de passer le nom du fichier en argument du programme **start**
   depuis l'invite de commande interactif : le fichier est ouvert avec
   l'application associée à l'extension (s'il y en a une).

   Quand une autre *operation* est donnée, ce doit être une «
   commande-verbe » qui spécifie ce qui devrait être fait avec le
   fichier. Les verbes habituels documentés par Microsoft sont
   "'print'" et "'edit'" (qui doivent être utilisés sur des fichiers)
   ainsi que "'explore'" et "'find'" (qui doivent être utilisés sur
   des répertoires).

   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.

   Pour réduire Pour réduire le temps système de démarrage de
   l'interpréteur, la fonction Win32 "ShellExecute()"  ne se finit pas
   tant que cette fonction na pas été appelée. Si la fonction ne peut
   être interprétée, une "NotImplementedError" est levée.

   Lève un événement d'audit "os.startfile" avec les 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.

   Lève un évènement d'audit "os.system" avec comme argument
   "command".

   Disponibilité : Unix, Windows.

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.

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exit code.

   Disponibilité : Unix.

   Voir aussi:

     "waitpid()" can be used to wait for the completion of a specific
     child process and has more options.

os.waitid(idtype, id, options)

   Wait for the completion of one or more child processes. *idtype*
   can be "P_PID", "P_PGID", "P_ALL", or "P_PIDFD" on Linux. *id*
   specifies the pid to wait on. *options* is constructed from the
   ORing of one or more of "WEXITED", "WSTOPPED" or "WCONTINUED" and
   additionally may be ORed with "WNOHANG" or "WNOWAIT". The return
   value is an object representing the data contained in the
   "siginfo_t" structure, namely: "si_pid", "si_uid", "si_signo",
   "si_status", "si_code" or "None" if "WNOHANG" is specified and
   there are no children in a waitable state.

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

os.P_PID
os.P_PGID
os.P_ALL

   Les valeurs possibles pour *idtypes* pour la fonction "waitid()".
   Elles affectent l'interprétation de *id*.

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

os.P_PIDFD

   This is a Linux-specific *idtype* that indicates that *id* is a
   file descriptor that refers to a process.

   Availability: Linux 5.4+

   Nouveau dans la version 3.9.

os.WEXITED
os.WSTOPPED
os.WNOWAIT

   Marqueurs qui peuvent être utilisés pour la fonction "waitid()" qui
   spécifient quel signal attendre du fils.

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

   Les valeurs possibles pour "si_code" dans le résultat renvoyé par
   "waitid()".

   Disponibilité : Unix.

   Nouveau dans la version 3.3.

   Modifié dans la version 3.9: Added "CLD_KILLED" and "CLD_STOPPED"
   values.

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*).

   Une "OSError" est levée avec la valeur de *errno* quand l'appel
   système renvoie "-1".

   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.

   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)

   Similaire à la fonction "waitpid()", si ce n'est que qu'aucun
   argument *id* n'est donné, et qu'un triplet contenant l'identifiant
   du processus fils, son statut de sortie, et une information sur
   l'utilisation des ressources est renvoyé. Référez-vous à
   "resource"."getrusage()" pour des détails sur les informations
   d'utilisation des ressources. L'argument *options* est le même que
   celui fourni à "waitpid()" et "wait4()".

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exitcode.

   Disponibilité : Unix.

os.wait4(pid, options)

   Similaire à "waitpid()", si ce n'est qu'un triplet contenant
   l'identifiant du processus fils, son statut de sortie, et des
   informations d'utilisation des ressources est renvoyé. Référez-vous
   à "resource"."getrusage()" pour des détails sur les informations
   d'utilisation des ressources. Les arguments de "wait4()" sont les
   mêmes que ceux fournis à "waitpid()".

   "waitstatus_to_exitcode()" can be used to convert the exit status
   into an exitcode.

   Disponibilité : Unix.

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.

   Nouveau dans la version 3.9.

os.WNOHANG

   L'option de "waitpid()" pour terminer immédiatement si aucun statut
   de processus fils n'est disponible dans l'immédiat. La fonction
   renvoie "(0, 0)" dans ce cas.

   Disponibilité : Unix.

os.WCONTINUED

   Cette option cause les processus fils à être reportés s'ils ont été
   continués après un arrêt du *job control* depuis leurs derniers
   reports de statuts.

   Disponibilité : certains systèmes Unix.

os.WUNTRACED

   Cette option cause les processus fils à être reportés s'ils ont été
   stoppés mais que leur état actuel n'a pas été reporté depuis qu'ils
   ont été stoppés.

   Disponibilité : Unix.

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.

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.

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.

os.WIFSIGNALED(status)

   Return "True" if the process was terminated by a signal, otherwise
   return "False".

   Disponibilité : Unix.

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.

os.WEXITSTATUS(status)

   Return the process exit status.

   This function should be employed only if "WIFEXITED()" is true.

   Disponibilité : Unix.

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.

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.


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.

Nouveau 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)

   Renvoie l'ensemble de CPUs auquel le processus de PID *pid* (ou le
   processus actuel si *pid* vaut "0") est restreint.


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()

   Renvoie le nombre de CPUs dans le système. Renvoie "None" si
   indéterminé.

   Ce nombre n'est pas équivalent au nombre de CPUs que le processus
   courant peut utiliser.  Le nombre de CPUs utilisables peut être
   obtenu avec "len(os.sched_getaffinity(0))"

   Nouveau 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.

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.

   Nouveau 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".

   L'argument *flags* est un champ de bits qui peut contenir zéro ou
   plus des valeurs suivantes combinées avec un OU bit-à-bit :
   "os.GRND_RANDOM" et "GRND_NONBLOCK".

   See also the Linux getrandom() manual page.

   Disponibilité : Linux 3.17 et ultérieures.

   Nouveau 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.

   Sous Windows, "CryptGenRandom()" est utilisée.

   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.6.0: Sous Linux, "getrandom()" est
   maintenant utilisé en mode bloquant pour renforcer la sécurité.

   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.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.

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".

   Nouveau 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".

   Nouveau dans la version 3.6.
