J'essaie d'exécuter un fichier avec des commandes python à partir de l'interpréteur.
EDIT: J'essaie d'utiliser des variables et des paramètres de ce fichier, pas d'invoquer un processus distinct.
J'essaie d'exécuter un fichier avec des commandes python à partir de l'interpréteur.
EDIT: J'essaie d'utiliser des variables et des paramètres de ce fichier, pas d'invoquer un processus distinct.
Réponses:
Plusieurs façons.
De la coquille
python someFile.py
De l'intérieur IDLE, appuyez sur F5 .
Si vous tapez de manière interactive, essayez ceci: ( Python 2 uniquement !)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
Pour Python3 , utilisez:
>>> exec(open("filename.py").read())
python
ne fonctionne pas si vous exécutez python 3, python3
est utilisé à la place.
stdin
partir d'un fichier comme l'utilisation <
du script d'exécution dans le execfile()
.? @ s-lott
python
pointe python3
.
python
exécutable que le système trouve en parcourant les dossiers de la variable d'environnement PATH
.
Pour Python 2:
>>> execfile('filename.py')
Pour Python 3:
>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())
Consultez la documentation . Si vous utilisez Python 3.0, consultez cette question .
Voir la réponse de @ S.Lott pour un exemple de la façon dont vous accédez aux globaux à partir de filename.py après l'avoir exécuté.
exec(open("./path/to/script.py").read(), globals())
Cela exécutera un script et mettra toutes ses variables globales dans la portée globale de l'interpréteur (le comportement normal dans la plupart des environnements de script).
open
lit directement le code du script. Pour passer des arguments, regardez cette réponse , mais au lieu de execfile
, utilisez évidemment exec
et open
comme indiqué ci-dessus.
Surpris, je ne l'ai pas encore vu. Vous pouvez exécuter un fichier, puis laisser l'interpréteur ouvert une fois l'exécution terminée à l'aide de l' -i
option:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
J'essaie d'utiliser des variables et des paramètres de ce fichier, de ne pas invoquer un processus distinct.
Eh bien, simplement importer le fichier avec import filename
(moins .py, doit être dans le même répertoire ou sur votre PYTHONPATH
) exécutera le fichier, rendant ses variables, fonctions, classes, etc. disponibles dans lefilename.variable
espace de noms.
Donc, si vous avez cheddar.py
avec la variable spam et les oeufs de fonction - vous pouvez les importer avec import cheddar
, accéder à la variable avec cheddar.spam
et exécuter la fonction en appelantcheddar.eggs()
Si vous avez du code en cheddar.py
dehors d'une fonction, il sera exécuté immédiatement, mais la création d'applications qui exécutent des éléments lors de l'importation rendra difficile la réutilisation de votre code. Si possible, mettez tout à l'intérieur des fonctions ou des classes.
from filename import *
De mon point de vue, la meilleure façon est:
import yourfile
et après avoir modifié yourfile.py
reload(yourfile)
ou
import imp;
imp.reload(yourfile) in python3
mais cela rendra la fonction et les classes comme ça: yourfile.function1, yourfile.class1 .....
Si vous ne pouvez pas les accepter, la solution finale est:
reload(yourfile)
from yourfile import *
Je ne suis pas un expert mais c'est ce que j'ai remarqué:
si votre code est mycode.py par exemple, et que vous tapez simplement 'import mycode', Python l'exécutera mais ne mettra pas toutes vos variables à la disposition de l'interpréteur. J'ai trouvé que vous devez taper réellement 'from mycode import *' si vous voulez mettre toutes les variables à la disposition de l'interpréteur.
Faites,
from my_file import *
Assurez-vous de ne pas ajouter l'extension .py. Si votre fichier .py dans le sous-répertoire utilise,
from my_dir.my_file import *
Pour Python 3:
>>> exec(open("helloworld.py").read())
Assurez-vous que vous êtes dans le bon répertoire avant d'exécuter la commande.
Pour exécuter un fichier à partir d'un répertoire différent, vous pouvez utiliser la commande ci-dessous:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
Supposons que vous souhaitiez les fonctionnalités suivantes:
__name__ == '__main__'
a la valeur True pour que les scripts se comportent correctement comme des scripts.La exec(open('foo.py').read())
fonction échoue 1 La import foo
stratégie échoue fonction 2
Pour obtenir les deux, vous avez besoin de ceci:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)