鏈接:https://docs.python.org/3/library/argparse.html#module-argparse
第一步:創建解析器
parser = ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)
參數 :
prog=None:定義程序的名稱,方便以後用 %(prog)s 引用這個名字
usage=None:用法列表,形如 usage: PROG [-h] [–sum] 默認是系統根據參數自定義的,可以自己之傳值指定。
- description:在開頭加入一短話
- epilog :尾部一段話
- romfile_prefix_chars:表示參數可以使用文件,默認不可以。
- argument_default :全局默認值。argument_default =argparse.SUPPRESS 自動隱藏。
- conflict_handler :本來不允許,兩個參數一樣的,設置成conflict_handler = ‘resolve’。允許,並且是新值覆蓋舊
- add_help : 默認有一個-h參數可用,可以設置成False
第二步:add_argument()
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
標識命令行參數如何被解析。
name or flags :有兩種,區別是位置參數必須有,根據位置傳入,可選參數要提前告知。‘BAR’-f ‘F’
- optional argument:可選的‘-f’ ‘–foo’
- positional argument :必須有的 ‘bar’通過前後位置輸入
action: 對待參數的動作
- action=”store”:默認屬性,用來儲存命令行參數
- action=”store_true ” or action=”store_true ” :設置默認參數爲true.這個相當於一個開關,最好只能讓用戶選true或者false
action=”store_const: 如果用戶不給,默認使用const的值。對與可選變量很好用
parser = argparse.ArgumentParser() parser.add_argument('--foo', action='store_const', const=42) parser.parse_args('--foo'.split())
action=”append :這個儲存一個列表,會把每一個參數append到list中
- action=”append_const:和store_const效果一樣,都有const= 的屬性
- action=”count:能自動返回關鍵字參數的調用次數,比如:-vvv 爲三次
- action=”version:能夠打印版本的信息,當啓動的時候會自動調用
- 還可以自定一個類,來解析,暫時不需要
type:數據類型。默認是字符串,能設置爲float,int,open。或着是自定的方法,接受一個string,返回東西
- choices :參數必須從這個列表中選擇choices=[‘rock’, ‘paper’, ‘scissors’]
- required:讓-f 類型的變成必選參數
- help:設置這個參數的 幫助文檔,可以使用%(prog)s,%(default)s, %(type)s,等參數的信息(這個字符串如果要標識%請用 %%)
- metavar:別名,就是顯示着好看,沒什麼用,默認是變成大寫
- dest: :parse_args()輸出的時候的名字,最終的屬性名字。
第三步:parse_args()得到輸入的屬性
args = parser.parse_args()
返回的是Namespace類,這是一個簡單類,就是爲了儲存屬性值
- vars(args):把Namespace類轉化爲 dick_like類型
所以,像字典方法一樣,如果你需要值,就是用 args.屬性名字,有意思的是屬性名字就是你當時起的屬性名字(不帶”–“)
over