2011-10-22 200 views
14

我有一堆用Python編寫的腳本。我運行它們從Windows命令提示符像從Windows命令行運行Python腳本,參數未通過

c:> my_script.py arg1 arg2 arg3 

這個作品在每一臺計算機,自多年前每一個Windows版本。剛剛它已經在我的Windows 7系統上崩潰了。腳本被加載並執行。但是沒有任何論據被傳遞到腳本中。

爲了說明這一點,我有一個劇本叫py_echo.py:

from pprint import pprint as pp 
import sys 

if __name__ =='__main__': 
    pp(sys.argv) 

然後我用參數A,B,C執行它。他們都沒有通過。

c:\Python27\Lib\site-packages>py_echo.py a b c 
['C:\\0\\usr\\bin\\py_echo.py'] 

如果我運行python.exe明確的參數傳遞正確

c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c 
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c'] 

它之前工作。在我從PC上卸載了一堆老版本的Python解釋器和模塊後,它纔開始崩潰。重新安裝Python沒有幫助。我想知道我能做些什麼來解決這個問題?

我已經變得非常依賴我多年來建立的腳本。我覺得,當他們打破:(

+1

你有沒有嘗試過這樣的:http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from -t –

+0

謝謝大家。我發現Perl上的另一個線程指向相同的解決方案。 http://stackoverflow.com/questions/444388/how-can-i-pass-command-line-arguments-via-file-association-in-vista-64 –

+0

同樣適用於Python:http://stackoverflow.com /問題/ 2437167 /問題 - 運行 - Python的腳本,在命令提示符特異性-用的命令行。 (儘管解決方案在Windows 7上不起作用)。 – bavaza

回答

3

答案移動到SO(而非Jon's answer鏈接):

修改以下兩個REGIST這一切的外觀極好文章中描述里斯,這樣的參數沿到Python傳遞:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command 
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command 

添加%*現有"C:\PythonXX\python.exe" "%1",使現在的關鍵是這樣的:"C:\PythonXX\python.exe" "%1" %*

來源:http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/