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

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

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5632106.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存