Quando você executa um script sem digitar "python" antes, precisa saber duas coisas sobre como o Windows invoca o programa. A primeira é descobrir que tipo de arquivo o Windows pensa que é:
C: \> assoc .py
.py = Python.File
Em seguida, você precisa saber como o Windows está executando as coisas com essa extensão. Está associado ao tipo de arquivo "Python.File", portanto, este comando mostra o que estará fazendo:
C: \> ftype Python.File
Python.File = "c: \ python26 \ python.exe" "% 1"% *
Então, na minha máquina, quando eu digitar "blah.py foo", ele executará esse comando exato, sem nenhuma diferença nos resultados do que se eu tivesse digitado tudo sozinho:
"c: \ python26 \ python.exe" "blah.py" foo
Se você digitar a mesma coisa, incluindo as aspas, obterá resultados idênticos a quando você simplesmente digita "blah.py foo". Agora você pode resolver o resto do seu problema sozinho.
(Ou poste informações mais úteis em sua pergunta, como cópias reais recortar e colar do que você vê no console. Observe que as pessoas que fazem esse tipo de coisa têm suas perguntas votadas e recebem pontos de reputação e mais pessoas são susceptíveis de ajudá-los com boas respostas.)
Trazido de comentários:
Mesmo que assoc e ftype exibam as informações corretas, pode acontecer que os argumentos sejam removidos. O que pode ajudar nesse caso é corrigir diretamente as chaves de registro relevantes para Python. Colocou o
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
chave para:
"C:\Python26\python26.exe" "%1" %*
Provavelmente, anteriormente, %*
estava faltando. Da mesma forma, defina
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
com o mesmo valor. Consulte http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
O caminho do registro pode variar, usar python26.exe
ou python.exe
ou o que já estiver no registro.
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command