argparse模块

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

$ 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详细列表模式显示

posted @ 2017-10-31 11:24  thinkingjxj  阅读(212)  评论(0编辑  收藏  举报