【问题标题】:How to parse two or more arguments after a option using getopt in Python?如何在 Python 中使用 getopt 解析两个或多个参数?
【发布时间】:2017-02-10 13:26:27
【问题描述】:

我现在在 Python 中使用 getopt 并且知道一些基本用法。 但我想知道是否有办法在一个选项之后解析两个或多个参数。

例如

python test.py -a 111 -b 222 333

当我解析选项'-b'时如何获取'222'和'333'。实际上我只能捕获'222'。

【问题讨论】:

  • 解析时使用CSV并拆分? 222,333
  • @tehjoker 是的,这是添加额外字符的解决方案。可能getopt没有包含我想要的方法。

标签: python getopt


【解决方案1】:

你会使用 argparse(为什么选择 optparse,为什么?):

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append')
>>> parser.parse_args('--foo 1 --foo 2'.split())
Namespace(foo=['1', '2'])

来自文档: https://docs.python.org/3/library/argparse.html

例如:

python test.py -a 111 -b 222 -b 333 -b 4444

【讨论】:

    【解决方案2】:

    参数 'nargs' 可以在 argparse 中做到这一点。

    >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo', nargs=2)
    >>> parser.add_argument('bar', nargs=1)
    >>> parser.parse_args('c --foo a b'.split())
    Namespace(bar=['c'], foo=['a', 'b'])
    

    例如

    python --foo 111 222
    

    argparse documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多