【问题标题】:python argparse named positional arguments?python argparse命名位置参数?
【发布时间】:2016-01-08 03:54:02
【问题描述】:

有没有办法让 python 的 argparse.ArgumentParser 像 python 函数处理参数一样处理命令行参数?这样参数就可以不带名字地传递?

【问题讨论】:

    标签: python command-line-arguments argparse


    【解决方案1】:

    请参阅documentation 中带有“整数”的示例。不要包含任何连字符,参数将被视为位置参数。

    >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('first_supplied_argument', help='help')
    >>> parser.add_argument('second_supplied_argument', help='help')
    >>> args = parser.parse_args(['1', '2'])
    Namespace(first_supplied_argument='1', second_supplied_argument='2')
    

    根据评论编辑:

    您能否同时提供位置参数和可选参数?我认为您仍然需要提供至少一个位置参数。

    parser = argparse.ArgumentParser()
    parser.add_argument('--first', help='help')
    parser.add_argument('first', nargs='?', help='help')
    parser.add_argument('--second', help='help')
    parser.add_argument('second', nargs='?', help='help')
    
    print parser.parse_args(['1', '2'])
    print parser.parse_args(['1', '--second', '2'])
    print parser.parse_args(['--first', '1', '--second', '2'])  # doesn't work
    print parser.parse_args(['', '--first', '1', '--second', '2'])  # probably not what you want to do
    

    输出:

    Namespace(first='1', second='2')
    Namespace(first='1', second='2')
    Namespace(first=None, second=None)  # doesn't work
    Namespace(first='1', second='2')
    

    【讨论】:

    • 我想保留使用名称的选项。我想复制我从 python 函数中获得的功能。
    • 你能提供位置参数和可选参数吗?
    • 表面上这将是相似的,但并不完全相同。您将能够以任何一种方式提供值。但是,两者都没有给出,或者两者都使用时的行为可能会有所不同。
    猜你喜欢
    • 2012-01-29
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2011-05-27
    • 2011-07-19
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多