1. 程式人生 > >【Python】讀取命令列引數、在PyDev中設定Python執行時的引數

【Python】讀取命令列引數、在PyDev中設定Python執行時的引數

有時候,我們寫的命令列程式需要批次執行,這裡可以讓Python程式讀取命令列引數,再編寫一個命令列批次執行指令碼.bat,實際上就是一個充滿命令的、改了字尾名的文字檔案,在多個測試用例扔進Python程式中是非常有用的。

例如,如下圖,有一個cmdArgs.py程式,當在python cmdArgs.py 後面帶上-h -i,程式則輸出-h與-i引數,後面所帶內容:


如果輸入其它引數,比如這裡多出來的-u引數,程式是自動報錯的。

這個cmdArgs.py的程式碼如下,十分簡單:

#-*-coding:utf-8-*-
import sys,getopt
opts,args=getopt.getopt(sys.argv[1:], "h:i:")
#"h:i:"指明本程式只接受-h -i的引數
#sys.argv[1:]為要處理的引數列表,sys.argv[0]為指令碼名,所以只取sys.argv[1:]部分,過濾掉指令碼名

for op,value in opts:
    if op=="-i":
        print "-i values is:"+value;#此處的value就是-i的值
    if op=="-h":    
        print "-h values is:"+value;

其中的for迴圈需要採取雙變數的遍歷。

opts,args陣列,類似於一個key-value對陣列。

通過遍歷opts陣列,能夠把命令列後面的引數所取出。

如果要在Eclipse的PyDev環境執行上面的程式,可以採用如下圖的方式,制定這個程式時所需要的引數:

右鍵相應的python檔案,選擇以……方式執行中的執行設定,在其中的Arguments中補上相應的引數就可以了。


如果,在Programs arguments中寫入:-h sdsad -i sdasdas上面的程式執行結果如下:


如果制定其它引數,同樣會報錯