问题描述:
现有一个用于数据格式转换的py脚本(多转一),执行时通过命令行传入一系列的参数控制其具体运行方式,使满足以下要求:
1. 必须传入需要处理的原始数据文件名
2. 可以指定输入文件的格式,若没有指定则使用默认值,若指定则必须在限定的范围内选择
3. 可以指定输出文件名
4. 可以指定输出不同级别log信息,也可以指定运行过程中不打印任何信息,但是两者不可以同时出现。
解决思路:
Argparse是一个比较常用的命令行参数解析模块,python自带且简单易用。其使用流程基本分为以下几步:导入argparse包、生成parser对象、增加参数和解析参数。我们将对照着上面的需求,逐个添加命令行参数。
![3a9f3b97b793004715295a9ebfe0331f.png](https://i-blog.csdnimg.cn/blog_migrate/bb3141c6d446d49280150c204b569a5d.jpeg)
1. 执行脚本必须要传入原始数据的文件名,可以通过位置参数(positional)来进行设定。我们在parser对象上绑定一个input变量,并为其添加说明信息"input file name",解析之后可以用args.input来获取输入的命令行参数。命令行执行python args.py test.txt测试效果。
![56a93c743920c869e41b8d87ce157ec0.png](https://i-blog.csdnimg.cn/blog_migrate/7385d4f4ada18204e937c532852a2018.jpeg)
还可以通过python args.py -h 来查看当前脚本的使用方法
![35a04cca831a102979a05fbd73324898.png](https://i-blog.csdnimg.cn/blog_migrate/b791792a7add6ade7aceee8cc85cb5ca.jpeg)
2. 输入文件格式可选,添加可选参数(optional)。可选参数可以用短选项:-f,也可以用长选项:--format,或者都指定。通过设置default="micaps1"可以指定默认格式,通过choices=['micaps1', 'micaps5', 'ecbufr']可以设定参数范围,传入该范围之外的值会报错。
![2b41cf55f204e5baa5a983fa5f5d3446.png](https://i-blog.csdnimg.cn/blog_migrate/2304b9c12996ec457fb1692dcc3332e8.jpeg)
![6a7b58d99a2684661beee80aa1396773.png](https://i-blog.csdnimg.cn/blog_migrate/8feeff287f4c2c1f23b3a0610f63ef14.jpeg)
3. 和第二条类似,添加参数:parser.add_argument("-o