程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

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

hfteth 2025-06-30 16:21:44 技术文章 3 ℃

问题描述:

现有一个用于数据格式转换的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信息
  • 运行测试:

Tags:

最近发表
标签列表