15.1. os — Diverses interfaces pour le système d’exploitation

Ce module fournit une manière portable d’utiliser les fonctionnalités dépendantes du système d’exploitation. Si vous voulez uniquement lire ou écrire dans un fichier, voir open(), si vous voulez manipuler des chemins, voir le module os.path, et si vous voulez lire toutes les lignes de tous les fichiers listés par l’invite de commande, voir le module fileinput. Pour créer des fichiers temporaires, voir le module tempfile, et pour une manipulation haut niveau des fichiers et dossiers, 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é.

  • Une note « Disponibilité : Unix  » signifie que cette fonction est communément implémentée dans les systèmes Unix. Une telle note ne prétend pas l’existence de la fonction sur un système d’exploitation particulier.

  • Si ce n’est pas mentionné séparément, toutes les fonctions se réclamant « Disponibilité : Unix » sont gérées sur Mac OS X, qui est basé sur Unix.

Note

Toutes les fonctions de ce module lèvent une OSError 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

The name of the operating system dependent module imported. The following names have currently been registered: 'posix', 'nt', 'os2', 'ce', 'java', 'riscos'.

Voir aussi

sys.platform a une granularité plus fine. os.uname() donne des informations de version dépendantes de système.

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

15.1.1. Paramètres de processus

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

os.environ

Un objet mapping représentant la variable d’environnement. Par exemple environ['HOME'] est le chemin vers votre répertoire personnel (sur certaines plate-formes), et est équivalent à getenv("HOME") en C.

Ce mapping est capturé la première fois que le module os est importé, typiquement pendant le démarrage de Python, lors de l’exécution de site.py. Les changements de l’environnement opérés après cette capture ne sont pas répercutés dans os.environ, à part les modifications directes de os.environ.

Si la plate-forme prend en charge la fonction putenv(), ce mapping peut être utilisé pour modifier l’environnement autant que pour l’interroger. putenv() sera appelée automatiquement quand le mapping sera modifié.

Note

Appeler putenv() ne change pas directement os.environ, donc il est préférable de modifier os.environ.

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

Si putenv() n’est pas fourni, une copie modifiée de ce dictionnaire peut être passé aux fonctions appropriées de création de processus pour forcer l’utilisation d’un environnement modifié pour le processus fils.

Si la plate-forme prend en charge la fonction unsetenv(), vous pouvez supprimer des éléments de ce dictionnaire pour supprimer des variables d’environnement. La fonction unsetenv() sera appelée automatiquement quand un élément est supprimé de os.environ, ou quand l’une des méthodes pop() ou clear() est appelée.

Modifié dans la version 2.6: Also unset environment variables when calling os.environ.clear() and os.environ.pop().

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

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

os.ctermid()

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

Disponibilité : Unix.

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

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

Disponibilité : Unix.

Note

Sur Mac OS X, le comportement de getgroups() diffère légèrement des autres plate-formes Unix. Si l’interpréteur Python était compilé avec une cible de déploiement de 10.5 ou moins, getgroups() renverrait la liste des identifiants de groupes effectifs associés au processus courant de l’utilisateur ; le nombre d’éléments de cette liste est limité par le système, typiquement 16, et peut être modifié par des appels à setgroups() si les privilèges ont été convenablement assignés. Si compilé avec une cible de déploiement supérieure à 10.5, la fonction getgroups() renvoie la liste des accès du groupe actuel pour l’utilisateur associé à l’identifiant utilisateur du processus ; la liste d’accès du groupe peut changer durant la vie du processus, elle n’est pas affectée par les appels à setgroups() et sa longueur n’est pas limitée à 16. La valeur de la cible de déploiement, MACOSX_DEPLOYMENT_TARGET, peut être obtenue par la fonction sysconfig.get_config_var().

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

os.getlogin()

Return the name of the user logged in on the controlling terminal of the process. For most purposes, it is more useful to use the environment variable LOGNAME to find out who the user is, or pwd.getpwuid(os.getuid())[0] to get the login name of the process’s real user id.

Disponibilité : Unix.

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.

Nouveau dans la version 2.3.

os.getpgrp()

Renvoie l’identifiant du groupe de processus actuel.

Disponibilité : Unix.

os.getpid()

Renvoie l’identifiant du processus actuel.

Disponibilité : Unix, Windows.

os.getppid()

Return the parent’s process id.

Disponibilité : Unix.

os.getresuid()

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

Disponibilité : Unix.

Nouveau dans la version 2.7.

os.getresgid()

Renvoie un tuple (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 2.7.

os.getuid()

Renvoie l’identifiant réel du processus actuel.

Disponibilité : Unix.

os.getenv(varname[, value])

Return the value of the environment variable varname if it exists, or value if it doesn’t. value defaults to None.

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

os.putenv(varname, value)

Set the environment variable named varname to the string value. Such changes to the environment affect subprocesses started with os.system(), popen() or fork() and execv().

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

Note

Sur certaines plate-formes, incluant FreeBSD et Mac OS X, assigner environ peut causer des fuites de mémoire. Referez-vous à la documentation système de putenv.

Quand putenv() est géré, les assignations d’éléments dans os.environ sont automatiquement traduites en appels correspondants à putenv(). Cependant, des appels à putenv() ne mettent pas os.environ à jour. Il est donc préférable d’assigner les éléments de os.environ.

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.

Nouveau dans la version 2.2.

Note

Sur Mac OS X, la longueur de groups ne peut pas dépasser le nombre maximum d’identifiants effectifs de groupes défini par le système, typiquement 16. Voir la documentation de getgroups() pour les cas où getgroups ne renvoie pas la même liste de groupes que celle définie par l’appel à setgroups.

os.setpgrp()

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

Disponibilité : Unix.

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

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

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.

Nouveau dans la version 2.4.

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.

Disponibilité : Unix, Windows.

os.umask(mask)

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

Disponibilité : Unix, Windows.

os.uname()

Return a 5-tuple containing information identifying the current operating system. The tuple contains 5 strings: (sysname, nodename, release, version, machine). Some systems truncate the nodename to 8 characters or to the leading component; a better way to get the hostname is socket.gethostname() or even socket.gethostbyaddr(socket.gethostname()).

Disponibilité : dérivés récents de Unix.

os.unsetenv(varname)

Unset (delete) the environment variable named varname. Such changes to the environment affect subprocesses started with os.system(), popen() or fork() and execv().

Quand unsetenv() est gérée, la suppression d’éléments dans os.environ est automatiquement interprétée en un appel correspondant à unsetenv(), mais les appels à unsetenv() ne mettent pas os.environ à jour. Donc il est préférable de supprimer les éléments de os.environ.

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

15.1.2. Création de fichiers objets

These functions create new file objects. (See also open().)

os.fdopen(fd[, mode[, bufsize]])

Return an open file object connected to the file descriptor fd. The mode and bufsize arguments have the same meaning as the corresponding arguments to the built-in open() function. If fdopen() raises an exception, it leaves fd untouched (unclosed).

Disponibilité : Unix, Windows.

Modifié dans la version 2.3: When specified, the mode argument must now start with one of the letters 'r', 'w', or 'a', otherwise a ValueError is raised.

Modifié dans la version 2.5: On Unix, when the mode argument starts with 'a', the O_APPEND flag is set on the file descriptor (which the fdopen() implementation already does on most platforms).

os.popen(command[, mode[, bufsize]])

Open a pipe to or from command. The return value is an open file object connected to the pipe, which can be read or written depending on whether mode is 'r' (default) or 'w'. The bufsize argument has the same meaning as the corresponding argument to the built-in open() function. The exit status of the command (encoded in the format specified for wait()) is available as the return value of the close() method of the file object, except that when the exit status is zero (termination without errors), None is returned.

Disponibilité : Unix, Windows.

Obsolète depuis la version 2.6: This function is obsolete. Use the subprocess module. Check especially the Remplacer les fonctions plus anciennes par le module subprocess section.

Modifié dans la version 2.0: This function worked unreliably under Windows in earlier versions of Python. This was due to the use of the _popen() function from the libraries provided with Windows. Newer versions of Python do not use the broken implementation from the Windows libraries.

os.tmpfile()

Return a new file object opened in update mode (w+b). The file has no directory entries associated with it and will be automatically deleted once there are no file descriptors for the file.

Disponibilité : Unix, Windows.

There are a number of different popen*() functions that provide slightly different ways to create subprocesses.

Obsolète depuis la version 2.6: All of the popen*() functions are obsolete. Use the subprocess module.

For each of the popen*() variants, if bufsize is specified, it specifies the buffer size for the I/O pipes. mode, if provided, should be the string 'b' or 't'; on Windows this is needed to determine whether the file objects should be opened in binary or text mode. The default value for mode is 't'.

Also, for each of these variants, on Unix, cmd may be a sequence, in which case arguments will be passed directly to the program without shell intervention (as with os.spawnv()). If cmd is a string it will be passed to the shell (as with os.system()).

These methods do not make it possible to retrieve the exit status from the child processes. The only way to control the input and output streams and also retrieve the return codes is to use the subprocess module; these are only available on Unix.

For a discussion of possible deadlock conditions related to the use of these functions, see Flow Control Issues.

os.popen2(cmd[, mode[, bufsize]])

Execute cmd as a sub-process and return the file objects (child_stdin, child_stdout).

Obsolète depuis la version 2.6: This function is obsolete. Use the subprocess module. Check especially the Remplacer les fonctions plus anciennes par le module subprocess section.

Disponibilité : Unix, Windows.

Nouveau dans la version 2.0.

os.popen3(cmd[, mode[, bufsize]])

Execute cmd as a sub-process and return the file objects (child_stdin, child_stdout, child_stderr).

Obsolète depuis la version 2.6: This function is obsolete. Use the subprocess module. Check especially the Remplacer les fonctions plus anciennes par le module subprocess section.

Disponibilité : Unix, Windows.

Nouveau dans la version 2.0.

os.popen4(cmd[, mode[, bufsize]])

Execute cmd as a sub-process and return the file objects (child_stdin, child_stdout_and_stderr).

Obsolète depuis la version 2.6: This function is obsolete. Use the subprocess module. Check especially the Remplacer les fonctions plus anciennes par le module subprocess section.

Disponibilité : Unix, Windows.

Nouveau dans la version 2.0.

(Note that child_stdin, child_stdout, and child_stderr are named from the point of view of the child process, so child_stdin is the child’s standard input.)

This functionality is also available in the popen2 module using functions of the same names, but the return values of those functions have a different order.

15.1.3. 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 sockets et les pipes sont également référencés par des descripteurs.

The fileno() method can be used to obtain the file descriptor associated with a file object when required. Note that using the file descriptor directly will bypass the file object methods, ignoring aspects such as internal buffering of data.

os.close(fd)

Ferme le descripteur de fichier fd.

Disponibilité : Unix, Windows.

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)

Close all file descriptors from fd_low (inclusive) to fd_high (exclusive), ignoring errors. Equivalent to:

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

Disponibilité : Unix, Windows.

Nouveau dans la version 2.6.

os.dup(fd)

Return a duplicate of file descriptor fd.

Disponibilité : Unix, Windows.

os.dup2(fd, fd2)

Duplicate file descriptor fd to fd2, closing the latter first if necessary.

Disponibilité : Unix, Windows.

os.fchmod(fd, mode)

Change the mode of the file given by fd to the numeric mode. See the docs for chmod() for possible values of mode.

Disponibilité : Unix.

Nouveau dans la version 2.6.

os.fchown(fd, uid, gid)

Change the owner and group id of the file given by fd to the numeric uid and gid. To leave one of the ids unchanged, set it to -1.

Disponibilité : Unix.

Nouveau dans la version 2.6.

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.

Disponibilité : Unix.

os.fstat(fd)

Return status for file descriptor fd, like stat().

Disponibilité : Unix, Windows.

os.fstatvfs(fd)

Return information about the filesystem containing the file associated with file descriptor fd, like statvfs().

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

If you’re starting with a Python file object f, first do f.flush(), and then do os.fsync(f.fileno()), to ensure that all internal buffers associated with f are written to disk.

Availability: Unix, and Windows starting in 2.2.3.

os.ftruncate(fd, length)

Truncate the file corresponding to file descriptor fd, so that it is at most length bytes in size.

Disponibilité : Unix.

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

Disponibilité : Unix, Windows.

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

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

Availability: Windows, Unix.

Nouveau dans la version 2.5.

os.open(file, flags[, mode])

Open the file file and set various flags according to flags and possibly its mode according to mode. The default mode is 0777 (octal), and the current umask value is first masked out. Return the file descriptor for the newly opened file.

For a description of the flag and mode values, see the C run-time documentation; flag constants (like O_RDONLY and O_WRONLY) are defined in this module too (see open() flag constants). In particular, on Windows adding O_BINARY is needed to open files in binary mode.

Disponibilité : Unix, Windows.

Note

This function is intended for low-level I/O. For normal usage, use the built-in function open(), which returns a « file object » with read() and write() methods (and many more). To wrap a file descriptor in a « file object », use fdopen().

os.openpty()

Open a new pseudo-terminal pair. Return a pair of file descriptors (master, slave) for the pty and the tty, respectively. For a (slightly) more portable approach, use the pty module.

Disponibilité : certains dérivés Unix.

os.pipe()

Create a pipe. Return a pair of file descriptors (r, w) usable for reading and writing, respectively.

Disponibilité : Unix, Windows.

os.read(fd, n)

Read at most n bytes from file descriptor fd. Return a string containing the bytes read. If the end of the file referred to by fd has been reached, an empty string is returned.

Disponibilité : Unix, Windows.

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

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)

Write the string str to file descriptor fd. Return the number of bytes actually written.

Disponibilité : Unix, Windows.

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

15.1.3.1. open() flag constants

The following constants are options for the flags parameter to the open() function. They can be combined using the bitwise OR operator |. Some of them are not available on all platforms. For descriptions of their availability and use, consult the open(2) manual page on Unix or the MSDN on 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

Les constantes ci-dessus sont uniquement disponibles sur Unix.

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_ASYNC
os.O_DIRECT
os.O_DIRECTORY
os.O_NOFOLLOW
os.O_NOATIME
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.

15.1.4. Fichiers et répertoires

os.access(path, mode)

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.

Disponibilité : Unix, Windows.

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 IOError as e:
    if e.errno == errno.EACCES:
        return "some default data"
    # Not a permission error.
    raise
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.

os.F_OK

Value to pass as the mode parameter of access() to test the existence of path.

os.R_OK

Value to include in the mode parameter of access() to test the readability of path.

os.W_OK

Value to include in the mode parameter of access() to test the writability of path.

os.X_OK

Value to include in the mode parameter of access() to determine if path can be executed.

os.chdir(path)

Change le répertoire de travail actuel par path.

Disponibilité : Unix, Windows.

os.fchdir(fd)

Change the current working directory to the directory represented by the file descriptor fd. The descriptor must refer to an opened directory, not an open file.

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.getcwd()

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

Disponibilité : Unix, Windows.

os.getcwdu()

Return a Unicode object representing the current working directory.

Disponibilité : Unix, Windows.

Nouveau dans la version 2.3.

os.chflags(path, flags)

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

Disponibilité : Unix.

Nouveau dans la version 2.6.

os.chroot(path)

Change the root directory of the current process to path. Availability: Unix.

Nouveau dans la version 2.2.

os.chmod(path, mode)

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 :

Disponibilité : Unix, Windows.

Note

Although Windows supports chmod(), you can only set the file’s read-only flag with it (via the stat.S_IWRITE and stat.S_IREAD constants or a corresponding integer value). All other bits are ignored.

os.chown(path, uid, gid)

Change the owner and group id of path to the numeric uid and gid. To leave one of the ids unchanged, set it to -1.

Disponibilité : Unix.

os.lchflags(path, flags)

Set the flags of path to the numeric flags, like chflags(), but do not follow symbolic links.

Disponibilité : Unix.

Nouveau dans la version 2.6.

os.lchmod(path, mode)

Change the mode of path to the numeric mode. If path is a symlink, this affects the symlink rather than the target. See the docs for chmod() for possible values of mode.

Disponibilité : Unix.

Nouveau dans la version 2.6.

os.lchown(path, uid, gid)

Change the owner and group id of path to the numeric uid and gid. This function will not follow symbolic links.

Disponibilité : Unix.

Nouveau dans la version 2.3.

Create a hard link pointing to source named link_name.

Disponibilité : Unix.

os.listdir(path)

Return a list containing the names of the entries in the directory given by path. The list is in arbitrary order. It does not include the special entries '.' and '..' even if they are present in the directory.

Disponibilité : Unix, Windows.

Modifié dans la version 2.3: On Windows NT/2k/XP and Unix, if path is a Unicode object, the result will be a list of Unicode objects. Undecodable filenames will still be returned as string objects.

os.lstat(path)

Perform the equivalent of an lstat() system call on the given path. Similar to stat(), but does not follow symbolic links. On platforms that do not support symbolic links, this is an alias for stat().

os.mkfifo(path[, mode])

Create a FIFO (a named pipe) named path with numeric mode mode. The default mode is 0666 (octal). The current umask value is first masked out from the mode.

Disponibilité : Unix.

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.

os.mknod(filename[, mode=0600[, device=0]])

Create a filesystem node (file, device special file or named pipe) named filename. mode specifies both the permissions to use and the type of node to be created, being combined (bitwise OR) with one of stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK, and stat.S_IFIFO (those constants are available in stat). For stat.S_IFCHR and stat.S_IFBLK, device defines the newly created device special file (probably using os.makedev()), otherwise it is ignored.

Nouveau dans la version 2.3.

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

Nouveau dans la version 2.3.

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

Nouveau dans la version 2.3.

os.makedev(major, minor)

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

Nouveau dans la version 2.3.

os.mkdir(path[, mode])

Create a directory named path with numeric mode mode. The default mode is 0777 (octal). If the directory already exists, OSError 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 (i.e. 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.

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

Disponibilité : Unix, Windows.

os.makedirs(path[, mode])

Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory. Raises an error exception if the leaf directory already exists or cannot be created. The default mode is 0777 (octal).

Le paramètre mode est passé à mkdir() ; voir la description de mkdir() pour comprendre comment cela est interprété.

Note

makedirs() will become confused if the path elements to create include os.pardir.

Nouveau dans la version 1.5.2.

Modifié dans la version 2.3: This function now handles UNC paths correctly.

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.

Disponibilité : Unix.

os.pathconf_names

Dictionary mapping names accepted by pathconf() and fpathconf() to the integer values defined for those names by the host operating system. This can be used to determine the set of names known to the system. Availability: Unix.

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

Modifié dans la version 2.6: If the path is a Unicode object the result will also be a Unicode object.

Disponibilité : Unix.

os.remove(path)

Remove (delete) the file path. If path is a directory, OSError is raised; see rmdir() below to remove a directory. This is identical to the unlink() function documented below. On Windows, attempting to remove a file that is in use causes an exception to be raised; on Unix, the directory entry is removed but the storage allocated to the file is not made available until the original file is no longer in use.

Disponibilité : Unix, Windows.

os.removedirs(path)

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.

Nouveau dans la version 1.5.2.

os.rename(src, dst)

Rename the file or directory src to dst. If dst is a directory, OSError will be raised. On Unix, if dst exists and is a file, it 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). On Windows, if dst already exists, OSError will be raised even if it is a file; there may be no way to implement an atomic rename when dst names an existing file.

Disponibilité : Unix, Windows.

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

Nouveau dans la version 1.5.2.

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.

os.rmdir(path)

Supprime (retire) le répertoire path. Ne fonctionne que lorsque le répertoire est vide, sinon une OSError est levée. Afin de supprimer toute la hiérarchie de dossier, la fonction shutil.rmtree() peut être utilisée.

Disponibilité : Unix, Windows.

os.stat(path)

Perform the equivalent of a stat() system call on the given path. (This function follows symlinks; to stat a symlink use lstat().)

The return value is an object whose attributes correspond to the members of the stat structure, namely:

  • st_mode - protection bits,

  • st_ino - inode number,

  • st_dev - device,

  • st_nlink - number of hard links,

  • st_uid - user id of owner,

  • st_gid - group id of owner,

  • st_size - size of file, in bytes,

  • st_atime - time of most recent access,

  • st_mtime - time of most recent content modification,

  • st_ctime - platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows)

Modifié dans la version 2.3: If stat_float_times() returns True, the time values are floats, measuring seconds. Fractions of a second may be reported if the system supports that. See stat_float_times() for further discussion.

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

  • st_blocks - number of 512-byte blocks allocated for file

  • st_blksize - filesystem blocksize for efficient file system I/O

  • st_rdev - type of device if an inode device

  • st_flags - user defined flags for file

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 - file generation number

  • st_birthtime - time of file creation

On RISCOS systems, the following attributes are also available:

  • st_ftype (file type)

  • st_attrs (attributes)

  • st_obtype (object type).

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.

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

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

Exemple :

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511, 769, 1, 1032, 100, 926, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926

Disponibilité : Unix, Windows.

Modifié dans la version 2.2: Added access to values as attributes of the returned object.

Modifié dans la version 2.5: Added st_gen and st_birthtime.

os.stat_float_times([newvalue])

Détermine si stat_result représente les horodatages par des objets à virgule flottante. Si newvalue vaut True, les appels à stat() qui suivront renvoieront des flottants. Si newvalue vaut False, les appels qui suivront renverront des entiers. Si newvalue est omise, la valeur actuelle est renvoyée.

Pour des raisons de compatibilité avec les anciennes versions de Python, accéder un objet de type stat_result renvoie toujours des entiers.

Modifié dans la version 2.5: Python renvoie des valeurs flottantes par défaut maintenant. Les applications qui ne fonctionnent pas correctement avec des horodatages flottants peuvent utiliser cette fonction pour restaurer l’ancien comportement.

La précision des horodatages (qui est la plus petite fraction possible) dépend du système. Certains systèmes supportent uniquement une précision à la seconde ; sur ces systèmes, la fraction sera toujours zéro.

Il est recommandé que cette option ne soit changée qu’au lancement du programme dans le module __main__. Les bibliothèques ne devraient jamais changer cette option. Si une application utilise une bibliothèque qui fonctionne mal avec les horodatages en nombres flottants, cette application devrait temporairement retirer cette possibilité jusqu’à ce que la bibliothèque ait été corrigée.

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 fichier sur le chemin donné, et correspondent auxmembres de la structure statvfs nommés : f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax.

For backward compatibility, the return value is also accessible as a tuple whose values correspond to the attributes, in the order given above. The standard module statvfs defines constants that are useful for extracting information from a statvfs structure when accessing it as a sequence; this remains useful when writing code that needs to work with versions of Python that don’t support accessing the fields as attributes.

Disponibilité : Unix.

Modifié dans la version 2.2: Added access to values as attributes of the returned object.

Create a symbolic link pointing to source named link_name.

Disponibilité : Unix.

os.tempnam([dir[, prefix]])

Return a unique path name that is reasonable for creating a temporary file. This will be an absolute path that names a potential directory entry in the directory dir or a common location for temporary files if dir is omitted or None. If given and not None, prefix is used to provide a short prefix to the filename. Applications are responsible for properly creating and managing files created using paths returned by tempnam(); no automatic cleanup is provided. On Unix, the environment variable TMPDIR overrides dir, while on Windows TMP is used. The specific behavior of this function depends on the C library implementation; some aspects are underspecified in system documentation.

Avertissement

Use of tempnam() is vulnerable to symlink attacks; consider using tmpfile() (section Création de fichiers objets) instead.

Disponibilité : Unix, Windows.

os.tmpnam()

Return a unique path name that is reasonable for creating a temporary file. This will be an absolute path that names a potential directory entry in a common location for temporary files. Applications are responsible for properly creating and managing files created using paths returned by tmpnam(); no automatic cleanup is provided.

Avertissement

Use of tmpnam() is vulnerable to symlink attacks; consider using tmpfile() (section Création de fichiers objets) instead.

Availability: Unix, Windows. This function probably shouldn’t be used on Windows, though: Microsoft’s implementation of tmpnam() always creates a name in the root directory of the current drive, and that’s generally a poor location for a temp file (depending on privileges, you may not even be able to open a file using this name).

os.TMP_MAX

The maximum number of unique names that tmpnam() will generate before reusing names.

Remove (delete) the file path. This is the same function as remove(); the unlink() name is its traditional Unix name.

Disponibilité : Unix, Windows.

os.utime(path, times)

Set the access and modified times of the file specified by path. If times is None, then the file’s access and modified times are set to the current time. (The effect is similar to running the Unix program touch on the path.) Otherwise, times must be a 2-tuple of numbers, of the form (atime, mtime) which is used to set the access and modified times, respectively. Whether a directory can be given for path depends on whether the operating system implements directories as files (for example, Windows does not). 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().

Modifié dans la version 2.0: Added support for None for times.

Disponibilité : Unix, Windows.

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 est une chaîne de caractères contenant le chemin vers le répertoire. dirnames est une liste de noms de sous-répertoires dans dirpath (en excluant '.' et '..'). filenames est une liste de fichiers (non-répertoires) dans dirpath. Notez que les noms dans la liste ne contiennent aucune composante de chemin. Pour récupérer le chemin complet (qui commence à top) vers un répertoire dans dirpath, faites os.path.join(dirpath, name).

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 tuples 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 à listdir() sont ignorées. Si l’argument optionnel onerror est spécifié, il devrait être une fonction, il sera appelé avec un argument, une instance de OSError. Il peut reporter l’erreur ou continuer le parcours, ou lever l’exception pour avorter le parcours. Notez que le nom de fichier est disponible par “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.

Nouveau dans la version 2.6: The followlinks parameter.

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",
    print sum(getsize(join(root, name)) for name in files),
    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 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))

Nouveau dans la version 2.3.

15.1.5. 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 programmeurs 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().

Disponibilité : Unix, Windows.

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

Disponibilité : Unix, Windows.

os._exit(n)

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

Disponibilité : Unix, Windows.

Note

La méthode standard pour quitter est sys.exit(n). _exit() devrait normalement être utilisé uniquement par le processus fils après un 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.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

os.EX_DATAERR

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_NOINPUT

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_NOUSER

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_NOHOST

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_UNAVAILABLE

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_SOFTWARE

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

os.EX_CANTCREAT

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_IOERR

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

os.EX_PROTOCOL

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

os.EX_CONFIG

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.EX_NOTFOUND

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

Disponibilité : Unix.

Nouveau dans la version 2.3.

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, Cygwin and OS/2 EMX have known issues when using fork() from a thread.

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

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.

Nouveau dans la version 2.7: Windows support

os.killpg(pgid, sig)

Envoie le signal sig au groupe de processus pgid.

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.nice(increment)

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

Disponibilité : Unix.

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(...)
os.popen2(...)
os.popen3(...)
os.popen4(...)

Run child processes, returning opened pipes for communications. These functions are described in section Création de fichiers objets.

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

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

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.

Nouveau dans la version 1.6.

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.

Nouveau dans la version 1.6.

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.

Nouveau dans la version 1.6.

os.P_DETACH
os.P_OVERLAY

Possible values for the mode parameter to the spawn* family of functions. These are less portable than those listed above. P_DETACH is similar to P_NOWAIT, but the new process is detached from the console of the calling process. If P_OVERLAY is used, the current process will be replaced; the spawn*() function will not return.

Disponibilité : Windows.

Nouveau dans la version 1.6.

os.startfile(path[, operation])

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

startfile() termine dès que l’application associée est lancée.Il n’y a aucune option permettant d’attendre que l’application ne se ferme et aucun moyen de récupérer le statu de sortie de l’application. Le paramètre path est relatif au répertoire actuel. Si vous voulez utiliser un chemin absolu, assurez-vous que le premier caractère ne soit pas un slash ('/'). La fonction Win32 ShellExecute() sous-jacente ne fonctionne pas sinon. Utilisez la fonction os.path.normpath() pour vous assurer que le chemin est encodé correctement pour Win32.

Disponibilité : Windows.

Nouveau dans la version 2.0.

Nouveau dans la version 2.5: The operation parameter.

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.

Sur Unix, la valeur de retour est le statut de sortie du processus encodé dans le format spécifié pour wait(). Notez que POSIX ne spécifie pas le sens de la valeur de retour de la fonction C system(), donc la valeur de retour de la fonction Python est dépendante du système.

On Windows, the return value is that returned by the system shell after running command, given by the Windows environment variable COMSPEC: on command.com systems (Windows 95, 98 and ME) this is always 0; on cmd.exe systems (Windows NT, 2000 and XP) this is the exit status of the command run; on systems using a non-native shell, consult your shell documentation.

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.

Disponibilité : Unix, Windows.

os.times()

Return a 5-tuple of floating point numbers indicating accumulated (processor or other) times, in seconds. The items are: user time, system time, children’s user time, children’s system time, and elapsed real time since a fixed point in the past, in that order. See the Unix manual page times(2) or the corresponding Windows Platform API documentation. On Windows, only the first two items are filled, the others are zero.

Disponibilité Unix, Windows

os.wait()

Attend qu’un processus fils soit complété, et renvoie un tuple 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.

Disponibilité : Unix.

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 un tuple 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 soi complété, et renvoie un tuple contenant pid et son statut de sortir décalé de 8 bits bers la gauche (le décalage rend l’utilisation multiplate-forme plus facile). Un pid inférieur ou égal à 0 n’a aucune signification particulière sur 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 connue pas nécessairement un processus fils. Les fonctions spawn* appelées avec P_NOWAIT renvoient des identificateurs de processus appropriés.

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

Disponibilité : Unix.

Nouveau dans la version 2.5.

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

Disponibilité : Unix.

Nouveau dans la version 2.5.

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.

Availability: Some Unix systems.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

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.

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.WIFCONTINUED(status)

Renvoie True si le processus a été continué après un arrêt du job control, renvoie False autrement.

Disponibilité : Unix.

Nouveau dans la version 2.3.

os.WIFSTOPPED(status)

Renvoie True si le processus a été arrête, sinon renvoie False.

Disponibilité : Unix.

os.WIFSIGNALED(status)

Renvoie True si le processus s’est terminé à cause d’un signal, sinon, renvoie False.

Disponibilité : Unix.

os.WIFEXITED(status)

Renvoie True si le processus s’est terminé en faisant un appel système exit(2), sinon, renvoie False.

Disponibilité : Unix.

os.WEXITSTATUS(status)

Si WIFEXITED(status) vaut True, renvoie le paramètre entier de l’appel système exit(2). Sinon, la valeur de retour n’a pas de signification.

Disponibilité : Unix.

os.WSTOPSIG(status)

Renvoie le signal qui a causé l’arrêt du processus.

Disponibilité : Unix.

os.WTERMSIG(status)

Renvoie le signal qui a amené le processus à quitter.

Disponibilité : Unix.

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

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.2.

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.

Nouveau dans la version 2.4.

15.1.7. Diverses fonctions

os.urandom(n)

Retourne une chaîne de n bytes aléatoires applicables à un usage cryptographique.

This function returns random bytes from an OS-specific randomness source. The returned data should be unpredictable enough for cryptographic applications, though its exact quality depends on the OS implementation. On a UNIX-like system this will query /dev/urandom, and on Windows it will use CryptGenRandom(). If a randomness source is not found, NotImplementedError will be raised.

Pour une interface facile d’utilisation aux générateurs de nombres aléatoires fournis par votre plate-forme, voir random.SystemRandom.

Nouveau dans la version 2.4.