介绍:argparse 模块可以让人轻松编写用户友好的命令行接口;程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数;argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
开篇示例:
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
)
示例:
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:add_argument() 方法必须知道它是否是一个选项
add_argument() 方法必须知道它是否是一个选项
ArgumentParser 对象将命令行参数与动作相关联、
存储被 const 命名参数指定的值
>action:ArgumentParser 对象将命令行参数与动作相关联(例举一些常用action):
'store'
- 存储参数的值'store_const'
-存储被 const 命名参数指定的值'store_true'
and 'store_false'
- 这些是 'store_const'
分别用作存储 True
和 False
值的特殊用例;它们的默认值分别为 True 和 False'append'
- 存储一个列表,并且将每个参数值追加到列表中'append_const'
- 这存储一个列表,并将const命名参数指定的值追加到列表中'count'
- 计算一个关键字参数出现的数目或次数'help'
- 打印所有当前解析器中的选项和参数的完整帮助信息,然后退出'version'
- 期望有一个 version=
命名参数在 add_argument()调用中,并打印版本信息并在调用后退出>nargs:ArgumentParser 对象通常关联一个单独的命令行参数到一个单独的被执行的动作:
N
(一个整数):命令行中的 N
个参数会被聚集到一个列表中'?' :
如果可能的话,会从命令行中消耗一个参数,并产生一个单一项。如果当前没有命令行参数,则会产生 default值;nargs='?'
的一个更普遍用法是允许可选的输入或输出文件'*'
。所有当前命令行参数被聚集到一个列表中。注意通过 nargs='*'
来实现多个位置参数通常没有意义,但是多个选项是可能的'+'
。和 '*'
类似,所有当前命令行参数被聚集到一个列表中。另外,当前没有至少一个命令行参数时会产生一个错误信息argarse.REMAINDER
。所有剩余的命令行参数被聚集到一个列表中
3)parse_agrs()方法:
(说明:获取解析的参数,返回一个对象)
ArgumentParser.
parse_args
(
args = None,
namespace = None
)
argparse入门教程:https://docs.python.org/zh-cn/3/howto/argparse.html?highlight=argparse
argparse模块详细教程:https://docs.python.org/3/library/argparse.html#example