argparse模块--python模块
argparse模块:
介绍:argparse 模块可以让人轻松编写用户友好的命令行接口;程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数;argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
- ArgumentParser对象
- add_argument()方法
- parse_agrs()方法
开篇示例:
import argparse
parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
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))
示例结果:
$ python3 prog.py --help
usage: prog.py [-h] [-v | -q] x y
calculate X to the power of Y
positional arguments:
x the base
y the exponent
optional arguments:
-h, --help show this help message and exit
-v, --verbose
-q, --quiet
1)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
)
- 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)
示例:
- 创建一个解析器:
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)')
- 解析参数:
parser.parse_args(['--sum', '7', '-1', '42'])
#通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数
2)add_argument()方法:
(说明:定义单个的命令行参数应当如何解析)
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 和 nargs 选择所需求的常数
- default - 当参数未在命令行中出现时使用的值
- type - 命令行参数应当被转换成的类型
- choices - 可用的参数的容器
- required - 此命令行选项是否可省略 (仅选项可用)
- help - 一个此选项作用的简单描述
- metavar - 在使用方法消息中使用的参数值示例
- dest - 被添加到 parse_args() 所返回对象上的属性名
>name or flags:add_argument() 方法必须知道它是否是一个选项
add_argument() 方法必须知道它是否是一个选项
ArgumentParser 对象将命令行参数与动作相关联、
存储被 const 命名参数指定的值
>action:ArgumentParser 对象将命令行参数与动作相关联(例举一些常用action):
-
'store'
- 存储参数的值 -
'store_const'
-存储被 const 命名参数指定的值 -
'store_true'
and'store_false'
- 这些是'store_const'
分别用作存储True
和False
值的特殊用例;它们的默认值分别为False
和True
-
'append'
- 存储一个列表,并且将每个参数值追加到列表中 -
'append_const'
- 这存储一个列表,并将const命名参数指定的值追加到列表中 -
'count'
- 计算一个关键字参数出现的数目或次数 -
'help'
- 打印所有当前解析器中的选项和参数的完整帮助信息,然后退出 -
'version'
- 期望有一个version=
命名参数在 add_argument()调用中,并打印版本信息并在调用后退出 - 'extend'- 它存储一个列表,并将每个参数值扩展到列表
>nargs:ArgumentParser 对象通常关联一个单独的命令行参数到一个单独的被执行的动作:
-
N
(一个整数):命令行中的N
个参数会被聚集到一个列表中 -
'?' :
如果可能的话,会从命令行中消耗一个参数,并产生一个单一项。如果当前没有命令行参数,则会产生 default值;nargs='?'
的一个更普遍用法是允许可选的输入或输出文件 -
'*'
。所有当前命令行参数被聚集到一个列表中。注意通过nargs='*'
来实现多个位置参数通常没有意义,但是多个选项是可能的 -
'+'
。和'*'
类似,所有当前命令行参数被聚集到一个列表中。另外,当前没有至少一个命令行参数时会产生一个错误信息 -
argarse.REMAINDER
。所有剩余的命令行参数被聚集到一个列表中
3)parse_agrs()方法:
(说明:获取解析的参数,返回一个对象)
ArgumentParser.
parse_args
(
args = None,
namespace = None
)
- arg:要解析的字符串列表。默认值取自 sys.argv
- namespace:带有属性的对象。默认值为一个新的空 Namespace对象
argparse入门教程:https://docs.python.org/zh-cn/3/howto/argparse.html?highlight=argparse
argparse模块详细教程:https://docs.python.org/3/library/argparse.html#example
上一篇: python模块_re模块