名为"print"的argparse参数

cru*_*her 4 python arguments keyword python-2.7 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"
Run Code Online (Sandbox Code Playgroud)

产量:

if args.print:
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 10

您也可以getattr()用来访问恰好是保留关键字的属性:

if getattr(args, 'print'):
Run Code Online (Sandbox Code Playgroud)

但是,只要避免将该名称作为目的地,您就可以轻松完成自己的工作.print_或许使用(通过dest参数):

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

或者,更常见的同义词,如verbose:

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

快速演示:

>>> 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
Run Code Online (Sandbox Code Playgroud)