2011-01-07 12 views
37

Normalmente, puede ejecutar una secuencia de comandos de Python por ejemplo: python myscript.py, pero si está en modo interactivo, ¿cómo es posible ejecutar una secuencia de comandos de Python en el sistema de archivos?Existe la posibilidad de ejecutar una secuencia de comandos de Python mientras está en modo interactivo

>>> exec (Archivo) ???

Debe ser posible ejecutar el script más de una vez.

+2

¿Por qué 'myscript.py' no tiene una función" principal "adecuada? ¿Por qué no puedes 'importar myscript' y' myscript.main() '? Ese es el enfoque habitual. ¿Por qué no funciona? ¿Puedes arreglar myscript para agregar una función "principal" adecuada? –

+0

El problema es que estoy cargando un "shell de pasteurización" y mientras hago esto libs de otro proyecto están cargados. Y en este caparazón interactivo quiero probar algunas cosas. Pero sí tiene razón, su sugerencia es buena – lennykey

+3

Esto no responde la pregunta tal como la solicitó, pero en caso de que sea relevante para usted o para otros, me parece útil cuando estoy en desarrollo activo: 'PYTHONSTARTUP = some_script.py python -i'. Esto ejecutará some_script.py y lo dejará en un shell interactivo. Si su script de trabajo define variables locales, podrá acceder a ellas desde el shell. Esto puede ser realmente útil cuando se trata de experimentar con código o analizar el comportamiento después del hecho. – Mark

Respuesta

35

Uso execfile('script.py') pero sólo funciona en Python 2.x, si está utilizando 3.0 tratan this

+0

Thx. Creo que esto funciona para mí y tiene la plantilla mínima de configuración – lennykey

22

import file sin la extensión .py lo hará, sin embargo __name__ no será __name__ por lo que si el script realiza alguna comprobación para ver si se está ejecutando de forma interactiva, deberá omitirlos.

Alternativamente, si usted está queriendo echar un vistazo al medio ambiente después de que el script se ejecuta tratar python -i script.py

EDIT: Para cargar de nuevo

file = reload(file)

+3

'Alternativamente, si quieres echar un vistazo al entorno después de que se ejecuta el script, prueba python -i script.py' ¡Esto es épico, gracias! –

2

Usted puede ejecutar cualquier comando del sistema utilizando python:

>>>from subprocess import Popen 
>>>Popen("python myscript.py", shell=True) 
+3

El subproceso no es ideal para esto. No podrá interactuar con sus variables, porque está en un proceso completamente separado, y necesita otro comando incluso para ver su resultado. –

5

También puede utilizar el módulo subprocess. Algo así como:

>>> import subprocess 
>>> proc = subprocess.Popen(['./script.py']) 
>>> proc.communicate() 
9

Es posible que desee buscar en IPython, una más potente consola interactiva. Tiene varios comandos "mágicos" que incluyen %run script.py (que, por supuesto, ejecuta el script y deja las variables definidas para que las examine).

+1

Esto no funciona para mí. No puedo acceder a ninguna variable. ¿Podría ser que puse mi script en main()? – LWZ

Cuestiones relacionadas