Python 命令行参数解析工具 argparse(2)

直接在方法里加一个字符串"-a"或"--a"当在脚本后面调用传入值后,都可以使用arg.a获取传入值,传入值默认从sys.argv【1:】中获得

parser.add_argument("-a") args = parser.parse_args() print(args) print(args.a) # 结果 λ python exam2.py --a=1 Namespace(a='1') 1

如果我们想改变访问方式可以用dest参数

parser.add_argument("--a", dest="c") args = parser.parse_args() print(args) print(args.c) # 结果 λ python exam2.py --a=1 Namespace(c='1') 1

我们也可以不用变量显示赋值的方式,不加“-”或“--”,这样传入值和参数定义的顺序一样,这种情况desk不奏效

parser.add_argument("a") parser.add_argument("b") args = parser.parse_args() print(args) # 结果 λ python exam2.py 1 2 Namespace(a='1', b='2')

当然我们也可以给传入两种接受方式,这种情况"-"开头的为命令简写,获取传入参数用"--"后的属性

parser.add_argument('-n', '--name', help="What's ur name") args = parser.parse_args() print(args) print(args.name) # 结果 λ python exam3.py -n=ling Namespace(name='ling') ling λ python exam3.py --name=wang Namespace(name='wang') wang

默认我们传入的值会当作字符串来处理,如果我们需要指定类型可以使用type参数,如上面计算器中定义所示,如果不指定type为int,便会报错。默认支持的type类型有 int,float,open

parser.add_argument(type="")

如果确定动作需要传入参数的个数,我们也可以加nargs做强制限制。["n":参数的绝对个数,"?":0或1个,"*":0或所以,"+":所有并且至少一个]

parser.add_argument(nargs="") 参数动作#

argparse内置6种动作可以在解析到一个参数时进行触发:

store保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。

store_const保存的常量,如果触发此动作,值是参数规格中提前被定义的值,而不能命令行传入值。

store_ture/store_false保存相应的布尔值。这两个动作被用于实现布尔开关。

append将值保存到一个列表中。若参数重复出现,则保存多个值。

append_const将一个定义在参数规格中的值保存到一个列表中。

version打印关于程序的版本信息,然后退出

用法如下所示:

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', default=False, dest='boolean_switch', help='Set a switch to true') parser.add_argument('-f', action='store_false', default=False, dest='boolean_switch', 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 =', results.simple_value print 'constant_value =', results.constant_value print 'boolean_switch =', results.boolean_switch print 'collection =', results.collection print 'const_collection =', results.const_collection # 结果 λ python argparse_action.py -s value simple_value = value constant_value = None boolean_switch = False collection = [] const_collection = [] λ python argparse_action.py -c simple_value = None constant_value = value-to-store boolean_switch = False collection = [] const_collection = [] λ python argparse_action.py -t simple_value = None constant_value = None boolean_switch = True collection = [] const_collection = [] λ python argparse_action.py -f simple_value = None constant_value = None boolean_switch = False collection = [] const_collection = [] λ python argparse_action.py -a one -a two -a three simple_value = None constant_value = None boolean_switch = False collection = ['one', 'two', 'three'] const_collection = [] λ python argparse_action.py -B -A simple_value = None constant_value = None boolean_switch = False collection = [] const_collection = ['value-2-to-append', 'value-1-to-append'] λ python argparse_action.py --version argparse_action.py 1.0 解析器组#

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ec74f4086faf7a841961a593dc4aa571.html