Python命令行参数模块argparse
本文将会介绍Python中的命令行参数模块argparse的使用。
argparse
是Python标准库中推荐的命令行解析模块,用于解析命令行参数,使得编写用户友好的命令行界面变得容易。
这个模块允许程序定义所需的参数,然后argparse会解析这些参数从sys.argv(命令行)中。一些关键特性和步骤包括:
核心功能:argparse模块建立在ArgumentParser实例上,用于参数规格说明,并包含多个全面应用解析器的选项。 通过add_argument()方法将参数规格说明关联到解析器,支持位置参数、接受各种值的选项以及各种启用/禁用标识。
快速链接:add_argument()方法提供了多种选项,如处理参数、限制可选项集合、存储常量值、设置默认值等。 例如,使用nargs='?'和default可以指定默认值或者在未提供参数时使用的值。
类型:解析器默认将命令行参数当作简单字符串读入,但可以通过type关键字进行类型检查和转换。 可以使用内置类型或自定义函数作为类型转换器,如int、float等。
argparse模块使得Python脚本能够方便地从命令行读取参数,适用于需要频繁修改参数的代码,让代码更简洁且易于维护。
简单示例
下面先介绍一个简单的argparse使用的例子(文件名:demo.py
):
1 |
|
运行命令python demo.py 10
,输出结果为:
1 |
|
在这个例子中,我们先实例化ArgumentParser(),然后使用add_argument()方法添加命令行参数,最后再使用parse_args()函数去解析参数。
运行该脚本时,需要在命令行中输入python demo.py 10
,其中10对应参数epoch的取值。此时,args的类型为命名空间(Namespace),通过args.epoch获取参数epoch的输入值。
如果不知道该怎么运行该脚本或者需知道脚本中有哪些输入参数,可运行命令python demo.py -h
获得帮助,以示例脚本为例,输出结果为:
1 |
|
位置参数
argparse
的参数共分为两类:位置参数(必选参数)和可选参数,位置参数前面不加-或者--,可选参数前面需要加上-或--(-代表参数名的短选项,即简称)。
我们在前面的示例脚本中已展示过如何使用位置参数,但此时如果输入为python demo.py 10 20
,则会报错,原因是只有一个位置参数。
1 |
|
为了解决参数数量的问题,可使用nargs来解决。
1 |
|
nargs是用来说明传入的参数个数,'+'
表示传入至少一个参数。此时再运行python demo.py 10 20
命令,输出结果为:
1 |
|
可选参数
本文重点介绍可选参数。
在可选参数中,add_argument函数的参数有type, default, required, choices, help等,列举如下:
- name or flags: 可选参数(options)或位置参数(positional arguments)。
- type: 参数类型
- default: 参数的默认取值
- required: bool类型,是否是必需参数
- choices: 枚举类型,指定参数的取值
- help: 参数的使用说明
示例脚本(文件名:demo.py
)如下:
1 |
|
显示帮助:
1 |
|
以下是可能的参数输入方式:
1 |
|
总结
本文主要介绍了Python中的命令行参数模块argparse
的使用,这在平时我们需要频繁修改命令行参数时会非常有用。
欢迎关注我的公众号NLP奇幻之旅,原创技术文章第一时间推送。
欢迎关注我的知识星球“自然语言处理奇幻之旅”,笔者正在努力构建自己的技术社区。