¿Cómo ejecutar un archivo dentro del intérprete de python?

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 para invocar un proceso separado.

Varias maneras.

De la concha

python someFile.py 

Desde dentro de IDLE, pulsa F5 .

Si estás escribiendo de manera interactiva, prueba esto.

 >>> variables= {} >>> execfile( "someFile.py", variables ) >>> print variables # globals from the someFile module 

Para Python 2:

 >>> execfile('filename.py') 

Para Python 3:

 >>> exec(open("filename.py").read()) 

Consulte la documentación . Si está utilizando Python 3.0, vea esta pregunta .

Vea la respuesta de @ S.Lott para ver un ejemplo de cómo acceder a los globales desde filename.py después de ejecutarlo.

Python 2 + Python 3

 exec(open("./path/to/script.py").read(), globals()) 

Esto ejecutará un script y pondrá todas sus variables globales en el scope global del intérprete (el comportamiento normal en la mayoría de los entornos de scripting).

Python 3 exec Documentación

Sorprendido no he visto esto todavía. Puede ejecutar un archivo y luego dejar el intérprete abierto después de que la ejecución termine usando la opción -i :

 | foo.py | ---------- testvar = 10 def bar(bing): return bing*3 -------- $ python -i foo.py >>> testvar 10 >>> bar(6) 18 

Estoy intentando usar variables y configuraciones de ese archivo, no invocar un proceso separado.

Bueno, simplemente importando el archivo con el import filename archivo de 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 espacio de nombres de filename.variable .

Entonces, si tiene cheddar.py con la variable spam y la función huevos, puede importarlos con import cheddar , acceder a la variable con cheddar.spam y ejecutar la función llamando a cheddar.eggs()

Si tiene un código en cheddar.py que está fuera de una función, se ejecutará de inmediato, pero la creación de aplicaciones que funcionen en la importación dificultará la reutilización de su código. Si todo es posible, ponga todo dentro de las funciones o clases.

No soy un experto pero esto es lo que noté:

Si su código es mycode.py, por ejemplo, y escribe solo ‘importar mycode’, Python lo ejecutará pero no pondrá todas sus variables a disposición del intérprete. Descubrí que debería escribir realmente ‘desde mycode import *’ si desea que todas las variables estén disponibles para el intérprete.

Para python3, use ya sea xxxx = name de su yourfile .

 exec(open('./xxxx.py').read()) 

Desde mi punto de vista, la mejor manera es:

 import yourfile 

y después de modificar tu archivo.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 puedes aceptarlos, la solución final es:

 reload(yourfile) from yourfile 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()) 

Solo haz,

 from my_file import * 

Asegúrese de no agregar la extensión .py. Si su archivo .py está en subdirectorio,

 from my_dir.my_file import *