我正在编写一个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')
我的问题是:
--user
和--host
,而不将其用作位置参数?