前言
在第一篇“初探 argparse”的文章中,我们初步掌握了使用 argparse
的四部曲,对它有了一个基本的体感。 但是它具体支持哪些类型的参数?这些参数该如何配置?本文将带你深入了解 argparse
的参数们。
本系列文章默认使用 Python 3 作为解释器进行讲解。
若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~
复制代码
参数动作
你是否还记得?在上一篇四部曲中的第二步是定义参数,在这个步骤中,我们指定了 action
入参:
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the nums (default: find the max)')
复制代码
那么这里面的 action
,也就是 参数动作
,究竟是用来做什么的呢?
想象一下,当我们在命令行输入一串参数后,对于不同类型的参数是希望做不同的处理的。 那么 参数动作
其实就是告诉解析器,我们希望对应的参数该被如何处理。比如,参数值是该被存成一个值呢,还是追加到一个列表中?是当成布尔的 True 呢,还是 False?
参数动作
被分成了如下 8 个类别:
store
—— 保存参数的值,这是默认的参数动作。它通常用于给一个参数指定值,如指定名字:
>>> parser.add_argument('--name')
>>> parser.parse_args(['--name', 'Eric'])
Namespace(name='Eric')
复制代码
store_const
—— 保存被const
命名的固定值。当我们想通过是否给定参数来起到标志的作用,给定就取某个值,就可以使用该参数动作,如:
>>> parser.add_argument('--sum', action='store_const', const=sum)
>>> parser.parse_args(['--sum'])
Namespace(sum=<built-in function sum>)
>>> parser.parse_args([])
Namespace(sum=None)
复制代码
store_true
和store_false
—— 是store_const
的特殊情况,用来分别保存 True 和 False。如果为指定参数,则其默认值分别为 False 和 True,如:
>>> parser.add_argument('--use', action='store_true')
>>> parser.add_argument('--nouse', action='store_false')
>>> parser.parse_args(['--use', '--nouse'])
Namespace(nouse=False, use=True)
>>> parser.parse_args([])
Namespace(nouse=True, use=False)
复制代码
append
—— 将参数值追加保存到一个列表中。它常常用于命令行中允许多个相同选项,如:
>>> parser.add_argument('--file', action='append')
>>> parser.parse_args(['