Python getopt模块命令行参数解析实战指南
本文详细解析Python标准库getopt模块,通过具体代码示例演示如何解析命令行参数。涵盖getopt.getopt函数用法、短参数与长参数的定义及冒号作用,以及opts和args返回值的含义与处理逻辑,帮助开发者快速掌握Python脚本参数传递技巧。
Python getopt模块简介
本文深入解析Python中getopt模块的实际应用,通过详细的代码示例展示其功能,为学习或工作提供有价值的参考。
官方文档地址:https://docs.python.org/3.1/library/getopt.html
主要应用场景:
这是一种处理命令行参数的有效方法,具有简单且易于使用的特点。
核心方法:
getopt模块主要包含两个函数:
- getopt.getopt
- getopt.gnu_getopt
getopt函数基础用法
基础用法示例:
getopt函数使用频率较高,下面简要介绍其基本用法:
getopt.getopt(args, shortopts, longopts=[])
接下来分析该函数的各个参数:
args表示脚本接收的参数,类型为list,通常与sys.argv结合使用。
shortopts用于定义短参数,例如执行python3 test.py -v时,-v即为短参数。
longopts=[]用于定义长参数,例如执行python3 test.py --v时,--v即为长参数。
首先对参数结构建立初步印象。
那么后续如何传入和处理这些参数呢?
参数处理与返回值解析
参数处理流程:
import sys
import getopt
opts = getopt.getopt(sys.argv[1:],"-h",["help"])
print(opts)
我们在命令行中执行以下命令:
GL$python3 111.py --help
([('--help', '')], [])
GL$python3 111.py -h
([('-h', '')], [])
输出如上所示,我们逐一分析输出结果。
1、使用sys.argv[1:]的原因是sys.argv[0]为脚本本身,因此需排除它,仅接收其余参数。
2、返回值是一个元组,第一个列表包含传入的选项(如--h),第二个列表包含选项后的附加参数;若无附加参数,则第二个列表为空。
接下来进行实践操作:
import getopt
import sys
opts,args = getopt.getopt(sys.argv[1:],'-h-w:-v',['help','version'])
for opt_name,opt_value in opts:
if opt_name in ('-h','--help'):
print(opt_name,"this is help")
exit()
if opt_name == '-w':
print("-w:",opt_value)
exit()
if opt_name in ('-v','--version'):
print('version:0.01')
exit()
运行代码观察结果:
GL$python3 111.py -w 123-w: 123GL$python3 111.py -h
-h this is help
GL$python3 111.py -v
version:0.01GL$python3 111.py --help
--help this is help
由上可见,shortopts中多出了一个冒号,其作用是什么?
从上述示例可看出,冒号表示该短参数后需跟随附加参数;若无冒号,则无需附加参数。longopts中冒号的作用相同,可用等号替代。
至此已有一定了解,那么args和opts的具体作用是什么?
opts表示解析后的格式信息,args为未包含在格式信息中的剩余命令行参数。
opts是一个两元组的列表,格式为(选项串, 附加参数);若无内容则为空列表。
下面通过示例进一步说明:
在代码开头添加print(args)以打印args内容,此处省略具体代码。
运行结果如下:
GL$python3 111.py --help ssss
['ssss']
--help this is help/GL$python3 111.py -w 123 123
['123']
-w: 123
未被识别的多余参数将存入args列表中。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









