【问题标题】:How to parse arguments in the style of git or conda in python如何在python中解析git或conda风格的参数
【发布时间】:2022-01-28 08:29:09
【问题描述】:

至少有一些当前的命令行工具遵循以下一般模式:

 $> program-name action [zero or more action specific options & arguments

例如

$> git checkout -b new-branch
$> git diff HEAD HEAD~2
... and so on ...

我们的想法是我们有不同的操作/命令(checkcout、diff、commit 等),每个命令的参数/选项可以不同。

如何在 python 中实现这种模式(最好使用argparse)?

【问题讨论】:

标签: python command-line-interface command-line-arguments argparse


【解决方案1】:

(FTFM!)这是由argparse直接支持的


   >>> # create the top-level parser
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo', action='store_true', help='foo help')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>>
>>> # create the parser for the "a" command
>>> parser_a = subparsers.add_parser('a', help='a help')
>>> parser_a.add_argument('bar', type=int, help='bar help')
>>>
>>> # create the parser for the "b" command
>>> parser_b = subparsers.add_parser('b', help='b help')
>>> parser_b.add_argument('--baz', choices='XYZ', help='baz help')
>>>
>>> # parse some argument lists
>>> parser.parse_args(['a', '12'])
Namespace(bar=12, foo=False)
>>> parser.parse_args(['--foo', 'b', '--baz', 'Z'])
Namespace(baz='Z', foo=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2019-11-01
    • 2016-04-13
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多