2011-11-01 13 views
6
import sys 

    print sys.argv[1] 

hola,Python no leerá sys.argv

esto puede parecer muy básico, pero no puedo conseguir Python para leer en cualquier cosa, desde la línea de comandos. eso es el código anterior y lo que tipo es:

myfile.py helloworld 

y lo que se obtiene es:

IndexError: list index out of range 

parece que ha funcionado una vez para mí, pero no va a funcionar más, y yo' he intentado desinstalar y volver a instalar Python y todavía no funciona.

Así que mi pregunta es, ¿estoy haciendo algo mal? o acabo de romper Python?

Gracias por cualquier ayuda

Usando: Windows 7 Python 2.7.2

+0

¿Qué pasa cuando se acaba de 'sys.argv' de impresión? ¿Y funciona, al llamar el archivo a través de 'python.exe myfile.py helloworld'? – poke

+0

ah, gracias por sus respuestas, logró hacerlo funcionar. cometió un error muy tonto, no agregó Python a la ruta de acceso en las variables del sistema – user1024028

+0

Para aquellos que tienen problemas para pasar argumentos a una secuencia de comandos en Windows sin anteponerla a una llamada a Python (por ejemplo 'python foo.py a' funciona pero' foo. py a' does not,) pasa la primera respuesta. – eenblam

Respuesta

5

¿Seguro que está llamando a su script en Python la manera de pensar que eres?

#!/usr/bin/python 
import sys 

if len(sys.argv) < 2: 
    print "you did not give any arguments\n" 
else: 
    print sys.argv[1] 

devuelve:

$ ./foo.py 
you did not give any arguments 

$ ./foo.py hello_world 
hello_world 
$ 
+0

gracias por su respuesta, logramos que funcione – user1024028

11

iniciar el editor del registro (regedit). Ajuste el HKEY_CLASSES_ROOT \ Applications \ python26.exe \ shell \ open \ tecla de comando a: "C:\Python26\python26.exe" "%1" %*

Fuente de esta solución: http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

+2

wow, esta omisión de registro nos mordió hoy, estábamos tratando de equilibrar una instalación de Python 2.7 Anaconda y 3.4 una al lado de la otra. El instalador 3.4 omitió ese argumento '% *', pero necesitábamos configurarlo para la clave 'HKEY_CLASSES_ROOT \ Applications \ pythonxx.exe \ shell \ open \ command', así como para el comando' HKEY_CLASSES_ROOT \ py_auto_file \ shell \ open \ 'clave – jxramos

+0

Gracias por su respuesta –

Cuestiones relacionadas