因为需要通过外部传参来执行python代码,查阅资料,了解到python自带的getopt模块能够实现我的需求。此篇文章主要记录getopt模块的相关用法。
getopt简述
getopt模块专门用来处理命令行参数。具体用法我们通过代码实例进行验证。
如果你想直接一步到位,不想阅读我后面的文章,你也可以输入以下代码查看相关帮助信息。
1 | import getopt |
getopt模块详解
这个模块有两个函数,两个属性。
函数:
1 | getopt.getopt() |
属性:
1 | getopt.error |
两个属性主要用来抛出错误信息。我们一般常用的是getopt函数,文章后面主要介绍getopt函数的具体用法。
getopt函数的参数
1 | getopt.getopt(args,shortopts,longopts=[]) |
args指的是当前脚本接收的参数,是一个列表。可以由sys.argv获取,sys.argv[0]表示当前脚本名。
shortopts是短参数,类似python3 test.py -h
longopts是参数,类似python3 test.py –help
getopt函数返回值
我们将下面的代码写到test.py文件中。sys.argv[0]代表的是当前脚本的文件名,所以应该写sys.argv[1:]
1 | import sys,getopt |
执行代码
1 | python3 test.py -h helpinfo |
查看代码执行结果可知getopt函数返回的一个二元组的列表。
代码实例
以下代码是从我的一个工具开发项目中截取的部分。python文件名为Parserpkt.py。
1 | import sys,getopt |
打印工具版本和帮助信息
1 | python3 Parserpkt.py -v -h |
传入带值的参数,执行代码
1 | python3 Parserpkt.py -f test.pcap --args ip.src=192.168 ,ip.dst |
短参数名定义了 ‘f:o:vh’ , f和o后面均有”:”,这个:代表了当前参数是有值的。v和h后面没有:,所以在参数调用的时候就不需要传值。
长参数名定义了help和args。args需要接收参数值,所以必须在参数后面加上”=”。help在参数调用的时候就不需要传值。
需要传值的参数调用
短参数调用:-参数名[空格]参数值
长参数调用:–参数名=参数值