Python Lib -- Argparse 命令行參數(shù)解析

How to -- argparse

步驟:

import argparse
# 收集命令行參數(shù)信息
parser = argparse.ArgumentParser(description="calculate X to the power of Y")
# 添加參數(shù)
parser.add_argument("x", type=int, help="the base")
# 返回已解析的參數(shù)
args = parser.parse_args()
print(args.x)

實(shí)例:

import argparse

parser = argparse.ArgumentParser(description="calculate X to the power of Y")

# 創(chuàng)建命令行參數(shù)組,兩個(gè)參數(shù)互相排斥 [-v | -q]
group = parser.add_mutually_exclusive_group()
# 以 - 和 -- 命名的參數(shù)是,可選參數(shù)
# action="store_true" 表示當(dāng)該可選參數(shù)出現(xiàn)時(shí)抗悍,它的值為 True 瞎领,否則,F(xiàn)alse
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")

# 不以連接符開頭的參數(shù)為必須參數(shù)(位置參數(shù)) (require argument)
# type=int , 將值轉(zhuǎn)換為 int 類型,默認(rèn)為 string
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")

# 解析參數(shù),將命令行參數(shù)作為 args 的屬性, args.verbose
args = parser.parse_args()

# 以下是獲取已解析的命令行參數(shù)
answer = args.x**args.y

if args.quiet:
    print(answer)
elif args.verbose:
    print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
    print("{}^{} == {}".format(args.x, args.y, answer))
arg.py

argparse 會(huì)自動(dòng)生成 -h --help 及其他幫助信息

其他

限制參數(shù)的值

# choices:參數(shù) -v 只能是列表中的值
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

統(tǒng)計(jì)參數(shù)出現(xiàn)的次數(shù)

# action='count' 返回參數(shù)出現(xiàn)的次數(shù):-vvv (verbosity=3)
# 可用于顯示信息的詳細(xì)程度
parser.add_argument("-v", "--verbosity", action="count", help="increase output verbosity")

詳細(xì)

https://docs.python.org/3/library/argparse.html#module-argparse

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))
參數(shù)說明

ArgumentParser

ArgumentParser 最常用的參數(shù)是:description

parser = argparse.ArgumentParser(description='Process some integers.')

add_augmemt

add_augment 用來定義如何解析一個(gè)參數(shù)
它接受的第一個(gè)位置參數(shù)是 name / flag:

  • 'integers' :name
  • '-v, --verbose' :flag

執(zhí)行 args = parser.parse_args() 以上參數(shù)的值可以通過 args.integers 搏嗡, args.verbose 獲取拉一;

  • 可以通過參數(shù) dest=sum 來表示該參數(shù)的值通過 args.sum 獲炔珊小;
  • 默認(rèn)蔚润,name / flag 也會(huì)顯示在幫助信息中磅氨,可以通過 metavar 修改

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

Define how a single command-line argument should be parsed. Each parameter has its own more detailed description below, but in short they are:

  • name or flags - Either a name or a list of option strings, e.g. foo or -f, --foo.
  • action - The basic type of action to be taken when this argument is encountered at the command line.
  • nargs - The number of command-line arguments that should be consumed.
  • const - A constant value required by some action and nargs selections.
  • default - The value produced if the argument is absent from the command line.
  • type - The type to which the command-line argument should be converted.
  • choices - A container of the allowable values for the argument.
  • required - Whether or not the command-line option may be omitted (optionals only).
  • help - A brief description of what the argument does.
  • metavar - A name for the argument in usage messages.
  • dest - The name of the attribute to be added to the object returned by parse_args().

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嫡纠,隨后出現(xiàn)的幾起案子烦租,更是在濱河造成了極大的恐慌,老刑警劉巖除盏,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叉橱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡者蠕,警方通過查閱死者的電腦和手機(jī)窃祝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠢棱,“玉大人锌杀,你說我怎么就攤上這事甩栈⌒合桑” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵量没,是天一觀的道長玉转。 經(jīng)常有香客問我,道長殴蹄,這世上最難降的妖魔是什么究抓? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任猾担,我火速辦了婚禮,結(jié)果婚禮上刺下,老公的妹妹穿的比我還像新娘绑嘹。我一直安慰自己,他們只是感情好橘茉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布工腋。 她就那樣靜靜地躺著,像睡著了一般畅卓。 火紅的嫁衣襯著肌膚如雪擅腰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天翁潘,我揣著相機(jī)與錄音趁冈,去河邊找鬼。 笑死拜马,一個(gè)胖子當(dāng)著我的面吹牛渗勘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俩莽,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呀邢,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了豹绪?” 一聲冷哼從身側(cè)響起价淌,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞒津,沒想到半個(gè)月后蝉衣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巷蚪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年病毡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁柏。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啦膜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淌喻,到底是詐尸還是另有隱情僧家,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布裸删,位于F島的核電站八拱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肌稻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一清蚀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爹谭,春花似錦枷邪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绑洛,卻和暖如春救斑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背真屯。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工脸候, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绑蔫。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓运沦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親配深。 傳聞我的和親對(duì)象是個(gè)殘疾皇子携添,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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