Kiedy wykonujesz skrypt bez wpisywania „python” na początku, musisz wiedzieć dwie rzeczy o tym, jak Windows wywołuje program. Po pierwsze, należy dowiedzieć się, jakiego rodzaju plik jest według systemu Windows:
C: \> assoc .py
.py = Python.File
Następnie musisz wiedzieć, w jaki sposób system Windows wykonuje rzeczy z tym rozszerzeniem. Jest powiązany z typem pliku „Python.File”, więc to polecenie pokazuje, co będzie robić:
C: \> ftype Python.File
Python.File = "c: \ python26 \ python.exe" "% 1"% *
Więc na moim komputerze, kiedy napiszę "blah.py foo", wykona dokładnie to polecenie, bez różnicy w wynikach, niż gdybym sam wpisał pełną treść:
„c: \ python26 \ python.exe” „blah.py” foo
Jeśli wpiszesz to samo, łącznie z cudzysłowami, otrzymasz identyczne wyniki, jak po wpisaniu „blah.py foo”. Teraz możesz samodzielnie rozwiązać resztę problemu.
(Lub zamieść w swoim pytaniu bardziej przydatne informacje, takie jak rzeczywiste kopiowanie i wklejanie tego, co widzisz w konsoli. Pamiętaj, że osoby, które robią tego typu rzeczy, otrzymują głosowanie na ich pytania i punkty reputacji, a więcej osób prawdopodobnie pomogą im w udzieleniu dobrych odpowiedzi).
Sprowadzone z komentarzy:
Nawet jeśli assoc i ftype wyświetlają poprawne informacje, może się zdarzyć, że argumenty zostaną usunięte. W takim przypadku pomocne może być bezpośrednie naprawienie odpowiednich kluczy rejestru dla języka Python. Ustaw
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
klucz do:
"C:\Python26\python26.exe" "%1" %*
Prawdopodobnie wcześniej %*
go brakowało. Podobnie ustaw
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
do tej samej wartości. Zobacz http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
Ścieżka rejestru może się zmieniać, wykorzystywać python26.exe
lub python.exe
czy cokolwiek jest już w rejestrze.
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command