python3:解析初始选择集的嵌套辅助参数

2024-06-11 01:59:05 发布

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

git commitgit status这样的子命令可以很容易地用argparse使用add_subparsers进行解析。如何为从命令行中选择的选项获取嵌套设置输入?你知道吗

假设我想用所有自定义设置播放音乐:

play.py --path /path/to.file --duration 100 --filter equalizer --effect echo equalizer_settings 1 2 echo_settings 5

这里--filter equalizer--effect echo是第一级选择,但我需要将它们的设置作为辅助参数。例如:echo_settings 5equalizer_settings 1 2。你知道吗

辅助设置可以是多个,最好是带有命名参数的。你知道吗

下面列出的是我到目前为止。。。你知道吗

import argparse
parser = argparse.ArgumentParser(description='Play music the way I want it.')
parser.add_argument('-p', '--path', type=str, required=True, help='File path')
parser.add_argument('-d', '--duration', type=int, default=50, help='Play duration')
parser.add_argument('-f', '--filter', choices=['none', 'equalizer'], default='none', help='Filter selection')
parser.add_argument('-e', '--effect', choices=['none', 'echo', 'surround'], default='none', help='Effect selection')

subparsers = parser.add_subparsers(help='Settings of optional parameters')

equalizer_parser = subparsers.add_parser("equalizer_settings")
equalizer_parser.add_argument('equalizer_min_range', type=int)
equalizer_parser.add_argument('equalizer_max_range', type=int)

echo_parser = subparsers.add_parser("echo_settings")
echo_parser.add_argument('echo_strength', type=int)

surround_parser = subparsers.add_parser("surround_settings")
surround_parser.add_argument('surround_strength', type=int)

args = parser.parse_args()
print(args)

目前这个错误出现在error: unrecognized arguments


Tags: pathechononeaddparsersettingstypeargparse
1条回答
网友
1楼 · 发布于 2024-06-11 01:59:05

一次只能使用一个子parser,即3settings中的一个。有一些按顺序使用几个子parser的高级方法,但我认为我们不想这样做(参见前面的SOargparse问题)。你知道吗

但你真的需要用子弹吗?为什么不只是另一组optionals(带标记的)参数,比如:

parser.add_argument(" equalizer_settings", nargs=2, type=int)

parser.add_argument(" echo_settings", type=int)

parser.add_argument(" surround_strength", type=int

您只是添加一些参数,而不是调用某种操作命令。你知道吗

相关问题 更多 >