日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python入門:argparse淺析 nargs='+'作用

瀏覽:44日期:2022-07-17 18:03:10

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

#aaa.py#version 3.5import os #這句是沒(méi)用了,不知道為什么markdown在編輯代碼時(shí),不加這一句,就不能顯示代碼高亮[汗]import argparseparser = argparse.ArgumentParser(description=’Process some integers...’) #初始化一個(gè)分析器#parser.add_argument(中的參數(shù))#__init__(self, option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)parser.add_argument(’integers’,metavar=’N’,type=int,nargs=’+’, help=’an integer for the accumulator’) #這是一個(gè)添加【位置參數(shù)】 #第一個(gè)參數(shù)是自定義的參數(shù)名,在代碼中用來(lái)計(jì)算的(parser.parse_args().integers*2) parser.add_argument(’--sum’,dest=’accumulate’,action=’store_const’, const=sum,default=max, help=’sum the integers(default:find the max)’) #這是一個(gè)添加【可選參數(shù)】 #第一個(gè)參數(shù)是自定義的參數(shù)【在代碼中的使用parser.parse_args().sum】【在系統(tǒng)命令行中的使用:>python aaa.py --sum args = parser.parse_args()print(args) #Namespace(accumulate=<built-in function sum>, integers2=[1, 2, 3, 4])print(args.integers) #integers要與上面的對(duì)應(yīng)print(args.accumulate(args.integers)) #accumulate要與上面的對(duì)應(yīng)

import argparsedef infer(args): for img in args.imgs: print('n=== {} ==='.format(img))if __name__ == ’__main__’: parser = argparse.ArgumentParser() parser.add_argument(’--imgs’,type=str,nargs=’+’) args = parser.parse_args() infer(args)

結(jié)果

python入門:argparse淺析 nargs=

補(bǔ)充知識(shí):argparse解析命令行參數(shù)

argparse簡(jiǎn)介:

在argparse中,最常用的就是上述三部分了:創(chuàng)建一個(gè)ArgumentParser對(duì)象;使用add_argument()方法來(lái)為創(chuàng)建的ArgumentParser對(duì)象添加argument的解析規(guī)則;最后調(diào)用parse_args()來(lái)解析傳入的內(nèi)容,依據(jù)的是第二步制定的規(guī)則,生成的是一個(gè)Namespace對(duì)象,若未傳參數(shù)給parse_args(),那么默認(rèn)從sys.argv來(lái)獲取命令行入?yún)ⅰ?/p>

創(chuàng)建一個(gè)ArgumentParser:

函數(shù)原型為:

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)

1、prog:程序的名字,默認(rèn)是argv[0]。若設(shè)置,則在幫助信息中,可以使用%(prog)s來(lái)作為格式化的引用(修改一處全局受用)。

2、usage:幫助信息的usage字段,描述程序的各種用法,默認(rèn)情況下會(huì)依據(jù)add_argument()來(lái)自動(dòng)生成。

3、description:一個(gè)簡(jiǎn)單描述程序主要干啥以及怎么用的字符段,默認(rèn)為空。

4、epilog:optional arguments字符段之后的字符段,默認(rèn)為空。

5、parents:繼承的父parser,為了避免一些公共的內(nèi)容重復(fù)定義,父parser在初始化時(shí)會(huì)設(shè)置add_help=False,這是為了防止出現(xiàn)父與子parser的-h沖突而拋出異常。

6、formatter_class:對(duì)于help輸出進(jìn)行格式化,除了輸出的樣式外,如果設(shè)置為ArgumentDefaultsHelpFormatter,則會(huì)自動(dòng)在help輸出中添加已定義的default值。

7、prefix_chars:options前的字符,默認(rèn)為’-’,可以添加其他字符,如’-+’,但是如果沒(méi)有包括’-’,那么對(duì)應(yīng)的option如’-h’就無(wú)法解析。

8、fromfile_prefix_chars:有時(shí)會(huì)使用文件給parse_args()傳入?yún)?shù),為了能夠識(shí)別文件字符串,如'demo.txt',需要設(shè)置此值,如'@',那么所有以此字符為開頭的字符串都被當(dāng)作是文件,所以傳給parse_args()的參數(shù)應(yīng)該是@demo.txt。在該文件中,一行只能有一個(gè)參數(shù)。如文件中的’-fnbar’會(huì)被解析成[’-f’,’bar’]。

9、argument_default:一般情況下,默認(rèn)值使用add_argument()來(lái)添加,或者使用set_defaults()設(shè)置一些鍵值對(duì)來(lái)添加。剩下一種情況就是設(shè)置此項(xiàng)(此處沒(méi)看明白是咋回事)。

10、conflict_handler:解決在add_argument()階段有沖突的option的依據(jù)策略,默認(rèn)為error即拋出異常。一般情況下遇到?jīng)_突是拋出異常即可,但是如果設(shè)置了parents,那么需要重寫父parser中的規(guī)則的時(shí)候,就需要將此項(xiàng)設(shè)置為resolve,但是重寫是精確匹配的,如老規(guī)則定義了-h/--help,重寫了-h,那么--help還是老規(guī)則。

11、add_help:是否添加-h/--helpoption,默認(rèn)為True。為False時(shí),是要做parent(其實(shí)可以設(shè)置子Parser重寫)。默認(rèn)是-h/--help,若prefix_chars中沒(méi)有包含’-’,那么就以其中第一個(gè)字符作為代替。

調(diào)用add_argument()添加解析規(guī)則:

函數(shù)原型:

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

1、name or flags:是位置參數(shù),則需要傳入名字;要是可選參數(shù),則需要進(jìn)行定義,如’-f’,’--foo’。

2、action:定義傳入的參數(shù)如何處理。

action=’store’,默認(rèn)取值,保存?zhèn)魅雲(yún)?shù)。

action=’store_const’,需要添加const,意味著該argument的值不從命令行輸入,而是取const的值。

action=’store_true’ or action=’store_false’,’store_const’的特殊情形,意味著const的值為True或False。

action=’append’,表示傳入的值會(huì)作為一個(gè)列表的一項(xiàng),意味著option可以在命令行中多次出現(xiàn)。

action=’append_const’,傳入列表的項(xiàng)由const定義,通常用在需要多個(gè)argument將值傳入一個(gè)列表中的場(chǎng)景。

action=’count’,輸出argument出現(xiàn)的次數(shù)。

action=’help’,已默認(rèn)添加。

action=’version’,需要定義version,使用時(shí)輸出版本信息并退出。

自定義,通過(guò)定義一個(gè)argparse.Action子類來(lái)實(shí)現(xiàn)。實(shí)際上,上面的這些可選項(xiàng)都是通過(guò)這種形式定義的。

3、nargs:ArgumentParser對(duì)象通常將一個(gè)動(dòng)作與一個(gè)命令行參數(shù)關(guān)聯(lián)。nargs關(guān)鍵字參數(shù)將一個(gè)動(dòng)作與不同數(shù)目的命令行參數(shù)關(guān)聯(lián)在一起:

nargs=N,一個(gè)選項(xiàng)后可以跟多個(gè)參數(shù)(action=’append’時(shí),依然是一個(gè)選項(xiàng)后跟一個(gè)參數(shù),只不過(guò)選項(xiàng)可以多次出現(xiàn)),參數(shù)的個(gè)數(shù)必須為N的值,這些參數(shù)會(huì)生成一個(gè)列表,當(dāng)nargs=1時(shí),會(huì)生成一個(gè)長(zhǎng)度為1的列表。

nargs=?,如果沒(méi)有在命令行中出現(xiàn)對(duì)應(yīng)的項(xiàng),則給對(duì)應(yīng)的項(xiàng)賦值為default。特殊的是,對(duì)于可選項(xiàng),如果命令行中出現(xiàn)了此可選項(xiàng),但是之后沒(méi)有跟隨賦值參數(shù),則此時(shí)給此可選項(xiàng)并不是賦值default的值,而是賦值const的值。

nargs=*,和N類似,但是沒(méi)有規(guī)定列表長(zhǎng)度。

nargs=+,和*類似,但是給對(duì)應(yīng)的項(xiàng)當(dāng)沒(méi)有傳入?yún)?shù)時(shí),會(huì)報(bào)錯(cuò)error: too few arguments。

nargs=argparse.REMAINDER,所有剩余的參數(shù),均轉(zhuǎn)化為一個(gè)列表賦值給此項(xiàng),通常用此方法來(lái)將剩余的參數(shù)傳入另一個(gè)parser進(jìn)行解析。如果nargs沒(méi)有定義,則可傳入?yún)?shù)的數(shù)量由action決定,通常情況下為一個(gè),并且不會(huì)生成長(zhǎng)度為一的列表。

4、const,一種是定義action=’store_const’或action=’append_const’時(shí)使用。一種是定義nargs=’?’時(shí),可選項(xiàng)出現(xiàn)在命令行中,但之后并沒(méi)有跟隨賦值的參數(shù),作為默認(rèn)值傳給此可選項(xiàng)。

5、default:默認(rèn)值。

如果是一個(gè)字符串,那么Parser解析的時(shí)候會(huì)將它作為命令行傳入值,使用type的值來(lái)進(jìn)行轉(zhuǎn)換類型,但是如果不是的話,就會(huì)使用定義的值而不進(jìn)行類型轉(zhuǎn)換。如果設(shè)置了nargs=’?’或nargs=’*’,那么當(dāng)沒(méi)有參數(shù)賦值給該項(xiàng)時(shí),會(huì)使用default定義的值。

而default=argparse.SUPPRESS時(shí),則表示命令行中未出現(xiàn)某一項(xiàng)時(shí),不會(huì)對(duì)它進(jìn)行默認(rèn)賦值。

6、type:用于類型檢查和類型轉(zhuǎn)換。

使用FileType可簡(jiǎn)化對(duì)文件的操作。還可以自定義函數(shù),輸入是一個(gè)字符串,輸出是轉(zhuǎn)換后的字符串。當(dāng)設(shè)置choices的時(shí),類型檢查會(huì)變得容易,因?yàn)橹恍枰谝粋€(gè)范圍內(nèi)比較即可。

7、choices:給定了取值范圍,超出會(huì)報(bào)錯(cuò)。

當(dāng)type也有定義時(shí),會(huì)先使用type進(jìn)行類型檢查,所以choices中的取值必須符合type的定義,否則在parse_args()時(shí)會(huì)報(bào)錯(cuò)。任何支持in操作符的均可作為choices的賦值,所以字典,列表,集合,等等其他容器均都支持。

8、required:默認(rèn)情況下,可選項(xiàng)(前面有’-’)被認(rèn)為并不一定需要出現(xiàn)在命令行參數(shù)中,但是如果設(shè)置了required=True的話,則必須出現(xiàn)。此類設(shè)置違背人的常識(shí),應(yīng)避免使用。

9、help:幫助信息。

之前提到的%(prog)s可用于此處程序名的格式化,此外,還有%(default)s格式化default的值,%(type)s格式化type的值。

設(shè)置為argparse.SUPPRESS可不顯示幫助信息。

10、metavar:在Parser生成幫助信息時(shí),需要有字符代表需要傳入的值。(這一段和dest相同,使用的就是dest的值)如果是位置參數(shù),則用它本身代替;如果是可選參數(shù),則使用它的大寫來(lái)代替。使用metavar可替換默認(rèn)的字符。

11、dest:大部分的選項(xiàng)都需要通過(guò)命令行來(lái)給其賦值,這些值的名字通過(guò)dest來(lái)定義,默認(rèn)的規(guī)則如同metavar中所述。

調(diào)用parse_args()解析

函數(shù)原型:

ArgumentParser.parse_args(args=None, namespace=None)

將args轉(zhuǎn)換為namespace對(duì)象的一個(gè)值。默認(rèn)情況下,sys.argv賦值給args,一個(gè)空的Namespace對(duì)象會(huì)被創(chuàng)建。解析時(shí),會(huì)對(duì)傳入的參數(shù)進(jìn)行檢查,若不符合要求就會(huì)報(bào)錯(cuò)。一般情況下,會(huì)自動(dòng)判斷傳入的值到底是一個(gè)可選參數(shù),還是一個(gè)負(fù)數(shù)(都用’-’開頭)。但有時(shí)位置參數(shù)的值必須是一個(gè)’-’開頭的值,如’-f’,那么使用parser.parse_args([’--’, ’-f’]),’--’代表后續(xù)的所有傳入值都需要看做是位置參數(shù)。parse_args()會(huì)返回填充好的Namespace對(duì)象

實(shí)例:

以faster rcnn代碼中的命令行解析為例:

#coding=utf-8import argparseimport sys def parse_args(): parser = argparse.ArgumentParser(description=’Train a Fast R-CNN network’) parser.add_argument(’--cfg’, dest=’cfg_file’,help=’optional config file’,default=None, type=str) parser.add_argument(’--weight’, dest=’weight’,help=’initialize with pretrained model weights’,type=str) parser.add_argument(’--imdb’, dest=’imdb_name’,help=’dataset to train on’,default=’voc_2007_trainval’, type=str) parser.add_argument(’--imdbval’, dest=’imdbval_name’,help=’dataset to validate on’,default=’voc_2007_test’, type=str) parser.add_argument(’--iters’, dest=’max_iters’,help=’number of iterations to train’,default=70000, type=int) parser.add_argument(’--tag’, dest=’tag’,help=’tag of the model’,default=None, type=str) parser.add_argument(’--net’, dest=’net’,help=’vgg16, res50, res101, res152, mobile’,default=’res50’, type=str) parser.add_argument(’--set’, dest=’set_cfgs’,help=’set config keys’, default=None,nargs=argparse.REMAINDER) if len(sys.argv) == 1: parser.print_help() sys.exit(1) args = parser.parse_args() return args if __name__ == ’__main__’: args = parse_args() print(args)

將以上代碼保存為test.py,然后在命令行輸入:python test.py

結(jié)果為:

usage: test.py [-h] [--cfg CFG_FILE] [--weight WEIGHT] [--imdb IMDB_NAME] [--imdbval IMDBVAL_NAME] [--iters MAX_ITERS] [--tag TAG] [--net NET] [--set ...]Train a Fast R-CNN networkoptional arguments: -h, --help show this help message and exit --cfg CFG_FILE optional config file --weight WEIGHT initialize with pretrained model weights --imdb IMDB_NAME dataset to train on --imdbval IMDBVAL_NAME dataset to validate on --iters MAX_ITERS number of iterations to train --tag TAG tag of the model --net NET vgg16, res50, res101, res152, mobile --set ... set config keys

在命令行輸入:

python test.py --weight data/imagenet_weights/vgg16.ckpt --imdb voc_2007_trainval --imdbval voc_2007_test --iters 7000 --cfg experiments/cfgs/vgg16.yml --net vgg16 --set ANCHOR_SCALES '[8,16,32]' ANCHOR_RATIOS '[0.5,1,2]' TRAIN.STEPSIZE '[50000]'

結(jié)果為:

Namespace(cfg_file=’experiments/cfgs/vgg16.yml’,imdb_name=’voc_2007_trainval’,imdbval_name=’voc_2007_test’, max_iters=7000, net=’vgg16’, set_cfgs=[’ANCHOR_SCALES’, ’[8,16,32]’, ’ANCHOR_RATIOS’, ’[0.5,1,2]’, ’TRAIN.STEPSIZE’, ’[50000]’], tag=None, weight=’data/imagenet_weights/vgg16.ckpt’)

以上這篇python入門:argparse淺析 nargs=’+’作用就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本不卡免费高清视频在线| 久久99精品久久久野外观看| 国产精品第一国产精品| 蜜桃久久av一区| 日韩午夜av在线| 在线观看免费一区二区| 好看不卡的中文字幕| 午夜久久影院| 亚洲一区不卡| 色综合视频一区二区三区日韩| 免费在线观看视频一区| 一区二区电影在线观看| 亚洲欧洲免费| 亚洲精品一级| 99re国产精品| 国产亚洲一区在线| 丝瓜av网站精品一区二区| 视频一区二区欧美| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜在线精品| 在线国产精品一区| 日本h片久久| 国产精品久久久久久模特 | 日本美女一区| 久久久久蜜桃| 亚洲大全视频| 九九在线精品| 香蕉久久久久久久av网站| 中文一区一区三区免费在线观 | 日韩中文字幕不卡| 中文不卡在线| 国产欧美日韩一区二区三区四区| 国产精品va视频| 狠狠躁少妇一区二区三区| 日韩久久精品网| 欧美1区2区3区| 男女精品网站| 日本久久二区| 国产九一精品| 日韩av不卡一区二区| 国产精品多人| 日韩电影免费网站| 亚洲中字黄色| 久久国内精品自在自线400部| 精品国产91| 最新国产拍偷乱拍精品| 日本精品久久| 日韩大片在线播放| 中文亚洲免费| 欧美日韩午夜电影网| 国产一区二区三区成人欧美日韩在线观看 | 欧美13videosex性极品| 亚洲免费高清| 欧美天堂一区二区| 欧美国产美女| 欧美中文字幕| 美女性感视频久久| 在线看片不卡| 久久激情av| 91精品蜜臀一区二区三区在线 | 欧美亚洲国产日韩| 久久免费精品| 欧美日韩国产一区二区三区不卡| 日韩精品一区二区三区中文字幕| 国产中文字幕一区二区三区| 亚洲精华国产欧美| 久久麻豆视频| 在线综合亚洲| 成人在线观看免费视频| 欧美一区=区| 成人高清一区| 亚洲精选91| 日本欧美国产| 深夜日韩欧美| 久久麻豆精品| 国产经典一区| 亚洲一级黄色| 国产精品videossex| av亚洲免费| 欧美国产免费| 亚洲专区欧美专区| 国内在线观看一区二区三区 | 欧美久久天堂| 日本不卡的三区四区五区| av资源亚洲| 欧美天堂一区| 99国产精品| 国产传媒av在线| 欧美在线91| 狠狠操综合网| 国产日韩欧美三级| 99热免费精品| 中文字幕一区久| 国产精品久久久久久久久久齐齐 | 国产资源在线观看入口av| 一本综合精品| 婷婷激情久久| 国产 日韩 欧美 综合 一区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产白浆在线免费观看| 日韩精品免费观看视频| 九一国产精品| 国产成人在线中文字幕| 欧美日韩91| 免费在线观看日韩欧美| 91精品国产乱码久久久久久久 | 欧美在线精品一区| 99热免费精品| 日韩美女一区二区三区在线观看| 国产日韩欧美三区| 亚洲一区二区免费在线观看| 99久久久久国产精品| 里番精品3d一二三区| 日本麻豆一区二区三区视频| 免费高清在线一区| 亚洲91精品| 91av亚洲| 国产精品精品| 日韩国产在线观看| 亚洲日韩中文字幕一区| 亚洲成人精选| 久久精品国产68国产精品亚洲| 国产一区二区三区四区五区 | 午夜影院一区| 欧美国产日本| 亚洲免费成人av在线| 国产精品毛片在线| 91成人精品视频| 99久久精品网站| 久久精品欧美一区| 日韩国产欧美一区二区| 激情黄产视频在线免费观看| 成人亚洲一区| 高清一区二区| 久色成人在线| 蜜臀国产一区二区三区在线播放| 91亚洲国产高清| 精品国产黄a∨片高清在线| 欧美成人精品一级| 国产精品久久久久久久久久齐齐| 日韩在线播放一区二区| 免费精品视频| 视频一区在线视频| 亚洲综合福利| 日本aⅴ亚洲精品中文乱码| 日韩欧美久久| 91成人精品在线| 国产欧美69| 国产精品美女久久久久久不卡| 欧美欧美黄在线二区| 国产欧美日韩精品一区二区免费| 日韩不卡手机在线v区| 欧美中文高清| 久久的色偷偷| 久久中文精品| 久久尤物视频| www.com.cn成人| 亚洲福利一区| 首页欧美精品中文字幕| 色婷婷成人网| 国产欧美高清| 91中文字幕精品永久在线| 亚洲成人一区在线观看| 尤物在线精品| 日韩一区二区三区免费视频| 69精品国产久热在线观看| 久久成人高清| 欧美香蕉视频| 亚洲一卡久久| 欧美精品三级在线| 国产精品a级| 久久国产日本精品| 亚洲精品婷婷| 国产精品久久久久久久久久10秀| 一区在线视频观看| 国产欧美69| 久久高清精品| 日韩精品免费视频人成| 国产黄大片在线观看| 麻豆9191精品国产| 久久精品国产福利| 亚洲欧美激情诱惑| 精品入口麻豆88视频| 国产视频久久| 精品视频在线一区二区在线| 欧美丝袜一区| 国产乱码精品一区二区亚洲| 久久久久国产一区二区| 日韩精品中文字幕吗一区二区 | 丝袜亚洲另类欧美| 色8久久久久| 9999国产精品| 神马久久午夜| 蜜臀精品一区二区三区在线观看| 美美哒免费高清在线观看视频一区二区| 国产精品伦一区二区| 综合日韩av| 亚洲欧美日韩高清在线| 亚洲欧美专区| 丰满少妇一区|