python argparse 子命令解析(续二)

本文深入探讨了Python argparse模块如何实现子命令功能,类似于svn命令的checkout、update和commit。通过add_subparsers方法创建子命令解析器,并使用add_parser为每个子命令定义具体行为。子命令解析器可以设置title、description和dest属性,并通过set_defaults设置默认值以关联功能函数。示例中展示了如何构建包含db和host子命令的管理器,其中db命令有update和sync操作,host命令有list操作。这种三层解析结构使得命令行工具更加灵活和功能丰富。
摘要由CSDN通过智能技术生成

参考资料 http://docs.python.org/dev/library/argparse.html


子命令 sub-commands

如svn命令    svn checkout, svn update, svn commit

主命令svn,子命令checkout、update和commit

argparse可通过add_subparsers 以及add_parser来达到效果。

步骤1.在顶层的解析器下,先定义一个subparsers,它是一个子命令解析的对象,用来产生子命令解析器 (注意,每个解析器,只能有一个subparsers)

步骤2.在subparsers下,分别定义所需要的子解析器(一个subparsers下可以有多个parser),子解析器间是互斥的关系,一个时刻只能匹配一个。

实例1

import argparse

####example 1############
#create top-level parser
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('--foo', action='store_true', help='foo help')
subparsers = parser.add_subparsers(help='sub-command help')

#create the parser for the 'a' command
parser_a = subparsers.add_parser('a', help='a help')
parser_a.add_argument('bar', type=int, help='bar help')

#create the parser for the 'b' command
parser_b = subparsers.add_parser('b', help='b help')
parser_b.add_argument('--baz', choices='xyz', help='baz help')

#parse some argument lists
parser.parse_args(['a','12'])
#Namespace(bar=12, foo=False)

parser.parse_args(['--foo', 'b','--baz','z'])
#Namespace(baz&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值