Python之argparse模塊

argparse模塊

1.使用步驟

我們常常可以把argparse的使用簡化成下面四個步驟:

步驟1(導入該模塊):import argparse   
步驟2(創建一個解析對象):parser = argparse.ArgumentParser()
步驟3(添加你想要的命令行參數和選項):parser.add_argument()
步驟4(進行解析):parser.parse_args()

參考模板:
import argparse   

def parse_args():             
    parser = argparse.ArgumentParser(description="you should add those parameter")   
    parser.add_argument('-a', action="store_true", default=False)
	parser.add_argument('-b', action="store")
	parser.add_argument('-c', action="store", type=int)                   
    args = parser.parse_args() # 在命令行中傳入參數
    # args = parser.parse_args(['-a', '-b', 'chengang', '-c', '3']) # 在程序中傳入參數
    return args

if __name__ == '__main__':
    args = parse_args()
    print(args.addresses)          

2.參數說明

argparse是一個全面的參數處理庫。參數可以觸發不同的動作,動作由add_argument()方法的action參數指定,內置6種動作可以在解析到一個參數時進行觸發:

(1)store保存參數值,可能會先將參數值轉換成另一個數據類型。若沒有顯式指定動作,則默認爲該動作。

(2)store_const 保存一個被定義爲參數規格一部分的值,而不是一個來自參數解析而來的值。這通常用於實現非布爾值的命令行標記。

(3)store_ture/store_false 保存相應的布爾值。這兩個動作被用於實現布爾開關。

(4)append 將值保存到一個列表中。若參數重複出現,則保存多個值。

(5)append_const 將一個定義在參數規格中的值保存到一個列表中。

(6)version 打印關於程序的版本信息,然後退出

關於store_ture與store_false的理解:
如上面程序中,args.a的默認False。
使用語句:args = parser.parse_args(['-a', '-b', 'cg', '-c', '3'])
輸出args.a爲True,因爲調用了'-a'。

使用語句:args = parser.parse_args(['-b', 'cg', '-c', '3'])
輸出args.a爲默認值False,因爲沒有調用'-a'

add_argument參數說明:

(1)name:選項字符串的名字。單字母用-,多字母使用--,例如-p,-v,--version,--pass等。
(2)action:基本動作類型。
(3)nargs:對應參數應該獲取的變量個數,大於1個變量用list來表示。一般取值有如下幾個:
	N  數值int型,即nargs=3,nargs=10等
	?  表示0個或者1個參數,如nargs = '?'
	*  表示0個或者多個參數,如nargs = '*'
	+  表示1個或者多個參數,如nargs = '+'
(4)const:某些action和nargs選項要求的常數值。如果有這個參數,則使用腳本時不需要追加變量。
(5)default:如果命令行中沒有出現該參數時該參數的默認值。
(6)type:命令行參數應該被轉換成的類型。支持以下類型:str, int, float, complex, file。如果沒	有此參數,默認爲str類型。
(7)choices:參數可允許的值的一個容器(列表)。
(8)required:該命令行選項是否可以省略(只針對可選參數)。
(9)help:參數的簡短描述。
(10)metavar:參數在幫助信息中的名字,即類似起一個別名。
(11)dest:給parse_args()返回的對象添加的屬性名稱,即給namespace裏面的參數起的別名,作用同	          metavar(只有非位置參數纔可以用dest)

例子:

import argparse

p = argparse.ArgumentParser()
p.add_argument('-p', help='Optional parameters', metavar='TP', dest='abcd')
args = p.parse_args()
print(args)

輸出:
>> python arg.py -h
usage: temp.py [-h] [-p TP]
optional arguments:
  -h, --help  show this help message and exit
  -p TP       Optional parameters

>> python temp.py -p 5
Namespace(abcd='5')

從上面的例子可以看出:
(1)metavar='TP'在幫助信息中爲'-p'添加了別名'TP',如上爲"-p TP"。
(2)dest='abcd'使得參數名p被abcd代替,本來應該爲Namespace(p='5'),現在Namespace(abcd='5')

參考文獻

[1] python學習之argparse模塊

[2] python之定義參數模塊argparse(一)基本使用

[3] argparse - 命令行選項與參數解析(譯)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章