Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 只有一个带有argparse的命令行选项_Python_Argparse - Fatal编程技术网

Python 只有一个带有argparse的命令行选项

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.

我正在尝试使用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.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、 --帮助显示此帮助消息并退出