Python | argparse

參考:
博客園 | Python解析命令行讀取參數(shù) -- argparse模塊
公眾號(hào) | 生信菜鳥(niǎo)團(tuán) | python:argparse用于命令行參數(shù)解析
公眾號(hào) | Python 命令行之旅 —— 深入 argparse (一)
公眾號(hào) | Python 命令行之旅 —— 深入 argparse (二)
公眾號(hào) | Python 基礎(chǔ)(二十一):argparse 模塊
argparse — 解析命令參數(shù)和選項(xiàng)

簡(jiǎn)單學(xué)習(xí)了一下枚荣,夠自己用就行了玻孟。

$ cat test.py
#!python3

import argparse

def create_parser():
    parser = argparse.ArgumentParser()
    parser.add_argument("-v", "--version", action="version", version="0.0.1")
    parser.add_argument("-i", "--infile") # 以 - 開(kāi)頭,如果不以 - 開(kāi)頭见间,視為位置參數(shù)
    parser.add_argument("-o", "--outfile", default="outfile")

    sub_parser = parser.add_subparsers()
    sub_seq = sub_parser.add_parser("seq") # 設(shè)置子命令 seq
    sub_seq.add_argument("-w", "--width", type=int)

    sub_grep = sub_parser.add_parser("grep") # 設(shè)置子命令 grep
    sub_grep.add_argument("-f", "--file", nargs="*")

    return parser

if __name__ == "__main__":
    parser = create_parser()
    args = parser.parse_args()
    print(vars(args))
    print(args.infile)
$ python3 test.py -v
0.0.1
$ python3 test.py -i test_file
{'infile': 'test_file', 'outfile': 'outfile'}
test_file
$ python3 test.py -h
usage: test.py [-h] [-v] [-i INFILE] [-o OUTFILE] {seq,grep} ...

positional arguments:
  {seq,grep}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -i INFILE, --infile INFILE
  -o OUTFILE, --outfile OUTFILE
$ python3 test.py grep -h
usage: test.py grep [-h] [-f [FILE [FILE ...]]]

optional arguments:
  -h, --help            show this help message and exit
  -f [FILE [FILE ...]], --file [FILE [FILE ...]]
  1. parser = argparse.ArgumentParser(): 添加描述信息,可為空
  • usage: 使用供搀,自動(dòng)生成
  • description: 描述信息
  • epilog楚午、prog......
  1. sub_parser = parser.add_subparsers(): 添加子命令
    sub_seq = sub_parser.add_parser("seq")
  1. parser.add_argument(): 添加選項(xiàng)
  • help: 參數(shù)描述
  • version: 版本號(hào)
  • default: 默認(rèn)值
  • choices: 可選參數(shù)范圍
  • required: 是否一定要設(shè)置該選項(xiàng)
    required=True
    required=False
  • type: 指定參數(shù)類(lèi)型,默認(rèn)str
    type=int/float/bool: 整數(shù)/浮點(diǎn)數(shù)/邏輯型
    type=open
    type=limit
  • nargs: 選項(xiàng)后參數(shù)個(gè)數(shù)
    nargs=3: 要求3個(gè)參數(shù)
    nargs="*": 允許0或多個(gè)參數(shù)
    nargs="?": 要求0或1個(gè)參數(shù)
    nargs="+": 要求至少1個(gè)參數(shù)
  • const: 指定了選項(xiàng)伴挚,但沒(méi)指定參數(shù)時(shí),取const設(shè)定的值灾炭,而不取default的值。在nargs="?"action="store_const"時(shí)有用颅眶。
  • action: 接收命令行參數(shù)后如何處理
    action="store": 保存參數(shù)值蜈出,默認(rèn)
    action="store_const": 設(shè)定選項(xiàng)后,將參數(shù)的值解析為const的值
    action="store_true": 設(shè)定選項(xiàng)后涛酗,將參數(shù)值自動(dòng)解析為True
    action="store_false": 設(shè)定選項(xiàng)后铡原,將參數(shù)值自動(dòng)解析為False
    action="append": 存儲(chǔ)為一個(gè)列表,多次使用一個(gè)選項(xiàng)時(shí)使用
    action="append_const": 存儲(chǔ)為一個(gè)列表商叹,將const的值追加到列表
    action="count": 統(tǒng)計(jì)一個(gè)選項(xiàng)出現(xiàn)的次數(shù)
  • dest燕刻、matavar...... 不會(huì),先不管
  1. parser.parse_args(): 解析

  2. parser.print_help(): 打印描述信息

還有很多剖笙,比如選項(xiàng)沖突......

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卵洗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子弥咪,更是在濱河造成了極大的恐慌过蹂,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聚至,死亡現(xiàn)場(chǎng)離奇詭異酷勺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)扳躬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)脆诉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人贷币,你說(shuō)我怎么就攤上這事击胜。” “怎么了役纹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵潜的,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我字管,道長(zhǎng)啰挪,這世上最難降的妖魔是什么信不? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮亡呵,結(jié)果婚禮上抽活,老公的妹妹穿的比我還像新娘。我一直安慰自己锰什,他們只是感情好下硕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著汁胆,像睡著了一般梭姓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嫩码,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天誉尖,我揣著相機(jī)與錄音,去河邊找鬼铸题。 笑死铡恕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丢间。 我是一名探鬼主播探熔,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烘挫!你這毒婦竟也來(lái)了诀艰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饮六,失蹤者是張志新(化名)和其女友劉穎涡驮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喜滨,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捉捅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虽风。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棒口。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辜膝,靈堂內(nèi)的尸體忽然破棺而出无牵,到底是詐尸還是另有隱情,我是刑警寧澤厂抖,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布茎毁,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏七蜘。R本人自食惡果不足惜谭溉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望橡卤。 院中可真熱鬧扮念,春花似錦、人聲如沸碧库。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嵌灰。三九已至弄匕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沽瞭,已是汗流浹背迁匠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秕脓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓儒搭,卻偏偏與公主長(zhǎng)得像吠架,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搂鲫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 我主要想做的功能就是執(zhí)行python腳本時(shí)帶上參數(shù)傍药,然后執(zhí)行參數(shù)對(duì)應(yīng)的功能。 基礎(chǔ)學(xué)習(xí) 官方解讀:https://...
    shangshine8閱讀 413評(píng)論 0 1
  • 【1】模塊功能 argparse模塊魂仍,主要用于命令行選項(xiàng)拐辽、參數(shù)和子命令解析器。 【2】相關(guān)函數(shù)使用 1擦酌、導(dǎo)入arg...
    Byte_Pulse閱讀 230評(píng)論 0 0
  • 轉(zhuǎn)自:http://blog.xiayf.cn/2013/03/30/argparse/ argparse是pyt...
    MADAO123閱讀 1,781評(píng)論 0 0
  • 一俱诸、簡(jiǎn)介 argparse是python用于解析命令行參數(shù)和選項(xiàng)的標(biāo)準(zhǔn)模塊,用于代替已經(jīng)過(guò)時(shí)的optparse模塊...
    _海角_閱讀 32,513評(píng)論 1 14
  • Python是一門(mén)非常好用的腳本語(yǔ)言赊舶,自然使用它來(lái)開(kāi)發(fā)命令行程序也比較方便睁搭。而且Python的標(biāo)準(zhǔn)庫(kù)中有一個(gè)名為a...
    樂(lè)百川閱讀 1,222評(píng)論 0 0