Argparse:一个具体案例教会你python命令行参数解析

liftword2个月前 (03-17)技术文章9

问题描述:

现有一个用于数据格式转换的py脚本(多转一),执行时通过命令行传入一系列的参数控制其具体运行方式,使满足以下要求:

1. 必须传入需要处理的原始数据文件名

2. 可以指定输入文件的格式,若没有指定则使用默认值,若指定则必须在限定的范围内选择

3. 可以指定输出文件名

4. 可以指定输出不同级别log信息,也可以指定运行过程中不打印任何信息,但是两者不可以同时出现。

解决思路:

Argparse是一个比较常用的命令行参数解析模块,python自带且简单易用。其使用流程基本分为以下几步:导入argparse包、生成parser对象、增加参数和解析参数。我们将对照着上面的需求,逐个添加命令行参数。

1. 执行脚本必须要传入原始数据的文件名,可以通过位置参数(positional)来进行设定。我们在parser对象上绑定一个input变量,并为其添加说明信息"input file name",解析之后可以用args.input来获取输入的命令行参数。命令行执行python args.py test.txt测试效果。

还可以通过python args.py -h 来查看当前脚本的使用方法

2. 输入文件格式可选,添加可选参数(optional)。可选参数可以用短选项:-f,也可以用长选项:--format,或者都指定。通过设置default="micaps1"可以指定默认格式,通过choices=['micaps1', 'micaps5', 'ecbufr']可以设定参数范围,传入该范围之外的值会报错。

3. 和第二条类似,添加参数:parser.add_argument("-o","--output",default="output.litte_r",type=str, help="output file name")

4. 第四条需要添加两个变量,一个用于控制脚本执行过程中的log信息级别,一个用于关闭执行过程中的所有log信息,显然两者不能共存。这里引入group =
parser.add_mutually_exclusive_group(),绑在group上的变量将不能共存。

a. Log级别:group.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")。这里action="count"表明该变量用于计数,默认值为0。举个例子,命令行指定-v,则args. verbosity的值就是1;命令行指定-vvvv,则args. verbosity的值就是4。-v后面不需要加额外的值。

b. 关闭输出:group.add_argument("-q", "--quiet", action="store_true",help="do not print log info")。这里action="count"表明该变量用存储逻辑值。若命令行有-q,则args.quiet的值为True,否则为False。

  • 最后的脚本:
  • Help信息
  • 运行测试:

相关文章

Python 函数参数

1.函数基本参数#基本样例 函数参数的定义要和调用参数匹配,否则会报错 def fun01(a, b): print(a, b) if __name__ == '__main__':...

Python基础 - 函数的位置参数、关键字参数、默认参数

在 Python 中,调用函数可以按照函数的位置传递参数(位置参数),也可以按照参数的名称传递参数(关键字参数),函数的参数还可以在定义的时候指定默认值(默认参数)。此外,Python 还支持可变参数...

真相!Python 默认值参数深度解析,从踩坑到精通的进阶秘籍

一、开发中遇到的问题问题 1:默认值参数为可变对象的陷阱在 Python 开发里,不少初学者会在默认值参数为可变对象时踩坑。比如,我们想定义一个函数,用于向列表中添加元素,代码如下:def add_t...

Python命令行参数解析模块argparse

前言以前 optparse 比较火,但是在python2.7版本后,官方不再维护这个模块,转而大力支持 argparse 。argparse 模块可以让人轻松编写用户友好的命令行接口。她可以从 sys...

python函数参数详解

python有两种传参的方式,位置参数和关键字参数位置参数位置参数是基于它们的位置或顺序传递给函数的参数。这些参数是必需的,并且必须按照与函数参数列表匹配的正确顺序提供。以下是一个示例:def gre...

如何在运行 Python 脚本文件时传递参数

在 Python 中,可以使用命令行参数为程序传递额外的信息。在操作系统的命令行运行 Python 脚本文件时,文件名称之后添加的参数称为命令行参数。可以根据需要使用这些命令行参数,比如根据不同的参数...