定义子解析器的通常方法是
master_parser = argparse.ArgumentParser()
subparsers = master_parser.add_subparsers()
parser = subparsers.add_parser('sub')
parser.add_argument('--subopt')
并且子解析器将被调用
command sub --subopt
我正在实现一个调用多个转换器的包。如果我使用通常的子解析器方法,我将不得不这样做
convert ext1_to_ext2 file.ext1 file.ext2 --args
这既重复又容易出错,因为用户可能会调用
convert ext1_to_ext3 file.ext1 file.ext2 --args
我更希望从主解析器自动确定子解析器,以便用户可以使用命令
convert file.ext1 file.ext2 EXTRA
and会从andargparse
中确定 subparser并调用 subparser来解析. 当然,这里是特定于子解析器的。ext1_to_ext2
file.ext1
file.ext2
ext1_to_ext2
EXTRA
EXTRA
我尝试为每个转换器使用add_argument_group
参数组(
我尝试使用parse_known_args
两个位置参数,确定并使用适当的子解析器来解析剩余的参数,但是很难从帮助消息中为用户提供转换器列表及其参数。
有没有办法做到这一点?