14.1.4.1 参数动作
遇到一个参数时会触发6个内置动作。
store:保存值,可能首先要将值转换为一个不同的类型(可选)。如果没有显式指定任何动作,这将是默认动作。
store_const:保存参数规范中定义的一个值,而不是来自所解析参数的一个值。这通常用于实现非布尔值的命令行标志。
store_true/store_false:保存适当的布尔值。这些动作用于实现Boolean分支语句。
append:将值保存到一个列表。如果参数重复则会保存多个值。
append_const:将参数规范中定义的一个值保存到一个列表。
version:打印程序的版本详细信息,然后退出。
下面这个示例程序展示了以上每一中动作类型,这里提供了触发各个动作所需的最小配置。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-s',action='store',
dest='simple_value',
help='Store a simple value')
parser.add_argument('-c',action='store_const',
dest='constant_value',
const='value-to-store',
help='Store a constant value')
parser.add_argument('-t',action='store_true',
dest='boolean_t',
help='Set a switch to true')
parser.add_argument('-f',action='store_false',
default=True,
dest='boolean_f',
help='Set a switch to false')
parser.add_argument('-a',action='append',
dest='collection',
default=[],
help='Add repeated values to a list')
parser.add_argument('-A',action='append_const',
dest='const_collection',
const='value-1-to-append',
default=[],
help='Add different values to list')
parser.add_argument('-B',action='append_const',
dest='const_collection',
const='value-2-to-append',
help='Add different values to list')
parser.add_argument('--version',action='version',
version='%(prog)s 1.0')
results = parser.parse_args()
print('simple_value ={!r}'.format(results.simple_value))
print('constant_value ={!r}'.format(results.constant_value))
print('boolean_t ={!r}'.format(results.boolean_t))
print('boolean_f ={!r}'.format(results.boolean_f))
print('collection ={!r}'.format(results.collection))
print('const_collection ={!r}'.format(results.const_collection))
-t和-f选项被配置为修改不同的选项值,分布存储True或False。-A和-B的dest值相同,因此它们的常量值会被追加到同一个列表。