第十四章:应用构建模块-argparse:命令行选项和参数解析-解析器组织-嵌套解析器

14.1.6.5 嵌套解析器
前面介绍的父解析器方法只是在相关命令之间共享选项的一种方法。还可以采用另一种方法,将命令结合到一个程序中,然后使用子解析器处理命令行的各个部分。其做法类似于svn、hg和其他有多个命令行动作或子命令的程序。
如果一个程序要处理文件系统上的目录,则可以通过定义命令来创建、删除和列出目录的内容。

import argparse

parser = argparse.ArgumentParser()

subparsers = parser.add_subparsers(help='commands')

# A list command
list_parser = subparsers.add_parser(
    'list',help='List contents')
list_parser.add_argument(
    'dirname',action='store',
    help='Directory to list')

# A create command
create_parser = subparsers.add_parser(
    'create',help='Create a directory')
create_parser.add_argument(
    'dirname',action='store',
    help='New directory to create')`
create_parser.add_argument(
    '--read-only',default=False,action='store_true',
    help='Set permissions to prevent writing to the directory',
    )

# A delete command
delete_parser = subparsers.add_parser(
    'delete',help='Remove a directory')
delete_parser.add_argument(
    'dirname',action='store',help='The directory to remove')
delete_parser.add_argument(
    '--recursive','-r',default=False,action='store_true',
    help='Remove the contents of the directory,too',
    )

print(parser.parse_args())

帮助输出将指定子解析器显示为"commands",其可以在命令行上被指定为位置参数。
在这里插入图片描述

每个子解析器都有自己的帮助,以描述该命令的参数和选项。
在这里插入图片描述

解析参数时,parse_args()返回的Namespace对象只包含与指定命令相关的值。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值