Python/argparse:如何创建参数(即--clear)don';“不要警告我”;错误:参数太少;?
我有一行cmd解析stuf,我需要使“-clear”成为一个有效的唯一参数。然而,当我只使用“-clear”作为唯一参数时,我得到了一个“错误:参数太少”Python/argparse:如何创建参数(即--clear)don';“不要警告我”;错误:参数太少;?,python,argparse,Python,Argparse,我有一行cmd解析stuf,我需要使“-clear”成为一个有效的唯一参数。然而,当我只使用“-clear”作为唯一参数时,我得到了一个“错误:参数太少” parser = argparse.ArgumentParser( prog="sl", formatter_class=argparse.RawDescriptionHelpFormatter, description="Shoot/Project launcher
parser = argparse.ArgumentParser(
prog="sl",
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Shoot/Project launcher application",
epilog="")
parser.add_argument("project", metavar="projectname",
help="Name of the project/shot to use")
parser.add_argument("-p", metavar="project_name",
help="Name of the project")
parser.add_argument("-s", metavar="shot_name",
help="Name of the shot")
parser.add_argument("--clear",action='store_true',
help="Clear the information about the current selected project")
parser.add_argument("--test",
help="test parameter")
args=parser.parse_args()
有什么想法吗?谢谢
更新:
试图回答评论中的一些问题。
当我启动应用程序时,如:
sl项目
它很好用。
但如果我像这样启动它:
sl—清除
我得到了一个简单的“sl:error:参数太少”为每个参数添加默认值(--clear不例外)为每个参数添加默认值(--clear不例外)这里的问题不是
--clear
参数<代码>项目是必需的参数
如果您应该能够在不命名项目的情况下调用程序,请通过添加nargs='?'
使project
成为可选的:
parser.add_argument("project", metavar="projectname",
help="Name of the project/shot to use", nargs='?')
如果在使用其他命令行开关时未指定项目名称是错误的,请在解析后显式指定:
args = parser.parse_args()
if not args.clear and args.project is None:
parser.error('Please provide a project')
调用将打印错误消息、帮助文本并退出,返回代码为2:
$ python main.py --clear
Namespace(clear=True, p=None, project=None, s=None, test=None)
$ python main.py
usage: sl [-h] [-p project_name] [-s shot_name] [--clear] [--test TEST]
[projectname]
sl: error: Please provide a project
--clear
参数不是这里的问题<代码>项目是必需的参数
如果您应该能够在不命名项目的情况下调用程序,请通过添加nargs='?'
使project
成为可选的:
parser.add_argument("project", metavar="projectname",
help="Name of the project/shot to use", nargs='?')
如果在使用其他命令行开关时未指定项目名称是错误的,请在解析后显式指定:
args = parser.parse_args()
if not args.clear and args.project is None:
parser.error('Please provide a project')
调用将打印错误消息、帮助文本并退出,返回代码为2:
$ python main.py --clear
Namespace(clear=True, p=None, project=None, s=None, test=None)
$ python main.py
usage: sl [-h] [-p project_name] [-s shot_name] [--clear] [--test TEST]
[projectname]
sl: error: Please provide a project
命令行看起来如何,这会产生错误?!python main.py projectname--clear或python main.py--clear?尝试使用
docopt
而不是argparse
。它更好更容易使用!akaRem-这个例子中的docopt
等价物是什么?产生错误的命令行看起来如何?!python main.py projectname--clear或python main.py--clear?尝试使用docopt
而不是argparse
。它更好更容易使用!akaRem-本例中的docopt
等效值是什么?所有参数都已具有None
默认值--清除,因为存储true
根据定义具有False
默认值。缺少用户定义的默认值不会导致错误。所有参数都已具有None
默认值--清除,因为存储true
根据定义具有False
默认值。缺少用户定义的默认值不会导致错误。