Python 只有一个带有argparse的命令行选项
我正在尝试使用argparse模块创建CLI,但我希望使用具有不同参数要求的不同命令,我尝试了以下方法:Python 只有一个带有argparse的命令行选项,python,argparse,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() 我希望能够运行python test.
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()
我希望能够运行python test.py foo
和python test.py test somearg
但是当我运行
python test.py foo
时,我得到了错误:参数太少了。有没有一种方法可以使命令的行为类似于git status
、git commit
或pip install
?或者有更好的方法在python中创建CLI吗?这可能是您想要的:
使用此选项,您可以添加具有自己参数方案的子参数。默认情况下,argparse参数使用一个值。如果希望foo具有不同的行为,则需要指定它。看起来您认为默认值是nargs=0,但事实并非如此。来自argparse文档(at):“如果未提供nargs关键字参数,则使用的arg数由操作确定。通常这意味着将使用单个命令行arg并生成单个项(而不是列表)。”
您可以为foo使用nargs=“?”,并在命令行未提供任何内容的情况下为其提供默认值,或者使用非默认操作(可能是“store_true”)。是正确的
举个例子:
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()
每个子Parser的不同参数测试:
$ 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\u example.py bar somearg
命名空间(somearg='somearg')
$python subparsers\u example.py foo
名称空间()
$python subparsers\u example.py foo somearg
用法:argparse_subparsers.py foo[-h]
subparser_example.py foo:错误:无法识别的参数: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
$python subparsers\u example.py foo-h
用法:argparse_subparsers.py foo[-h]
可选参数:
-h、 --帮助显示此帮助消息并退出
$python subparsers_example.py bar-h
用法:argparse_subparsers.py bar[-h]somearg
位置参数:
萨默格
可选参数:
-h、 --帮助显示此帮助消息并退出