argparse
argparse是python内置的用于命令选项与参数解析的模块,通过在程序中定义好的需要的参数将从sys.argv中解析出这些参数,并自动生成帮助和使用信息。
argparse使用
- 创建ArgumentParser()对象
- 调用add_argument()方法添加参数
- 使用parse_args()解析添加的参数
创建解释器ArgumentParser对象:class 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)
- prog: 程序名,在help信息中描述程序的名称
- usage: 描述程序用途的字符串
- description: help信息前显示的信息
- epilog: help信息之后显示的信息
- parents: 由ArgumentParser对象组成列表,它们的arguments选项会被包含新的ArgumenetParser对象中
- formatter_class: help信息输出的格式,为了美观
- prefix_chars: 参数前缀,默认为‘-’
- fromfile_prefix_chars: 前缀字符,放在文件名之前当参数过多的时候可以从文件中读入
1
with open('args.txt','w') as fp:
2
fp.write('-f\nbar')
3
parser=argparse.ArgumentParser(fromfile_prefix_chars='@')
4
parser.add_argument('-f')
5
parser.parse_args(['@args.txt'])
- conflict_handler:解决冲突的策略,默认情况下冲突会发生错误
- argument_default:(default: None)设置一个全局的选项的缺省值,一般每个选项单独设置
- add_help :是否增加-h/-help选项 (默认为True),一般help信息都是必须的。设为False时,help信息里面不再显示-h –help信息
add_argument()添加参数选项:ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
- name or flags:参数有两种,可选参数和位置参数
1.添加可选参数
1 | parser.add_argument('-f','--foo') |
2.添加位置参数
1 | parser.add_argument('bar') |
example:
1 | parser = argparse.ArgumentParser() |
2 | parser.add_argument('name') |
3 | parser.add_argument('-a','--age') |
4 | parser.parse_args(['xiaoming']) |
5 | parser.parse_args(['jusene','-a','123']) |
- action: 默认为store
1.store_const: 值存放在const中
1 | parser = argparse.ArgumentParser() |
2 | parser.add_argument('--foo',action='store_const',const=42) |
3 | parser.parse_args(['--foo']) |
2.store_true和store_false: 值存为True和False
1 | parser = argparser.ArgumentParser() |
2 | parser.add_argument('-x',action='store_true') |
3 | parser.add_argument('-y',action='store_false') |
4 | parser.add_argument('-z',action='store_false') |
5 | parser.parse_args('-x -y'.split()) |
3.append: 存为列表,可以有多个参数
1 | parser = argparse.ArgumentParser() |
2 | parser.add_argument('-a',action='append') |
3 | parser.parse_args('-a 1 -a 2'.split()) |
4.append_const: 存为列表,会根据const关键参数进行添加
1 | parser = argparse.ArgumentParser() |
2 | parser.add_argument('-s',dest='digist',action='append_const',const='test') |
3 | parser.parse_args('-s -s'.split()) |
5.count: 统计参数出现的次数
1 | parser = argparser.ArgumentParser() |
2 | parser.add_argument('-c'.'--count',action='count') |
3 | parser.parse_args('-cccc'.split()) |
6.version: 版本
1 | parser = argparse.ArgumentParser() |
2 | parser.add_argument('--version',action='version',version='version 2.0') |
3 | parser.parser_args(['--version']) |
- nargs: 参数的数量
1.值可以为整数N(N个),*(任意多个,可以为0个),+(1个或多个),有点像正则
1 | parser = argpar.ArgumentParser() |
2 | parser.add_argument('-x',nargs="*") |
3 | parser.add_argument('-y',nargs="+") |
4 | parser.add_argument('-z',nargs=2) |
5 | parser.parse_args(['-x 1 2 3 -y 1 -z 2']) |
2.值为?时,首先从命令行获得参数,如果没有参数,则从const中取值,如果没有选项,则从default中取值
1 | parser = argparse.ArgumentParser() |
2 | parser.add_argument('-x',nargs='?',const='const',default='default') |
- const: 保存一个常量
- default: 默认值
- type: 参数类型,默认为str
- choices: 设置参数值的范围,如果choices中的类型不是字符串,记得指定type
- required: 该选项是否必选,默认为True
- dest: 参数名