征兵网,Python中argparse模块用法总结-python编程之一,justin

argparse模块的作用是为py文件封装好能够挑选的参数,使他们愈加灵敏丰厚。

1、argparse模块的根底征兵网,Python中argparse模块用法总结-python编程之一,justin

首要介绍一下模块最基本的用法。

运用argparse模块,至少需求运用以下四行代码。

 import argparse # 诗篇大全模块导入
parser=argparse.ArgumentParser()
parser.add_argument("echo") # 导入称号为echo的参数
parser.parse_args() #在履行parse_args()之前,一切追加到指令行的参数都不会收效
print(args.echo) # 最终将传入的参数打印在屏幕上

运转结果是

 $ python3 prog.py
usage: prog.py [-h] echo
prog.py: error: the following arguments are required: echo
$ python3 prog.py --help
usage: prog.py [-h] echo
positional arguments:
echo
optional arguments:
-h, --help show this help message and exit
$ python3 prog.py foo
foo

其间每一行代码的作用为:

  • ArgumentParser 创立解析器
  • add_普通的国际电视剧argument 增加参数挑选项,指定程序能够承受的指令行选项,在上述程序中,可承受的参数称号为echo
  • parser.parse_agrs() 任务令行参数收效,在这儿也能够导入程序所需参数,与程序运转时导入的参数作用相同,如parser.parse_args('foo'.split())。

2、指令中的参数解析

(1) ArgumentParser

创立一个ArgumentParser实例,参数都为要害字参数

class ArgumentParser(prsynctoy中文版og=None, usage=None, description=None, epilog=None, parents=[], for丝瓜matter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_pr征兵网,Python中argparse模块用法总结-python编程之一,justinefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)
  • prog:文件名,默以为sys.argv[0],用于在help信息中描绘程序的称号
  • usage:描绘程序用处的字符串
  • description:help信李小济息前显现的信息
  • epilog:help信息后显现的信息
  • parents:由ArgumentParser目标组成的列表,它们的arguments选项会被包含到新ArgumentParser目标中。类似于承继
  • formatter_class:help信息的输出格局
  • prefix_chars:参数前缀,王瑞儿默以为‘-’
  • fromfile_prefix_chars:前缀字符,放在文件名之前
  • confilct_handler:处理抵触的战略
  • add_help:是否增加-h/-help选项,默以为True。设置为False时,help信息里不再显现-h信息
  • argument_default:设置一个大局的选项的缺省值,一般每个选项独自设置

以上参数中,description会经常用于对程序作一个简略阐明,其他参数不常用,这儿就不再赘述。

(2) add_argument

用于增加程序中的参数

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, t重装系统软件ype][, choices][, required][, help][, metavar][, dest])
  • name or fla征兵网,Python中argparse模块用法总结-python编程之一,justings:参数标签(称号),又分为两种,分别为可选参数和方位参数
 parser.add_argument('-f', '--foo') #增加可选参数
parser.add_argument('bar') # 增加方位参数

parse_args()运转时,默以为‘-’来辩识可选参数,剩余的为方位参数

 >>> parser = argparse.ArgumentParser()
>>> parser.add_argument('name')
>>> parser.add_argument('-a', '--age')
>>> parser.parse_args(['xiaoming'])
Namespace(age=None, name='xiaoming')
>>> parser.parse_args(['xiaoming','-a','123'])
Namespace(age='123', name='xiaoming')
>>> parser.pars征兵网,Python中argparse模块用法总结-python编程之一,justine_args(['-a','123'])
usage: [-h] [-a AGE] name
: error: too few arguments

解析时短少方位参数会报错。

  • action:对当时变量应采纳的动作,默以为store

1) store_const:值寄存在const中

 >>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='store_const', 明日你好const=42)
>>> parser.parse_args('--foo'.split())
Namespace(foo=42)

2) store_true和store_false:值寄存True或False

 >>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-x', action='store_true')
>>> parser.add_argument('-y', action='store_false')
>>> parser.add_argument('-z', action='store_false')
>>> parser.parse_args('-x -y'.split())
Namespace(x=True, y=False, z=True)

3) append:存为列表,能够有多个参数

 >>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--l', action='append')
>>> parser.parse_args('--l 1 --l 2'.split())
Namespace(l=['1', '2'])

4) append_const:存为列表,会依据const要害参数进行增加

 >>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--str', dest='types', action='append_const',
const=str)
>>> parser.add_argument('--int', dest='types', action='append_const',
const=int)
>>> parser.parse_args('--str --int --str --int'.split())
Namespace(l=None, types=[, , , 'int'>])

5) count:计算参数呈现次数

 >>> parser = argparse.Argu男人搞基mentParser()
>>> parser.add_argument('--counte', '-c', action='count')
>>> parser.parse_args('-cccc'.split())
Namespace(counte=4)

6) help:协助信息

7) version: 版别信息

  • metaver:协助信息中显现的参数称号
  • nargs:参数的数量

值能够为整数N(N个)、*(恣意多个,能够为0),+(一个或许更多)

 >>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-x', nargs='*')
>>> parser.add_argument('-y', nargs='*')
>>> parser.add_argument('-z', nargs='*')
>金荷娜>> par曾祥耿ser.parse_args('1 2 -x 3 4 -y 5 6'.split())
Namespace(x=['3', '4'], y=['5', '6'], z=['1', '2'])

值为?时,首要从指令行取得参数,假如有变量名,后边没加参数,从const中取值;如

果征兵网,Python中argparse模块用法总结-python编程之一,justin没有变量名,则从default中取值

 >>> parser = argparse.Argume征兵网,Python中argparse模块用法总结-python编程之一,justinntParser()
>>> parser.add_argument('x', nargs='?',default='default')
>>> parser.add_argument('-y', nargs='?',con西汇农商st='const', default='default')
>>> parser.parse_args('1 -y 2'.split())
Namespace(傻春x='1', y='2')
>>> parser.parse_args('1 -y'.split())
Namespace(x='1', y='const')
>>> parser.parse贾孟昕_args([])
Namespace(x='default', y='default')
  • const:保存一个变量
  • default:默认值
  • type:参数类型,默以为str
  • choices:设置参数值规模,假如choices中的类型不是字符串,需求指定type
  • required:该选项是否必选,默以为True
  • dest:参数名,假如dest参数指定,在程序中有必要以dest中的称号调用参数
 红细胞偏高>>> parser = argparse.ArgumentParser()
>>> parser.add_argument英豪任务('--foo', dest='f_name')
>>> parser.parse_args('--foo XXX'.split())
吴志祥Namespace(f_name='XXX')

示例:

import sys
import argparse
def cmd():
args = argparse.Ar同学录gumentParser(description = 'Personal Information ',epilog =
'Information end ')
args.add_argument("name", type = str, help = "Your name") # 必写特点
args.add_argument("birth", type = str, help = "birthday") # 必写特点
args.add_argument("-r",'--race', type = str, dest = "race", help = u"民族") #可
选特点
args.add_argument("-a", "--age", type = int, dest = "age", help = "Your age",
default = 0, choices=range(150)) #可选特点,默以为0,规模为(0,150)
args.add_argument('-g',"--gender", type = str, dest = "gender", help 美尼尔综合征= 'Your
gender', default = 'male', choices=['male', 'female']) #可选特点,默以为
male
args.add_argument("-p","--parent",type = str, dest = 'parent', help = "Your
parent", default = "None", nargs = '*') #可选特点,默以为None,指令行-
p后可接多个参数
args.add_argument("-o","--other", type = str, dest = 'other', help = "other
Information",required = False,nargs = '*')#可选特点,指令行-o后可接多个
参数
args = args.parse_args()#回来一个命名空间,假如想要运用变量,可用args.a征兵网,Python中argparse模块用法总结-python编程之一,justinttr
print( "argparse.args=",args,type(args))
print( 'name = %s'%args.name)
d = args.__dict__
for key,value in d.iteritems():
print '%s = %s'%(key,value)
if __name__=="__main__":
cmd()

Reference

https://blog.csdn.net/lis_12/article/details/54618868

https://www.cnblogs.com/piperck/p/8446580.html

https://blog.csdn.net/yuyushikuan/article/details/79729660

转载原创文章请注明,转载自188bet金博宝_188宝金博备用网址_金博宝网站,原文地址:http://www.jcwbuy.com/articles/289.html

上一篇:可爱的网名,我国中期4月18日盘中涨幅达5%,describe

下一篇:学园奶爸,狙击珍珠港日本有一件事不敢做:大将命令撤离,1小时都别耽搁,权御天下