【问题标题】:argparse argument named "print"名为“print”的 argparse 参数
【发布时间】:2015-10-17 19:28:04
【问题描述】:

我想在我的参数解析器中添加一个名为“打印”的参数

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

【问题讨论】:

    标签: python python-2.7 arguments keyword argparse


    【解决方案1】:

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

    if getattr(args, 'print'):
    

    但是,您只需避免将该名称作为目的地,您自己就会变得更容易;也许使用print_(通过dest argument):

    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
    

    【讨论】:

    • 使用 'dest' 来存储值很巧妙,我将 argparse 文档读了三遍,就是搞不懂。一旦可能,我会接受这个作为答案。
    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 2021-03-06
    • 1970-01-01
    • 2018-08-11
    • 2019-06-18
    • 2021-06-28
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多