寫Python指令碼寫多了,有的指令碼參數很多,有的指令碼參數需要經常調節,直接去指令碼中改參數或簡單的通過sys.argv來傳遞參數都不方便,於是就專門學習了一下專用的選項解析器optparser模組。
一個簡單的例子:
假設我們需要產生一些服從二維高斯分布的一些隨機點,該Python指令碼需要使用者輸入3個參數:產生的隨機點的個數,儲存這些隨機點的檔案的路徑,以及是否在標準輸出上列印這些點。三個參數在執行該Python指令碼時由三個選項指定,選項部分的代碼如下:
from optparse import OptionParser parser=OptionParser() #-n選項,指定產生的隨機點的個數 parser.add_option('-n','--num',dest='num',help='The number of points',type='float',default=400) #-f選項,指定儲存隨機點的檔案的路徑 parser.add_option('-f','--file',dest='file',help='The path of file',default='file.txt') #-p選項,指定是否列印產生的隨機點 parser.add_option('-p','--print',dest='print',help='Print or Not',action='store_true') (options,args)=parser.parse_args() #從命令列中取得選項指定的參數,並傳遞給以下變數 num=options.num file_path=options.file print=options.print
add_option()說明:
dest |
存取該選項參數的變數名 |
help |
協助資訊,在僅有-h或--help選項時會輸出所有選項的協助資訊 |
type |
選項參數的類型,若不指定則預設為string |
default |
選項參數的預設值 |
下面逐個介紹代碼中的選項:
-n:指定產生的隨機點的個數,--n是其長選項的形式,參數的名字是num,預設值是400,參數的類型是float(如果不指定type則是預設類型string),
-f:指定儲存隨機點的檔案的路徑,預設值是file.txt
-p:這個選項比較特殊,有一個action屬性,只要在執行指令碼時含有-p選項,如果action的值是store_true,則該參數取值為True,如果action的值是store_false,則該參數取值為False。
參考文獻:
[1] optparser模組OptionParser學習
[2] Python -optparser之 OptionParser