如何使用 python 的 argparse 基于参数创建条件参数?
How to create conditonal arguments based on arguments using python's argparse?
我正在尝试创建小型命令行工具。我的方法是从我想要 运行 的命令列表开始,然后创建一个解析器来容纳这些命令。而不是设置解析器然后决定输入应该是什么。
我正在努力弄清楚如何根据以前的输入设置参数。以下是我的目标命令的几个示例。
cgen create test-runner
cgen create config --branch branch_name
cgen create guide --branch branch_name
我目前已将其设置为 create 已将选项设置为参数。然后,根据输入的参数,如果 config 或 guide[=25,我想让 branch 成为必需的参数=] 是 运行,但如果输入 test-运行ner 则不是。
我一直在拆解并尝试不同的方法,所以我目前拥有的东西非常基础,但看起来像这样......
def main():
def run_create(args):
print('run_create')
if args.create_type == 'test-runner':
create_test_runner(args)
if args.create_type == 'config':
print(f'Creating config')
if args.create_type == 'guide':
print(f'Creating guide')
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
# create the parser for the "create" command
parser_create = subparsers.add_parser('create')
parser_create.add_argument(choices=['test-runner', 'config', 'guide'], dest='create_type')
parser_create.set_defaults(func=run_create)
args = parser.parse_args()
args.func(args)
添加参数时,您可以指定是否需要它们link。
这样您就可以即时进行测试并强制进行论证。
def arguments_is_given(*args: str) -> bool:
return len(set(args) & set(sys.argv)) > 0
def main():
def run_create(args):
print('run_create')
if args.create_type == 'test-runner':
create_test_runner(args)
if args.create_type == 'config':
print(f'Creating config')
if args.create_type == 'guide':
print(f'Creating guide')
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
# create the parser for the "create" command
parser_create = subparsers.add_parser('create')
parser_create.add_argument("--branch",required=not arguments_is_given("config", "guide"))
parser_create.add_argument(choices=['test-runner', 'config', 'guide'], dest='create_type')
parser_create.set_defaults(func=run_create)
args = parser.parse_args()
args.func(args)
我正在尝试创建小型命令行工具。我的方法是从我想要 运行 的命令列表开始,然后创建一个解析器来容纳这些命令。而不是设置解析器然后决定输入应该是什么。
我正在努力弄清楚如何根据以前的输入设置参数。以下是我的目标命令的几个示例。
cgen create test-runner
cgen create config --branch branch_name
cgen create guide --branch branch_name
我目前已将其设置为 create 已将选项设置为参数。然后,根据输入的参数,如果 config 或 guide[=25,我想让 branch 成为必需的参数=] 是 运行,但如果输入 test-运行ner 则不是。
我一直在拆解并尝试不同的方法,所以我目前拥有的东西非常基础,但看起来像这样......
def main():
def run_create(args):
print('run_create')
if args.create_type == 'test-runner':
create_test_runner(args)
if args.create_type == 'config':
print(f'Creating config')
if args.create_type == 'guide':
print(f'Creating guide')
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
# create the parser for the "create" command
parser_create = subparsers.add_parser('create')
parser_create.add_argument(choices=['test-runner', 'config', 'guide'], dest='create_type')
parser_create.set_defaults(func=run_create)
args = parser.parse_args()
args.func(args)
添加参数时,您可以指定是否需要它们link。
这样您就可以即时进行测试并强制进行论证。
def arguments_is_given(*args: str) -> bool:
return len(set(args) & set(sys.argv)) > 0
def main():
def run_create(args):
print('run_create')
if args.create_type == 'test-runner':
create_test_runner(args)
if args.create_type == 'config':
print(f'Creating config')
if args.create_type == 'guide':
print(f'Creating guide')
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
# create the parser for the "create" command
parser_create = subparsers.add_parser('create')
parser_create.add_argument("--branch",required=not arguments_is_given("config", "guide"))
parser_create.add_argument(choices=['test-runner', 'config', 'guide'], dest='create_type')
parser_create.set_defaults(func=run_create)
args = parser.parse_args()
args.func(args)