2015-04-15 46 views
0

所以我正在用IDLE編寫Python,而我平常的工作流程是有兩個窗口(一個編輯器和一個控制檯),並用F5運行我的腳本以快速測試它。如何在測試運行我的Python腳本時乾淨地傳遞命令行參數?

我的劇本有一些非可選命令行參數,我有兩個相互矛盾的願望:

  • 如果有人啓動我的腳本不傳遞任何參數,我想他得到一個錯誤,告訴他(argparse做得很好)

  • 當我在IDLE中打F5時,我想讓我的腳本運行虛擬參數(並且我不希望有比F5更多的按鍵來完成此項工作,而且我不想有一段代碼,我不得不記得在我不再調試時刪除)

到目前爲止,我的解決方案是,如果我沒有得到任何的參數,我找了params.debug文件(這不是源代碼管理下),如果是的話,那麼你就應該默認參數,可以但它是一個有點難看......那麼會有更清潔,更「標準」的解決方案嗎?其他IDE提供更簡單的方法來做到這一點?

我能想到的其他解決方案:環境變量,有一個單獨的「啓動器」腳本,它是採用「官方」參數的腳本。

(我可能會嘗試反正另一個IDE)

回答

1

在一些編輯器,你可以定義「執行」命令,

例如用Geany,對Python文件,F5python2.7 %f。這可以修改爲python2.7 %f dummy parameters之類的東西。但是我使用一個附加的終端窗口,並且它的行歷史超過F5之類的命令。

我是Ipython用戶,所以不太記得IDLE配置。在Ipython中,我通常使用%run魔法,這更像是從shell中調用腳本而不是從IDE調用腳本。 Ipython也比shell有更好的歷史記錄。

對於較大的腳本,我喜歡將代碼(類,函數)的內容放在一個文件中,並在if __name__塊中測試代碼。用戶界面位於另一個導入此核心模塊的文件中。

0

Python跟蹤問題5680是一種向Idle添加一種設置F5 Run模塊的命令行參數的方法。如果您能夠應用它們,您可以自由測試任何建議的修補程序。

與此同時有條件地擴展sys.argv應滿足您的要求。

import sys 
in __name__ == '__main__': 
    if 'idlelib.PyShell' in sys.modules: 
     sys.argv.extend(('a', '-2')) # add your argments here. 
    print(sys.argv) # in use, parse sys.argv after extending it 
# ['C:\\Programs\\python34\\tem.py', 'a', '-2'] 
1

感謝您的提問。我也在尋找一種方法來做到這一點。我發現Spyder是我使用的IDE在Run/Configure下有一個選項來輸入命令行參數來運行程序。您甚至可以爲您打開的不同編輯器配置不同的編輯器。

相關問題