def exec(python_code: str, globals: dict[str:object] = None, locals: dict[str:object] = None) -> None
exec
valide et exécute le code Python qui lui est passé en paramètre.
>>> code = """for i in range(5): ... print(i)""" >>> exec(code) 0 1 2 3 4 >>>
exec
en raison des risques de sécurité potentiels (injection de code Python non initialement
prévus) et des problèmes de performance. Si vous l'utilisez tout de même, soyez alors conscient des risques potentiels et veillez à avoir sécurisé le script
à exécuter.
Execute the given source in the context of globals and locals. The source may be a string representing one or more Python statements or a code object as returned by compile(). The globals must be a dictionary and locals can be any mapping, defaulting to the current globals and locals. If only globals is given, locals defaults to it. The closure must be a tuple of cellvars, and can only be used when source is a code object requiring exactly that many cellvars.
Paramètre | Description |
---|---|
python_code : str |
Le code Python à exécuter. |
globals : dict[str, object] = None |
Un dictionnaire définissant les variables globales utilisées pour l'exécution du code. |
locals : dict[str, object] = None |
Un dictionnaire définissant les variables locales utilisées pour l'exécution du code. |
Cette méthode ne renvoie aucune valeur.
NameError :Une exception de ce type sera déclenchée si l'expression utilise une variable non définie dans l'un des deux dictionnaires.
SyntaxError :Une exception de ce type sera déclenchée si le premier paramètre n'est pas une expression Python syntaxiquement valide.
TypeError :Une exception de ce type sera déclenchée si au moins l'un des deux paramètres
globals
ou locals
n'est pas un dictionnaire ou None
.
1 2 3 4 5 6 7 8 9 10 11 |
#!/usr/bin/python while True: file_name = input("Veuillez saisir le nom du fichier Python à exécuter : ") if file_name == "exit": break with open(file_name, "r") as file: content = file.read() exec(content) print("Bye bye") |
Et voici les résultats produits par cet exemple. Durant mon test, le fichier hello.py
se contentait de réaliser un affichage sur la console.
$> python sample.py Veuillez saisir le nom du fichier Python à exécuter : hello.py Hello world! Veuillez saisir le nom du fichier Python à exécuter : exit Bye bye $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :