码迷,mamicode.com
首页 > 其他好文 > 详细

argparse模块

时间:2017-10-31 12:55:43      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:模块   功能   做了   分享   转换   ima   如何   自动   sys.argv   

一个可执行文件或者脚本都可有接受参数

$ ls -l /etc

/etc 是位置参数

-l 是短选项

如何把这些参数传递给程序呢?从3.2开始python提供了参数分析模块argparse

参数分类:

位置参数,参数放在哪里,就要对应一个参数位置。例如/etc就是对应一个参数位置。

选项参数,必须通过前面是-的短选项或者--长选项,然后后面的才算它的参数,当然短选项后面可可有没有参数。

实现ls命令功能,实现-l, -a, --all, -h选项:

实现显示路径下的文件列表

-a 和 --all显示包含.开头的文件

-l 详细列表显示

-h 和-l 配合,人性化显示文件大小

 

第一步:实现显示路径下的文件列表

技术分享

先来一段最简单的程序:

技术分享

argparse不仅仅做了参数的定义和解析,还自动帮助生成了帮助信息。

增加解析器参数:

prog:程序的名字,缺省使用sys.argv[0]

add_help: 自动为解析器增加-h和--help选项,默认为True

description: 为程序功能添加描述

parse_args(args=None, namespace=None)  args参数列表,一个可迭代对象,内部会把刻碟哎对象转换成list。如果为None则使用命令行传参,非None则使用args参数的可迭代对象

技术分享

上面的代码必须输入位置参数,否则会报错。

非必须位置参数

技术分享

可以看出path也变成可选的,没有提供就使用默认值,表示当前路径。

help表示帮助文档中这个参数的描述

nargs表示这个参数接收结果参数, ?表示可有可无

default表示如果不提供该参数,就使用这个值

选项参数

技术分享

到目前为止,已经解决了参数的定义和传参问题,下面就要解决业务问题:

1. 列出所有指定路径的文件,默认是不递归的

2. -a显示所有文件,包括隐藏文件

3. -l详细列表模式显示

技术分享

技术分享

argparse模块

标签:模块   功能   做了   分享   转换   ima   如何   自动   sys.argv   

原文地址:http://www.cnblogs.com/thinking-jxj/p/7760620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!