argparse只有一个命令行选项

err*_*ler 4 python argparse

我正在尝试使用argparse模块创建一个CLI,但是我想要有不同的命令和不同的参数要求,我试过这个:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo', help='foo help')
parser.add_argument('test', nargs=1, help='test help')
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

我想要的是能够跑步python test.py foo,python test.py test somearg 但是当我跑步时,python test.py foo我得到了error: too few arguments.有没有一种方法,命令可以像git status,git commitpip install?或者有更好的方法在python中创建CLI?

ber*_*nie 15

@crodjer是对的;
举个例子:

import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(title='subcommands', 
                                   description='valid subcommands',
                                   help='additional help')
foo_parser = subparsers.add_parser('foo', help='foo help')
bar_parser = subparsers.add_parser('bar', help='bar help')
bar_parser.add_argument('somearg')
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

测试每个subparser的不同args:

$ python subparsers_example.py bar somearg
Namespace(somearg='somearg')

$ python subparsers_example.py foo
Namespace()

$ python subparsers_example.py foo somearg
usage: argparse_subparsers.py foo [-h]
subparser_example.py foo: error: unrecognized arguments: somearg

帮助输出:

$ python subparsers_example.py foo -h
usage: argparse_subparsers.py foo [-h]

optional arguments:
  -h, --help  show this help message and exit

$ python subparsers_example.py bar -h
usage: argparse_subparsers.py bar [-h] somearg

positional arguments:
  somearg

optional arguments:
  -h, --help  show this help message and exit


cro*_*jer 6

这是你可能想要的:

http://docs.python.org/library/argparse.html#sub-commands

有了这个,您可以添加具有自己的参数方案的子参数.