python中的optionParser模塊


Python 有兩個內建的模塊用於處理命令行參數:
一個是 getopt,《Deep in python》一書中也有提到,只能簡單處理 命令行參數;
另一個是 optparse,它功能強大,而且易於使用,可以方便地生成標准的、符合Unix/Posix 規范的命令行說明。

使用optionparser模塊來解析

optionparser的執行過程:
1、導入optionparser : from optparse import OptionParser
2、構造optionparser的對象:parser = OptionParser()
3、往optionparser對象中增加option :parser.add_option(...),添加的內容是命令行參數,及相關的幫助信息

每個命令行參數由參數名字符串和參數屬性組成,如-f或者file分別表示長短參數名:

   parser.add_option("-f", "--file", ...)

 


4、調用optionparser的解析函數:

(options, args) = parser.parse_args()

 
5、在options中使用解析到的options,在args中使用其他的args。
options是一個字典,其key值是app_options()函數中的dest屬性的參數值;value值對應的是app_options()函數中的defalut屬性的參數值,或者是由命令行傳入的參數

args是由positional arguments組成的列表

 

示例如下:

from optparse import OptionParser
optParser = OptionParser()
optParser.add_option('-f','--file',action = 'store',type = "string" ,dest = 'filename')
optParser.add_option("-v","--vison", action="store_false", dest="verbose",
                     default='hello',help="make lots of noise [default]")
#optParser.parse_args() 剖析並返回一個字典和列表,
#字典中的關鍵字是我們所有的add_option()函數中的dest參數值,
#而對應的value值,是add_option()函數中的default的參數或者是
#由用戶傳入optParser.parse_args()的參數
fakeArgs = ['-f','file.txt','-v','how are you', 'arg1', 'arg2']
option , args = optParser.parse_args()
op , ar = optParser.parse_args(fakeArgs)
print("option : ",option)
print("args : ",args)
print("op : ",op)
print("ar : ",ar)

 輸出結果:

option :  {'filename': None, 'verbose': 'hello'}
args :  []
op :  {'filename': 'file.txt', 'verbose': False}
ar :  ['how are you', 'arg1', 'arg2']

 注意:我們對optParser.parser_args()函數傳入參數列表和沒有傳入參數列表的區別。在上述使用fakeArgs參數列表代替了我們在命令行輸入的參數。如果我們在shell中運行這個代碼,會如此傳參:
        

 

 

add_option函數分析:

    add_option()參數說明:
        action:存儲方式,分為三種store、store_false、store_true
        type:類型
        dest:存儲的變量
        default:默認值
        help:幫助信息

 action的取值有那么多,我么着重說三個store、store_false、store_true 三個取值。 action默認取值store。

       --store 上表示命令行參數的值保存在options對象中。例如上面一段代碼,如果我們對optParser.parse_args()函數傳入的參數列表中帶有‘-f’,那么就會將列表中‘-f’的下一個元素作為其dest的實參filename的值,他們兩個參數形成一個字典中的一個元素{filename:file_txt}。相反當我們的參數列表中沒有‘-f’這個元素時,那么filename的值就會為空。

      --store_false fakeArgs 中存在'-v'verbose將會返回False,而不是‘how are you’,也就是說verbose的值與'-v'的后一位無關,只與‘-v’存在不存在有關。

      --store_ture  這與action="store_false"類似,只有其中有參數'-v'存在,則verbose的值為True,如果'-v'不存在,那么verbose的值為None


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM