Estoy tratando de ejecutar un archivo con comandos de python desde el intérprete.
EDITAR: estoy tratando de usar variables y configuraciones de ese archivo, no invocar un proceso separado.
Estoy tratando de ejecutar un archivo con comandos de python desde el intérprete.
EDITAR: estoy tratando de usar variables y configuraciones de ese archivo, no invocar un proceso separado.
Respuestas:
Varias formas.
De la cáscara
python someFile.py
Desde adentro IDLE, presiona F5 .
Si está escribiendo interactivamente, intente esto: (¡ Python 2 solo !)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
Para Python3 , use:
>>> exec(open("filename.py").read())
pythonno funciona si está ejecutando python 3, python3se usa en su lugar.
stdindesde un archivo como usar <el script de ejecución con en execfile().? @ s-lott
pythonapunta python3.
pythonejecutable encuentre el sistema cuando revise las carpetas en la variable de entorno PATH.
Para Python 2:
>>> execfile('filename.py')
Para Python 3:
>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())
Ver la documentación . Si está utilizando Python 3.0, vea esta pregunta .
Consulte la respuesta de @ S.Lott para ver un ejemplo de cómo accede a los globales desde filename.py después de ejecutarlo.
exec(open("./path/to/script.py").read(), globals())
Esto ejecutará un script y pondrá todas sus variables globales en el alcance global del intérprete (el comportamiento normal en la mayoría de los entornos de script).
openlee directamente el código del script. Para pasar argumentos, mire esta respuesta , pero en lugar de execfile, obviamente use execy opencomo se muestra arriba.
Sorprendido no he visto esto todavía. Puede ejecutar un archivo y luego dejar el intérprete abierto después de que finalice la ejecución utilizando la -iopción:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
Estoy tratando de usar variables y configuraciones de ese archivo, no invocar un proceso separado.
Bueno, simplemente importando el archivo con import filename(menos .py, debe estar en el mismo directorio o en su PYTHONPATH) ejecutará el archivo, haciendo que sus variables, funciones, clases, etc. estén disponibles en el filename.variableespacio de nombres.
Entonces, si tiene cheddar.pyla variable spam y la función eggs, puede importarlos con import cheddar, acceder a la variable con cheddar.spamy ejecutar la función llamandocheddar.eggs()
Si tiene un código cheddar.pyque está fuera de una función, se ejecutará de inmediato, pero crear aplicaciones que ejecuten cosas en la importación dificultará la reutilización de su código. Si es posible, ponga todo dentro de las funciones o clases.
from filename import *
Desde mi punto de vista, la mejor manera es:
import yourfile
y después de modificar yourfile.py
reload(yourfile)
o
import imp;
imp.reload(yourfile) in python3
pero esto hará que la función y las clases se vean así: yourfile.function1, yourfile.class1 .....
Si no puede aceptarlos, la solución final es:
reload(yourfile)
from yourfile import *
No soy un experto, pero esto es lo que noté:
si su código es mycode.py por ejemplo, y escribe simplemente 'import mycode', Python lo ejecutará pero no hará que todas sus variables estén disponibles para el intérprete. Descubrí que debería escribir realmente 'from mycode import *' si desea que todas las variables estén disponibles para el intérprete.
Solo haz,
from my_file import *
Asegúrese de no agregar la extensión .py. Si su archivo .py está en uso de subdirectorio,
from my_dir.my_file import *
Para Python 3:
>>> exec(open("helloworld.py").read())
Asegúrese de estar en el directorio correcto antes de ejecutar el comando.
Para ejecutar un archivo desde un directorio diferente, puede usar el siguiente comando:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
Supongamos que desea las siguientes características:
__name__ == '__main__' es True, por lo que los scripts se comportan correctamente como scripts.La exec(open('foo.py').read())función falla 1 La import fooestrategia falla función 2
Para obtener ambos, necesitas esto:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)