Le module sys pour interagir avec l’interpréteur Python

Le module sys fournit des fonctions et des variables qui permettent d’interagir avec l’interpréteur Python. Il nous donne des informations sur les éléments, les fonctions et les méthodes de l’interpréteur.

module sys

Ce module est l’un des meilleurs modules Python, et si vous souhaitez l’utiliser, vous devez l’importer. En fait, le module sys fonctionne indépendamment du système d’exploitation de la machine.

Le module sys fournit plusieurs informations, telles que la version de l’interpréteur, la valeur maximale que la variable peut contenir, les informations de copyright de l’interpréteur Python, etc.

sys.version

Renvoie la version de l’interpréteur Python sous forme de chaîne de caractère avec la date de l’installation.
Dans votre terminal, saisissez :

python3
>>> import sys
>>> sys.version
'3.8.5 (default, Jul 28 2020, 12:59:40) \n[GCC 9.3.0]'

sys.copyright

Renvoie des informations sur les droits d’auteur de l’interpréteur Python.

>>> sys.copyright
'Copyright (c) 2001-2020 Python Software Foundation.\nAll Rights Reserved.\n\nCopyright (c) 2000 BeOpen.com.\nAll Rights Reserved.\n\nCopyright (c) 1995-2001 Corporation for National Research Initiatives.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'

sys.argv du module sys

Renvoie une liste d’arguments de la ligne de commande passés à un script Python. L’élément avec l’index 0 dans cette liste est toujours le nom du script. Le reste des arguments est stocké dans les index suivants.

Selon la plateforme que vous utilisez, le premier argument peut contenir le chemin complet du script ou simplement le nom du fichier.

>>> sys.argv
['']

En termes simples, les arguments de la ligne de commande permettent de gérer le script ou le programme de manière externe en fournissant le nom du script et les paramètres d’entrée à partir de la ligne de commande lors de l’exécution du script. Les arguments de la ligne de commande ne sont pas spécifiques à Python . Ceux-ci peuvent être trouvés dans d’autres langages de programmation tels que C, C # , C ++, PHP, Java, Perl, Ruby et Shell.

En fait, ces arguments sont transmis à un programme / script lors de l’exécution. Ils fournissent des informations supplémentaires au programme pour qu’il puisse s’exécuter.

Cela nous permet de fournir différentes entrées au moment de l’exécution sans changer le code. Créez un fichier test.py qui contiendra ce code.

# Importer le module sys
import sys

# Afficher le nombre total d'arguments
print("Le nombre total d'arguments :", len( sys.argv ) )
print('Les valeurs des arguments sont :', str( sys.argv ))

Maintenant, exécutez le script ci-dessus dans le terminal comme suit :

python3 test.py

Cela produit le résultat suivant –

Le nombre total d'arguments : 1
Les valeurs des arguments sont : ['test.py']

Essayons de passer des arguments à notre script. Toujours dans votre terminal.

python3 test.py 1 2 3

L’exécution du code.

Le nombre total d'arguments : 4
Les valeurs des arguments sont : ['test.py', '1', '2', '3']

Le premier argument est toujours le nom du script et les autres sont des valeurs que nous avons introduit.

De plus, vous pouvez afficher chaque argument en utilisant la boucle for, ajoutez ce code à votre script test.py:

for i in sys.argv:
    print(i)

L’exécution du code.

test.py
1
2
3

sys.path du module sys

La variable Path stocke le chemin du répertoire sous la forme d’une liste de chaînes de caractères. Chaque fois que vous importez un module ou exécutez un programme en utilisant un chemin relatif, l’interpréteur python recherche le module ou le script nécessaire à l’aide de la variable de Path.

L’index du chemin stocke le répertoire contenant le script qui a été utilisé pour appeler l’interpréteur Python à l’index « Zéro ». Si l’interpréteur est appelé de manière interactive ou si le script est lu à partir de l’entrée standard, le Path[0] sera une chaîne vide.

>>> import sys
>>> sys.path
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/henke/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']

Lorsque vous démarrez un interpréteur Python, l’une des choses qu’il crée automatiquement est une liste contenant tous les répertoires qu’il utilisera pour rechercher des modules lors de l’importation. Cette liste est disponible dans une variable nommée sys.path. Notez que la chaîne de caractère vide est le répertoire actuel.

Cela peut être très utile pour déboguer, par exemple pour connaître les raisons pour lesquelles un module n’est pas importé.

Si vous avez des modules dans un répertoire personnalisé, vous pouvez ajouter le chemin du répertoire à la variable path en utilisant une méthode path.append () (puisque path est un objet liste, nous utilisons la méthode de liste append()). Démarrez Python dans le terminal en saisissant :

python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Exécutez le code suivant :

# Ajouter un répertoire à la variable path
>>> sys.path.append ('/root/test/')
>>> sys.path
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/henkes/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/root/test/']

Nous avons ajouté un nouveau répertoire ‘/ root / test /’ à notre variable path, auquel l’interpréteur Python pourrait accéder.

sys.stdin / stdout / stderr du module sys

Dans linux, tout est considéré comme fichier. Les flux des entrées (stdin), des sorties (stdout) et des erreurs (stderr) standards sont liés à des objets fichier prédéfinis. Vous pouvez relier stdout et stderr à des objets de type fichier pour rediriger les messages de sortie et d’erreur.

Entrée standard – il s’agit du descripteur de fichier qu’un programme lit pour obtenir des informations de l’utilisateur.
Un exemple d’une entrée standard : le clavier.
Sortie standard – le programme écrit des informations dans ce descripteur de fichier. La sortie est renvoyée via la sortie standard (stdout). Un exemple d’une sortie standard : l’écran
Erreur standard – le programme écrit les informations d’erreur dans ce descripteur de fichier. Les erreurs sont renvoyées via l’erreur standard (stderr).

En sachant que print(x) est essentiellement un raccourci pour sys.stdout.write (x + '\n'), voyons un exemple simple d’une sortie standards.

import sys

print(type(sys.stdout))
sys.stdout.write('Bonjour\n')

Ce qui nous donne comme sortie :

<class '_io.TextIOWrapper'>
Bonjour

Donc, sys.stdout est un objet io.TextIOWrapper , ce qui veut dire qu’on peut lire et écrire comme dans un fichier normal.
En fait, il est possible de rediriger la sortie de votre programme Python vers un fichier, à partir du terminal comme ceci:

python mon_app.py > mon_fichier.txt

sys.platform

La valeur de sys.platform permet d’identifier la plateforme. Vous pouvez l’utiliser pour ajouter des modules spécifiques à la plate-forme, importer des modules en fonction de la plate-forme. Tout le monde souhaite que son programme s’exécute quelle que soit la plateforme. Et c’est là que cette commande est utile.

>>> sys.platform
'linux'

En fait, Python nous fournit des objets de type fichier qui représentent stdin, stdout et stderr.

sys.executable

La valeur de sys.executable est le chemin absolu vers l’interpréteur Python.

>>> sys.executable
'/usr/bin/python3'

sys.exit

Le module sys de Python fournit une fonction intégrée qui permet de quitter le programme et sortir du processus d’exécution. La fonction sys.exit () peut être utilisée à tout moment dans le code.

import sys

x = 20
if x < 100:
     sys.exit("Valeur non valide")
else:
     print("Valeur valide!")

L’exécution du code.

Valeur non valide

Il existe de nombreuses autres valeurs et méthodes dans le module sys que vous pouvez trouver dans la documentation Python.

Le module sys pour interagir avec l’interpréteur Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Retour en haut