【Python】讀取命令列引數、在PyDev中設定Python執行時的引數
阿新 • • 發佈:2019-02-20
有時候,我們寫的命令列程式需要批次執行,這裡可以讓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上面的程式執行結果如下:
如果制定其它引數,同樣會報錯