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

python argparse-将动作添加到不带参数的子解析器?

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

python argparse-将动作添加到不带参数的子解析器?

的文档提供

subcommands
了两个如何标识子解析器的示例。

https://docs.python.org/dev/library/argparse.html#sub-
commands

一种是给

add_subparsers
a
dest

def do_quit(args):    # action    quit()parser = ArgumentParser()subparser = parser.add_subparsers(dest='cmd')....subparser.add_parser('quit')...args = parser.parse_args()print args.cmd   # displays 'quit'if args.cmd == 'quit':   do_quit(args)

另一种是用于

set_defaults
将子解析器与函数链接:

parser = ArgumentParser()subparsers = parser.add_subparsers()...parser_quit = subparsers.add_parser('quit')parser_quit.set_defaults(func=do_quit)...args = parser.parse_args()args.func(args)

进一步考虑,这是使用custom的一种方法

Action
。就像
_HelpAction
(被所使用
-h
)。由带有
nargs=0
(或’?’)的位置参数调用。即使没有与之匹配的字符串(或更确切地说,有0个字符串与之匹配),也会始终调用此类参数。这是如何处理位置的合乎逻辑的但有些晦涩的结果。

class QuitAction(argparse.Action):    def __call__(self, parser, *args, **kwargs):        parser.exit(message="QUITTINGn")p=argparse.ArgumentParser()sp=p.add_subparsers(dest='cmd')p1=sp.add_parser('quit')p1.add_argument('foo', action=QuitAction, nargs='?', help=argparse.SUPPRESS)p.parse_args(['quit'])

产生(在Ipython中运行时):

QUITTINGAn exception has occurred, use %tb to see the full traceback.    SystemExit: 0


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

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

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