了解學(xué)習(xí)argparse模塊

轉(zhuǎn)自http://blog.csdn.net/itlance_ouyang/article/details/52489674

argparse模塊使得編寫(xiě)用戶(hù)友好的命令行接口非常容易掂碱。程序只需定義好它要求的參數(shù)怜姿,然后argparse將負(fù)責(zé)如何從sys.srgv中解析出這些參數(shù)。Argparse模塊還會(huì)自動(dòng)生成幫助和使用信息并且當(dāng)用戶(hù)付給程序非法的參數(shù)時(shí)產(chǎn)生錯(cuò)誤信息疼燥。

使用argparse模塊一般需要三個(gè)步驟:

  1. 創(chuàng)建一個(gè)解析器
    使用argparse的第一步是創(chuàng)建一個(gè)ArgumentParser對(duì)象:

parser= argparse.ArgumentParser()

ArgumentParser對(duì)象會(huì)保存把命令行解析成Python數(shù)據(jù)類(lèi)型所需要的所有信息沧卢。

  1. 添加參數(shù)
    通過(guò)調(diào)用add_argument()方法向ArgumentParser添加程序的參數(shù)信息。通常情況下醉者,這些信息告訴ArgumentParser如何接收命令行上的字符串并將它們轉(zhuǎn)換成對(duì)象但狭。這些信息被保存下來(lái)并在調(diào)用parse_args()時(shí)用到。例如:

parser.add_argument('--name', help='username')
parser.add_argument('--pass', help='password ')

接下來(lái)撬即,調(diào)用parse_args()返回的對(duì)象將帶有兩個(gè)屬性立磁,name和pass。分別保存著用戶(hù)名與密碼剥槐。

  1. 解析參數(shù)
    ArgumentParser通過(guò)parse_args()方法解析參數(shù)唱歧。它將檢查命令行,把每個(gè)參數(shù)轉(zhuǎn)換成恰當(dāng)?shù)念?lèi)型并采取恰當(dāng)?shù)膭?dòng)作粒竖。在大部分情況下颅崩,這意味著將從命令行中解析出來(lái)的屬性建立一個(gè)簡(jiǎn)單的 Namespace對(duì)象。

argments = parser.parse_args(['--name','li','--pass','si'])

在腳本中温圆,[parse_args()] 調(diào)用一般不帶參數(shù)挨摸,[ArgumentParser]將根據(jù)[sys.argv]自動(dòng)確定命令行參數(shù)。

ArgumentParser 對(duì)象
class argparse.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)
創(chuàng)建一個(gè)新的argmentParserr對(duì)象岁歉。所有的參數(shù)應(yīng)該以關(guān)鍵字參數(shù)傳遞。下面有對(duì)每個(gè)參數(shù)各自詳細(xì)的描述膝蜈,但是簡(jiǎn)短地講它們是:
prog - 程序的名字(默認(rèn):sys.argv[0])
useage - 描述程序用法的字符串(默認(rèn):從解析器的參數(shù)生成)
description - 參數(shù)幫助信息之前的文本(默認(rèn):空)
epilog- 參數(shù)幫助信息之后的文本(默認(rèn):空)
parents - ArgmentParser 對(duì)象的一個(gè)列表锅移,這些對(duì)象的參數(shù)應(yīng)該包括進(jìn)去
ormatter_class - 定制化幫助信息的類(lèi)
prefix_chars - 可選參數(shù)的前綴字符集(默認(rèn):‘-‘)
fromfile_prefix_chars - 額外的參數(shù)應(yīng)該讀取的文件的前綴字符集(默認(rèn):None)
argument_default - 參數(shù)的全局默認(rèn)值(默認(rèn):None)
conflict_handler - 解決沖突的可選參數(shù)的策略(通常沒(méi)有必要)
add_help - 給解析器添加-h/–help 選項(xiàng)(默認(rèn):True)

add_argument() 方法
ArgumentParser.add_argument(nameor flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][,metavar][, dest])
定義應(yīng)該如何解析一個(gè)命令行參數(shù)。下面每個(gè)參數(shù)有它們自己詳細(xì)的描述饱搏,簡(jiǎn)單地講它們是:
name or flags- 選項(xiàng)字符串的名字或者列表非剃,例如foo 或者-f, --foo。
action - 在命令行遇到該參數(shù)時(shí)采取的基本動(dòng)作類(lèi)型推沸。
nargs - 應(yīng)該讀取的命令行參數(shù)數(shù)目备绽。
const- 某些action和nargs選項(xiàng)要求的常數(shù)值。
default - 如果命令行中沒(méi)有出現(xiàn)該參數(shù)時(shí)的默認(rèn)值鬓催。
type- 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類(lèi)型肺素。
choices - 參數(shù)可允許的值的一個(gè)容器。
required - 該命令行選項(xiàng)是否可以省略(只針對(duì)可選參數(shù))宇驾。
help - 參數(shù)的簡(jiǎn)短描述倍靡。
metavar - 參數(shù)在幫助信息中的名字。
dest - 給parse_args()返回的對(duì)象要添加的屬性名稱(chēng)课舍。

參考鏈接:
getopt英文類(lèi)庫(kù):https://docs.python.org/2/library/getopt.html
argparse英文類(lèi)庫(kù):https://docs.python.org/2/library/argparse.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末塌西,一起剝皮案震驚了整個(gè)濱河市他挎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捡需,老刑警劉巖办桨,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異站辉,居然都是意外死亡崔挖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)庵寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狸相,“玉大人,你說(shuō)我怎么就攤上這事捐川∨Ь椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵古沥,是天一觀的道長(zhǎng)瘸右。 經(jīng)常有香客問(wèn)我,道長(zhǎng)岩齿,這世上最難降的妖魔是什么太颤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮盹沈,結(jié)果婚禮上龄章,老公的妹妹穿的比我還像新娘。我一直安慰自己乞封,他們只是感情好做裙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肃晚,像睡著了一般锚贱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上关串,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天拧廊,我揣著相機(jī)與錄音,去河邊找鬼晋修。 笑死吧碾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飞蚓。 我是一名探鬼主播滤港,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了溅漾?” 一聲冷哼從身側(cè)響起山叮,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎添履,沒(méi)想到半個(gè)月后屁倔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暮胧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年锐借,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片往衷。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钞翔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出席舍,到底是詐尸還是另有隱情布轿,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布来颤,位于F島的核電站汰扭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏福铅。R本人自食惡果不足惜萝毛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滑黔。 院中可真熱鬧笆包,春花似錦、人聲如沸拷沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撞芍。三九已至,卻和暖如春跨扮,著一層夾襖步出監(jiān)牢的瞬間序无,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工衡创, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帝嗡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓璃氢,卻偏偏與公主長(zhǎng)得像哟玷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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