argparse参数名为" print"

时间:2015-07-27 14:35:23

标签: python python-2.7 arguments keyword argparse

我想添加一个名为' print'到我的论证解析器

arg_parser.add_argument('--print', action='store_true', help="print stuff")
args = arg_parser.parse_args(sys.argv[1:])
if args.print:
    print "stuff"

收率:

if args.print:
            ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:10)

您也可以使用getattr()来访问恰好是reserved keywords的属性:

if getattr(args, 'print'):

然而,只要避免将该名称作为目的地,您就可以更轻松地完成这项工作;也许(通过dest argument)使用print_

arg_parser.add_argument('--print', dest='print_', action='store_true', help="print stuff")
# ...
if args.print_:

或更常见的同义词,如verbose

arg_parser.add_argument('--print', dest='verbose', action='store_true', help="print stuff")
# ...
if args.verbose:

快速演示:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--print', dest='print_', action='store_true', help="print stuff")
_StoreTrueAction(option_strings=['--print'], dest='print_', nargs=0, const=True, default=False, type=None, choices=None, help='print stuff', metavar=None)
>>> args = parser.parse_args(['--print'])
>>> args.print_
True