Cuando ejecuta un script sin escribir "python" al principio, necesita saber dos cosas sobre cómo Windows invoca el programa. Primero es averiguar qué tipo de archivo cree Windows que es:
C: \> assoc .py
.py = Python.File
A continuación, debe saber cómo Windows está ejecutando las cosas con esa extensión. Está asociado con el tipo de archivo "Python.File", por lo que este comando muestra lo que estará haciendo:
C: \> ftype Python.File
Python.File = "c: \ python26 \ python.exe" "% 1"% *
Entonces, en mi máquina, cuando escribo "blah.py foo", ejecutará este comando exacto, sin diferencia en los resultados que si hubiera escrito todo el texto yo mismo:
"c: \ python26 \ python.exe" "blah.py" foo
Si escribe lo mismo, incluidas las comillas, obtendrá resultados idénticos a cuando simplemente escribe "blah.py foo". Ahora está en condiciones de resolver el resto del problema por sí mismo.
(O publique más información útil en su pregunta, como copias reales de cortar y pegar de lo que ve en la consola. Tenga en cuenta que las personas que hacen ese tipo de cosas obtienen votaciones en sus preguntas, obtienen puntos de reputación y más personas es probable que les ayuden con buenas respuestas).
Traído de los comentarios:
Incluso si assoc y ftype muestran la información correcta, puede suceder que se eliminen los argumentos. Lo que puede ayudar en ese caso es arreglar directamente las claves de registro relevantes para Python. Selecciona el
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
clave para:
"C:\Python26\python26.exe" "%1" %*
Probablemente, anteriormente, %*
faltaba. Del mismo modo, establezca
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
al mismo valor. Ver http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
La ruta de acceso puede variar, el uso python26.exe
o la python.exe
o lo que ya está en el registro.
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command