可以通过创建多个ArgumentParser实例来为每个模式定义不同的参数。
示例代码如下:
import argparse
# 定义第一个ArgumentParser实例,用于处理模式A的参数
parser_A = argparse.ArgumentParser(description='Mode A')
parser_A.add_argument('--param_A1', type=int, help='Parameter for Mode A')
parser_A.add_argument('--param_A2', type=str, help='Another Parameter for Mode A')
# 定义第二个ArgumentParser实例,用于处理模式B的参数
parser_B = argparse.ArgumentParser(description='Mode B')
parser_B.add_argument('--param_B1', type=int, help='Parameter for Mode B')
parser_B.add_argument('--param_B2', type=str, help='Another Parameter for Mode B')
# 创建一个父级ArgumentParser实例,用于定义全局参数
parser_parent = argparse.ArgumentParser(add_help=False)
parser_parent.add_argument('--global_param', type=int, help='Global Parameter')
# 创建一个最终的ArgumentParser实例,它会继承父级ArgumentParser,并使用不同的子级ArgumentParser实例处理不同的模式参数
parser = argparse.ArgumentParser(parents=[parser_parent], description='Main Parser')
subparsers = parser.add_subparsers(dest='mode', help='Available modes')
subparsers.add_parser('mode_A', parents=[parser_A])
subparsers.add_parser('mode_B', parents=[parser_B])
args = parser.parse_args()
print(args)
假设我们有两个模式,mode_A和mode_B。当我们想选择某个模式时,我们可以运行以下代码:
python main.py mode_A --param_A1 10 --param_A2 'hello' --global_param 20
或者
python main.py mode_B --param_B1 5 --param_B2 'world' --global_param 30
以上两种方式分别会为相应的模式传递指定的参数,并将它们存储在args对象中。
上一篇:不同模式下的Oracle视图性能