使用argpar时出现“无效选择”错误

2024-09-30 23:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python脚本,它以以下格式从命令行接收参数:

./myfile subcommand --change --host=myhost --user=whatever

--change在某种程度上是必需的,这意味着目前这是唯一可用的选项,但稍后我将添加其他选项,但最终用户需要在这些选项之间进行选择。在

--host是必需的。这不是位置论。在

--user不是必需的,它有一个默认值。这不是位置论。在

我使用下面的代码来创建这个命令,但是 #!/usr/bin/env python

import argparse

parser = argparse.ArgumentParser(description='My example explanation')

subparsers = parser.add_subparsers(dest='action')
subparsers.required = True

subcommand_parser = subparsers.add_parser('subcommand')
subcommand_parser_subparser = subcommand_parser.add_subparsers()
change_subcommand_parser = subcommand_parser_subparser.add_parser('--change')
change_subcommand_parser.add_argument('--host', required=True)
change_subcommand_parser.add_argument('--user', required=False, default='Salam')

print(parser.parse_args())

在CLI中使用以下命令尝试此代码时: ./myscript something --change --host hello --user arian

我得到以下错误:

usage: myscript subcommand [-h] {--change} ... myscript subcommand: error: invalid choice: 'hello' (choose from '--change')

我的问题是:

  1. 这个密码怎么了?在
  2. 如何让用户键入--user&;--host,而不将它们用作位置参数?在

Tags: 代码命令addtruehostparser参数选项