3.1 sys --- Paramètres et fonctions propres au système

Ce module procure un accès à certaines valeurs utilisées ou maintenues par l'interpréteur et à des fonctions qui interagissent fortement avec l'interpréteur. Il est toujours disponible.

argv
La liste des arguments de la ligne de commande passés à un script Python. argv[0] est le nom du script (selon le système il peut s'agir ou non d'un nom de chemin complet). Si la commande a été exécutée en utilisant l'option -c dans la ligne de commande, argv[0] prend comme valeur la chaîne '-c'. Si aucun nom de script n'a été passé à l'interpréteur Python, argv a une longueur nulle.

byteorder
Un indicateur de l'ordre d'octets natif. Peut prendre la valeur 'big' pour les plates-formes qui utilisent l'ordre big-endian (octet le plus significatif en premier), ou la valeur 'little' pour celles qui utilisent l'ordre little-endian (octet le moins significatif en premier). Nouveau en version 2.0

builtin_module_names
Un tuple de chaînes de caractères qui donne le nom de tous les modules qui sont compilés dans l'interpréteur Python. (Cette information n'est accessible d'aucune autre façon - modules.keys() ne fournit que la liste des modules importés.)

copyright
Une chaîne de caractères contenant le copyright attaché à l'interpréteur Python.

dllhandle
Entier spécifiant le handler de la DLL Python. Disponibilité: Windows.

exc_info()
Cette fonction retourne un tuple de trois valeurs qui donne des informations au sujet de l'exception qui est en train d'être gérée. L'information en question est propre au thread courant et à l'état courant du cadre de pile (stack frame). Si le cadre de pile courant n'est pas en train de gérer une exception, l'information est extraite du cadre de pile appelant, ou de celui qui l'appelle, et ainsi de suite jusqu'à ce qu'on trouve un cadre de pile qui gère une exception. Ici, ``gérer une exception'' est pris au sens de ``exécuter ou avoir exécuté une clause except.'' Pour un cadre de pile donné, seule l'information au sujet de la dernière exception gérée est disponible.

Si aucune exception n'est en cours de traitement dans aucune pile, un tuple contenant trois valeurs None est retourné. Sinon, les valeurs retournées sont (type, valeur, trace). Leur signification est la suivante: type est le type d'exception en cours de traitement (une chaîne de caractères ou un objet classe); valeur contient le paramètre de l'exception (sa valeur associée ou le second argument de raise, qui est toujours une instance de classe si le type de l'exception est un objet classe); trace est un objet trace (voir le Manuel de Référence) qui encapsule la pile appelante au point où l'exception s'est déclenchée en premier.

Avertissement: affecter la valeur de retour de trace à une variable locale dans une fonction provoquera une référence circulaire. Ceci empêchera tout objet référencé par une variable locale dans la même fonction ou dans la trace d'être nettoyé par le ramasse-miettes. Puisque la plupart des fonctions n'ont pas besoin d'accéder à la trace, la meilleure solution est d'utiliser quelque chose comme type, valeur = sys.exc_info()[:2] pour extraire seulement le type d'exception et la valeur. Si vous avez vraiment besoin de la trace, assurez-vous de la détruire après usage (le meilleur moyen est d'utiliser une instruction try ... finally) ou d'appeler exc_info() dans une fonction qui ne gère pas elle-même d'exception.

exc_type
exc_value
exc_traceback

Déconseillé depuis la version 1.5  Utiliser exc_info() à la place.

Puisqu'il s'agit de variables globales, elles ne sont pas propres au thread courant, leur utilisation n'est donc pas sûre dans un programme multi-threadé. Quand aucune exception n'est en cours de traitement, exc_type prend la valeur None et les deux autres sont indéfinis.

exec_prefix
Une chaîne qui donne le préfixe, propre au site, du répertoire dans lequel les fichiers Python dépendant de la plate-forme sont installés; par défaut, prend la valeur '/usr/local'. Cette valeur peut aussi être définie au moment de la construction avec l'argument exec-prefix du script configure. Pour être précis, tous les fichiers de configuration (par exemple le fichier d'en-tête config.h) sont installés dans le répertoire exec_prefix + '/lib/pythonversion/config', et les modules de la bibliothèque partagée sont installés dans exec_prefix + '/lib/pythonversion/lib-dynload', où version est égale à version[:3].

executable
Une chaîne de caractères donnant le nom du binaire exécutable pour l'interpréteur Python, sur les systèmes où cela a du sens.

exit([arg])
Sort de Python. Ceci est implémenté en déclenchant l'exception SystemExit, de sorte que les actions de nettoyage spécifiées par les clauses finally des instructions try sont honorées, et qu'il est possible d'intercepter la tentative de sortie à un niveau extérieur. L'argument optionnel arg peut être un entier donnant l'état de sortie (zéro par défaut), ou un autre type d'objet. S'il s'agit d'un entier, zéro est considéré comme une ``fin réussie'' et toute valeur non nulle comme une ``fin anormale'' par les shells et programmes du même genre. La plupart des systèmes exigent qu'elle soit comprise entre 0 et 127, et produisent des résultats indéfinis sinon. Certains systèmes ont une convention pour affecter des significations spécifiques à certaines valeurs de sortie, mais ceci est généralement très peu développé; les programmes Unix utilisent généralement 2 pour des erreurs de syntaxe au niveau de la ligne de commande et 1 pour les autres types d'erreur. Si un autre type d'objet est passé, None équivaut à passer zéro, et toute autre valeur est imprimée sur sys.stderr et produit un code de sortie de 1. En particulier, sys.exit("un message d'erreur") est une façon rapide de sortir d'un programme quand une erreur survient.

exitfunc
Cette valeur n'est pas réellement définie par le module, mais peut être définie par l'utilisateur (ou par un programme) pour spécifier une action de nettoyage en sortie de programme. Quand elle est définie, il doit s'agir d'une fonction sans argument. Cette fonction sera appelée quand l'interpréteur se termine. Une seule fonction peut être installée de cette façon; pour autoriser l'exécution de plusieurs fonctions en sortie, utilisez le module atexit. Note: la fonction de sortie n'est pas appelée quand le programme est tué par un signal, quand une erreur interne fatale de Python est détectée, ou quand os._exit() est appelée.

getrefcount(objet)
Retourne le compteur de références de objet. La valeur retournée est généralement supérieure de un à celle à laquelle vous pourriez vous attendre, parce qu'il inclut la référence (temporaire) en tant qu'argument de getrefcount().

getrecursionlimit()
Retourne la valeur courante de la limite de récursion, la profondeur maximum de la pile de l'interpréteur Python. Cette limite empêche une récursion infinie de provoquer un débordement de la pile C et de planter Python. Elle peut être définie par setrecursionlimit().

hexversion
Le numéro de version, encodé sous forme d'un entier simple. Vous êtes assuré que ce numéro augmente avec chaque version, y compris les versions intermédiaires. par exemple, pour tester si l'interpréteur Python est au moins en version 1.5.2, faites:

if sys.hexversion >= 0x010502F0:
    # appeler une fonction avancée
    ...
else:
    # appeler une implémentation différente, ou avertir l'utilisateur
    ...

Cette donnée s'appelle "hexversion" parce qu'il n'a de vraie signification que quand on voit le résultat produit en le passant à la fonction intégrée hex(). La valeur version_info peut être utilisée pour une version plus lisible de la même information. Nouveau en version 1.5.2

last_type
last_value
last_traceback
Ces trois variables ne sont pas toujours définies; elles le sont quand une exception n'est pas gérée et que l'interpréteur affiche un message d'erreur et une trace de la pile. Le but recherché est de permettre à un utilisateur interactif d'importer un module de débogage et de s'engager dans un débogage post-mortem sans avoir à ré-exécuter la commande qui a provoqué l'erreur. (Un usage typique est "import pdb; pdb.pm()" pour entrer dans le débogage post-mortem; voir le chapitre ``Le débogueur Python'' pour plus d'informations.)

La signification de ces variables est la même que celle des valeurs de retour de la fonction exc_info() ci-dessus. (Puisqu'il n'y a qu'un thread interactif, les problèmes de thread n'ont pas de sens pour ces variables, contrairement à exc_type etc.)

maxint
Le plus grand entier positif supporté par le type entier ordinaire de Python. Vaut au moins 2**31-1. L'entier négatif le plus grand est -maxint-1 - l'asymétrie résulte de l'utilisation de l'arithmétique binaire avec complément à 2.

modules
Un dictionnaire qui fait correspondre les noms de modules aux modules qui ont déjà été chargés. Il peut être manipulé pour forcer le rechargement de modules et autres astuces. Notez qu'enlever un module de ce dictionnaire n'est pas la même chose que d'appeler reload() sur l'objet module correspondant.

path
Une liste de chaînes de caractères qui spécifie le chemin de recherche des modules. Initialisé à partir de la variable d'environnement $PYTHONPATH, ou d'une valeur par défaut dépendant de l' installation.

Le premier élément de cette liste, path[0], est le répertoire contenant le script qui a été utilisé pour invoquer l'interpréteur Python. Si le répertoire du script n'est pas disponible (par exemple si l'interpréteur est lancé interactivement, ou si le script est lu depuis l'entrée standard), path[0] est la chaîne vide, qui indique à Python de chercher les modules dans le répertoire courant d'abord. Notez que le répertoire du script est inséré avant les entrées insérées à partir du résultat de $PYTHONPATH.

platform
Cette chaîne de caractères contient un identifiant de plate-forme, par exemple 'sunos5' ou 'linux1'. Ceci peut être utilisé pour ajouter des composants propres à la plate-forme dans path, par exemple.

prefix
Une chaîne de caractères donnant le préfixe de répertoire, propre au site, où les fichiers Python indépendants de la plate-forme sont installés; par défaut, il prend la valeur '/usr/local'. Cette valeur peut être définie au moment de la construction par l'argument prefix du script configure. La collection principale de modules de la bibliothèque Python est installée dans le répertoire prefix + '/lib/pythonversion' tandis que les fichiers d'en-tête indépendants de la plate-forme (tous sauf config.h) sont rangés dans prefix + '/include/pythonversion', où version est égal à version[:3].

ps1
ps2
Des chaînes de caractères qui spécifient les invites primaire et secondaire de l'interpréteur. Ils ne sont définis que quand l'interpréteur est en mode interactif. Leurs valeurs initiales dans ce cas sont '>>> ' et '... '. Si on affecte un objet autre qu'une chaîne de caractères à l'une ou l'autre de ces variables, leur str() est réévaluée à chaque fois que l'interpréteur se prépare à lire une nouvelle commande interactive; ceci peut être utilisé pour implémenter une invite dynamique.

setcheckinterval(intervalle)
Définit l'``intervalle de vérification'' de l'interpréteur. Cette valeur entière détermine à quelle fréquence l'interpréteur effectue une vérification périodique de choses comme les changements de threads et les gestionnaires de signaux. La valeur par défaut est 10, ce qui signifie que la vérification est effectuée toutes les 10 instructions virtuelles de Python. Lui affecter une valeur supérieure peut augmenter les performances des programmes qui utilisent des threads. Lui affecter une valeur <= 0 provoque la vérification à chaque instruction virtuelle, ce qui maximise la réactivité mais aussi la redondance.

setprofile(fonctionprofil)
Définit la fonction de profilage du système, qui vous permet d'implémenter un profileur de code source Python. Voyez le chapitre sur le profileur Python. La fonction de profilage du système est appelée de la même façon que la fonction de trace du système (voir settrace()), mais elle n'est pas appelée pour chaque ligne de code exécutée (seulement aux appels, aux retours et quand une exception se produit). Par ailleurs, sa valeur de retour n'est pas utilisée, donc elle peut juste retourner None.

setrecursionlimit(limite)
Affecte la valeur limite à la profondeur maximum de la pile de l'interpréteur Python. Cette limite évite qu'une récursion infinie ne provoque un débordement de la pile C et un plantage de Python.

La limite la plus élevée possible dépend de la plate-forme. Un utilisateur peut avoir besoin de fixer la limite à une valeur élevée si son programme nécessite une récursion profonde et que sa plate-forme supporte une valeur élevée. Il faut manipuler cette valeur avec prudence, parce qu'une limite trop haute peut conduire à un plantage.

settrace(fonctiontrace)
Définit la fonction de trace du système, qui vous permet d'implémenter un débogueur de code source Python en Python. Voyez la section ``Comment ça marche'' dans le chapitre sur le débogueur Python.

stdin
stdout
stderr
Objets fichier correspondant aux flux standard d'entrée, de sortie et d'erreur de l'interpréteur. stdin est utilisé pour toutes les entrées de l'interpréteur sauf pour les scripts mais y compris pour les appels à input() et à raw_input(). stdout est utilisé pour la sortie de print et des instructions d'expression et pour les invites de input() et de raw_input(). Les invites de l'interpréteur et (presque tous) ses messages d'erreur vont sur stderr. stdout et stderr n'ont pas besoin d'être des objets fichier intégrés: tout objet est acceptable à partir du moment où il possède une méthode write() qui accepte un argument chaîne de caractères. (Changer ces objets n'affecte pas les flux standard d'entrée-sortie des processus exécutés par os.popen(), os.system() ou la famille des fonctions exec*() dans le module os.)

__stdin__
__stdout__
__stderr__
Ces objets contiennent les valeurs originales de stdin, stderr et stdout au début du programme. Ils sont utilisés pendant la dernière mise au point, et peuvent être utiles pour revenir à des objets fichiers au fonctionnement connu au cas où les fichiers courants ont été écrasés par un objet abîmé.

tracebacklimit
Quand on affecte une valeur entière à cette variable, elle détermine le nombre maximum de niveaux d'information de trace affichée quand une exception non gérée se produit. La valeur par défaut est 1000. Quand sa valeur est fixée à 0 ou moins, toute information de trace est supprimée et seuls le type d'exception et sa valeur sont affichés.

version
Une chaîne de caractères contenant le numéro de version de l'interpréteur Python plus des informations additionnels sur le numéro de version et le compilateur utilisé. Sa valeur est de la forme 'version (#numéro_construction,date_construction, date_construction) [compilateur]'. Les trois premiers caractères servent à identifier la version dans les répertoires d'installation (à l'endroit approprié sur chaque plate-forme). Un exemple:

>>> import sys
>>> sys.version
'1.5.2 (#0 Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)]'

version_info

Un tuple contenant les cinq composants du numéro de version: majeur, mineur, micro, niveauversion, et serie. Toutes les valeurs sauf niveauversion sont des entiers; le niveau de version est 'alpha', 'beta', 'candidate', ou 'final'. La valeur version_info correspondant à la version 2.0 de Python est (2, 0, 0, 'final', 0). Nouveau en version 2.0

winver
Le numéro de version utilisé pour former les clés de registre sur les plates-formes Windows. Ceci est stocké dans la ressource chaîne 1000 dans la DLL Python. La valeur est normalement les trois premiers caractères de version. Il est fourni dans le module sys pour des raisons d'information; modifier cette valeur n'a pas d'effet sur les clés de registre utilisées par Python. Disponibilité: Windows.