Exécuter un script en Python

Vaibhav Vaibhav 10 octobre 2023
  1. Exécuter un script Python en Python
  2. Utilisation de globals et locals
Exécuter un script en Python

Cet article expliquera comment nous pouvons utiliser Python pour exécuter un autre script python.

Exécuter un script Python en Python

On peut exécuter un script Python à l’aide de Python à l’aide de la fonction exec(). La fonction exec() est un utilitaire Python qui permet l’exécution dynamique de code Python à la fois au format chaîne et octet. Cette fonction accepte trois arguments, à savoir,

  • object : Le code Python au format chaîne ou octet
  • globals : C’est un argument optionnel. C’est un dictionnaire et contient des fonctions et des variables globales.
  • locals : C’est un argument optionnel. C’est un dictionnaire et contient des fonctions et des variables locales.

Référez-vous au code suivant pour un exemple.

file_name = "code.py"
content = open(file_name).read()
exec(content)

Le code ci-dessus ouvre d’abord un fichier dans le répertoire de travail sous le nom de code.py, lit son contenu, le stocke dans une variable portant le nom contenu, puis passe le contenu lu à exec() fonction. Le contenu lu est du code Python, et la méthode exec() exécutera ce code Python.

Si nous avons des variables locales ou globales, nous pouvons les stocker dans des dictionnaires et les transmettre au script exécutable. Le script pourra alors utiliser ces variables et exécuter le code. Notez que si nous utilisons certaines fonctions dans le script exécutable que nous n’avons pas passées en tant que variable globale, le programme principal lancera une exception.

Le code suivant décrit la même chose.

from random import randint

code = "print(randint(1, 6))"
exec(code, {}, {})  # Empty globals and locals

Production :

Traceback (most recent call last):
  File "<string>", line 4, in <module>
File "<string>", line 1, in <module>
NameError: name 'randint' is not defined

Lorsque les globals et locals ne sont pas passés à exec(), les exigences (pour exécuter le script) sont automatiquement gérées. Python est suffisamment intelligent pour déterminer toutes les variables ou fonctions nécessaires à l’exécution du script. Par exemple, le code suivant s’exécutera parfaitement sans aucune erreur.

from random import randint

code = "print(randint(1, 6))"
exec(code)  # No globals or locals passed

Utilisation de globals et locals

Nous pouvons créer des fonctions personnalisées et des fonctions importées à l’intérieur du script exécutable en les passant à la fonction exec() via globals. Comme mentionné ci-dessus, si ces dépendances ne sont pas trouvées, des exceptions seront levées.

Référez-vous au code suivant. Ici, nous allons définir une fonction personnalisée et importer une fonction du package random. Ensuite, les deux fonctions seront passées à la fonction exec() enveloppée dans un dictionnaire via le paramètre globals.

from random import randint


def get_my_age():
    return 19


globals = {"randint": randint, "get_my_age": get_my_age}

code = """
print(randint(1, 6))
print(get_my_age())
"""
exec(
    code,
    globals,
)

Production :

5 # It can be any number between 1 and 6, both inclusive
19

Pour l’instant, ces fonctions ont été passées via le paramètre globals. On peut aussi les faire passer par des locaux. Puisque la fonction exec n’accepte pas les arguments de mot-clé, nous devons passer un dictionnaire vide pour globals et passer locals.

from random import randint


def get_my_age():
    return 19


locals = {"randint": randint, "get_my_age": get_my_age}

code = """
print(randint(1, 6))
print(get_my_age())
"""
exec(code, {}, locals)

Production :

2 # It can be any number between 1 and 6, both inclusive
19
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.