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')。