2012-07-27 44 views
2

我稱之爲「test.py」進口即用簡單的代碼argparse文件:使用Python中argparse - 和默認文件關聯

import argparse 
parser = argparse.ArgumentParser(description='Description') 
parser.add_argument('-e','--event', help='event', required=True) 
args = vars(parser.parse_args()) 
myArgument = args['event'] 

從窗戶如果我

python "test.py" -e hello 
叫它

它工作正常,但如果我嘗試直接與

test.py -e hello 

它調用的Python調用它,但我得到一個錯誤「-e/- 事件爲r被認爲是「 - 即它沒有通過爭論。

我在窗口關聯被設置爲:

assoc .py 
.py=Python.File 

ftype Python.File 
Python.File = "C:\Python27,python.exe" "%1" %* 

似乎無法弄清楚這一點,因爲我有工作在另一臺計算機上,所以我猜我有一些路徑或環境變量沒有正確設置?

在此先感謝

+0

相關:[從Windows上的PATH運行時,Python腳本失去參數](http://stackoverflow.com/q/10281595/95735),[如何在Windows中執行Python腳本?](http:// stackoverflow。 COM/q /95735分之1934675) – 2012-07-28 07:16:55

回答

1

我認爲您的文件關聯存在錯誤。 我想這:

Python.File = "C:\Python27,python.exe" "%1" %* 

應該是:

Python.File = "C:\Python27\python.exe" "%1" %* 

(改變,\

...如果這只是一個錯字這裏,然後this問題和答案可能是出於興趣。

基本上,這些關聯不一定是您在運行程序時調用的。 (即我基本上和你有相同的關聯,但是如果我運行一個python程序,如:「test.py -e hello」,程序test.py只是在我的編輯器中打開 - 它實際上並不運行python程序)

您可能要在兩個看起來:

  • HKEY_CURRENT_USER \ Software \ Classes下\的.py,和
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\的.py

消協那裏。

1

ftype顯示HKEY_LOCAL_MACHINE\Software\Classes中的內容,但此註冊表分支中的值可能已被HKEY_CURRENT_USER\Software\Classes中的值覆蓋。看看reg query HKCU\Software\Classes\Python.File\shell\open\command /ve的輸出是什麼。我猜你的問題是由於此註冊表項中缺少%*片段造成的。