首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python的How解析基于参数创建条件参数?

如何使用python的How解析基于参数创建条件参数?
EN

Stack Overflow用户
提问于 2022-03-23 10:11:40
回答 1查看 39关注 0票数 0

我正在尝试创建一个小型命令行工具。我的方法是从我想要运行的命令列表开始,然后创建一个符合这些命令的解析器。而不是设置解析器,然后命令输入应该是什么。

我很难弄清楚如何根据以前的输入来设置参数。下面是我想要的命令的几个例子。

代码语言:javascript
复制
cgen create test-runner
cgen create config --branch branch_name
cgen create guide --branch branch_name

目前,我已经设置了它,以便create将选项设置为参数。然后,根据输入的参数,如果运行configGuided,我希望分支是必需的参数,但如果输入测试运行程序,则不需要。

我不断地拆掉东西,尝试不同的方法,所以我现在所拥有的是基本的,但是看起来是这样的……

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 11:03:04

在添加参数时,可以指定是否需要这些参数,或者不希望使用链接

所以你可以试试看,并使一个论点是强制性的。

代码语言:javascript
复制
 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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71585367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档