2011-09-14 18 views
25

esto es una simple duda. Guardo un archivo de demostración: test.py En la consola de Windows puedo ejecutar el archivo con un: C:\>test.pyejecutar el programa en Python shell

en su lugar, ¿Cómo puedo ejecutar el archivo en el shell de Python?

gracias

+1

¿Qué quiere decir por "el intérprete de Python"? ¿Ejecutaste 'python' desde la línea de comando? ¿O está utilizando IDLE o algún otro programa que también puede proporcionar un prompt '>>>' de Python? –

Respuesta

58

Uso execfilepara Python 2:

>>> execfile('C:\\test.py') 

Uso exec para Python 3

>>> exec(open("C:\\test.py").read()) 
+24

en la versión 3 (mi versión) el equivalente es: exec (abrir ("C: \\ test.py"). Read()). ¡Gracias! –

+1

@loops Obtengo: 'SyntaxError: (error Unicode) el códec 'unicodeescape' no puede decodificar bytes en la posición 2-3: truncado \ uXXXX excape'. ¿Qué significa esto? Traté de cambiar la codificación de mi documento .py a Unicode, pero eso no tuvo ningún efecto. – Musixauce3000

+0

@loops - Está bien, acabo de enterarme de los \\'U' escapes unicode. Parece que evitas su falta de comunicación al duplicar todas las barras invertidas seguidas por U's. Pero esto produce un argumento inválido OSError 22 ''c: \\ users \ username \\ desktop \\ test.py'' que es extraño porque solo dupliqué la barra invertida en' \ Users'. ¿Por qué el error muestra que dupliqué todas las barras invertidas excepto la seguida por el nombre de usuario? – Musixauce3000

31

Si tienes intención de ejecutar el script y terminan a las un aviso (para que pueda inspeccionar variables, etc.), luego use:

python -i test.py 

Eso ejecutará la secuencia de comandos y luego lo colocará en un intérprete de Python.

1

De la misma carpeta, puede hacerlo:

import test 
11

Depende de lo que está en test.py. La siguiente es una estructura apropiada:

# suppose this is your 'test.py' file 
def main(): 
"""This function runs the core of your program""" 
print("running main") 

if __name__ == "__main__": 
# if you call this script from the command line (the shell) it will 
# run the 'main' function 
main() 

Si se mantiene esta estructura, se puede ejecutar como esta en la línea de comandos (a suponer que $ es su indicador de línea de comandos):

$ python test.py 
$ # it will print "running main" 

Si desea ejecutar desde el terminal de Python, a continuación, sólo tiene que hacer lo siguiente:

>>> import test 
>>> test.main() # this calls the main part of your program 

no hay necesidad de utilizar el módulo subprocess si ya está con nosotros ing Python. En su lugar, intente estructurar sus archivos de Python de tal forma que puedan ejecutarse tanto desde la línea de comando como desde el intérprete de Python.

5

Para más nueva versión de Python:

exec(open(filename).read()) 
Cuestiones relacionadas