标签:模块 功能 做了 分享 转换 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详细列表模式显示
标签:模块 功能 做了 分享 转换 ima 如何 自动 sys.argv
原文地址:http://www.cnblogs.com/thinking-jxj/p/7760620.html