argparse库简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import argparse

# 参考文档:https://docs.python.org/zh-cn/3/library/argparse.html#argparse.ArgumentParser
# 创建一个ArgumentParser对象
# ArgumentParser对象将命令行解析成python数据所需的全部信息

# parser = argparse.ArgumentParser(description='process some integers.')

# 添加参数
# 给一个ArgumentParser添加程序参数信息是通过调用add_argument方法完成的,通常,这些调用指定ArgumentParser
# 如何获取明明行字符串并将其转换为对象,这些信息再parse_args()调用时被存储和使用,例如
# 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)')
# 调用parse_args()将返回一个具有integers和accumulate两个属性的对象。integers属性将是一个包含一个或多个整数的列表,而accumulate属性
# 当命令行中指定了--sum参数时将是sum()函数,否则则是max()函数

# 解析参数
# ArgumentParser通过parse_args()方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用响应的操作,在大多数情况下,这意味着
# 一个简单的Namespace对象将从命令行参数中解析出的属性构建:
# args = parser.parse_args()
# 在脚本中,通常parse_args()会被不带参数调用,而ArgumentParser将自动从sys.argv中确定命令行参数

# ArgumentParser对象
# 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, allow_abbrev=True, exit_on_error=True)
# 创建一个新的ArgumentParser 对象,所有的参数都应当作为关键字参数传入。每个参数的描述如下:
# prog-程序的名称(默认是sys.argv[0])
# usage-描述程序用途的字符串(默认值:从添加到解析器的参数生成)
# description-在参数帮助文档之前显示的文本(默认无)
# epilog-在参数帮助文档之后显示的文档(默认无)
# parents-一个ArgumentParser对象的列表,他们的参数也应包含在内
# formatter_class-用于自定义帮助文档输出格式的类
# prefix_chars-可选参数的前缀字符集合(默认值:'-')
# fromfile_prefix_chars-当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
# argument_default-参数的全局默认值(默认值:None)
# conflict_handler-解决冲突选项的策略(通常时不必要的)
# add_help-为解析器添加一个 -h/--help选项(默认值:True)
# allow_abbrev-如果缩写是无歧义的,则允许缩写长选项(默认值:True)
# exit_on_error-决定当错误发生时是否让ArgumentParser附带错误信息推出(默认值:True)’

# add_arguments()方法
# ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
# 定义单个的命令行参数应当如何解析:
# name or flags-一个命名或者一个选项字符串的列表,例如foo或-f,--foo
# action-当参数在命令行中出现时使用的动作基本类型
# nargs-命令行参数应当消耗的数目
# const-被一些action和nrgs选择所需求的常熟
# default-当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值
# type-命令行参数应当被转换成的类型
# choices-可用参数的容器
# required-此命令行选项是否可忽略(仅选项可用)
# help-一个此选项作用的简单描述
# metavar-在使用方法消息中使用的参数示例
# dest-被添加到parse_args()所返回对象上的属性名

parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_const', const=42)
parser.parse_args(['--foo'])