栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用argparse处理CLI子命令

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用argparse处理CLI子命令

首先,子解析器 永远不会 插入名称空间。在您发布的示例中,如果您尝试以以下方式运行脚本:

$python3 test_args.py cmd1 1Namespace(cmd1_option1='1')

其中

test_args.py
包含您提供的代码(
import argparse
在开头和
print(args)
结尾处带有)。

注意,

cmd1
仅提及其参数就没有提及。 这是设计使然

如注释中所指出的,您可以添加将

dest
参数传递给
add_subparsers
调用的信息。

处理这些情况的通常方法是使用子

set_defaults
解析器的方法:

import argparseparser = argparse.ArgumentParser()subparsers = parser.add_subparsers(help='Functions')parser_1 = subparsers.add_parser('cmd1', help='...')parser_1.add_argument('cmd1_option1', type=str, help='...')parser_1.set_defaults(parser1=True)parser_2 = subparsers.add_parser('cmd2', help='...')parser_2.set_defaults(parser2=True)parser_3 = subparsers.add_parser('cmd3', help='...')parser_3.add_argument('cmd3_options', type=int, help='...')parser_3.set_defaults(parser_3=True)args = parser.parse_args()print(args)

结果是:

$python3 test_args.py cmd1 1Namespace(cmd1_option1='1', parser1=True)$python3 test_args.py cmd2Namespace(parser2=True)

通常,大多数情况下,不同的子解析器将以完全不同的方式处理参数。通常的模式是具有不同的功能来运行不同的命令并用于

set_defaults
设置
func
属性。解析参数时,您只需调用该可调用对象即可:

subparsers = parser.add_subparsers()parser_1 = subparsers.add_parser(...)parser_1.set_default(func=do_command_one)parser_k = subparsers.add_parser(...)parser_k.set_default(func=do_command_k)args = parser.parse_args()if args.func:    args.func(args)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号