概述
Python命令行参数解析
Python命令行解析是指读取终端传入的参数
sys.argv属性
这个是sys库立面的一个属性,其用于接收传入程序的命令行参数。它是一个列表。也就是差不多下面这种类型
sqlmap.py -u http://www.baidu.com
那么sys.argv的值就是如下
['sqlmap.py','-u','http://www.baidu.com']
它的第一个参数是文件的路径。多个参数的话需要用空格隔开。一般sys.argv需要配合optparse模块使用。
可以通过以下代码试试,sys.argv的输出
import sys
argsa = sys.argv
print(argsa)
注意需要在终端里面输入
optparse模块
optparse,是一个更够让程序设计人员轻松设计出简单明了、易于使用、符合标准的Unix命令例程式的Python模块。生成使用方法和帮助信息。简单来说它是一个用于处理sys.argv传进来的信息的模块。比如我们经常运行脚本时,会查看帮助信息就用用到--help
,那么这个就是由此模块处理的。
下面通过例子先来初步了解:
from optparse import OptionParser #optparse里面最主要的类就是OptionParser了
optParser = OptionParser() #创建一个对象
optParser.add_option('-f','--file',action = 'store',type = "string" ,dest = 'filename')
optParser.add_option("-v","--vison", action="store_false", dest="verbose",
default='hello',help="make lots of noise [default]")
#上面的就是最主要的操作,差不多是定义参数的信息 -v是参数简写 --vsion是全写 两种名字都是同一个东西
fakeArgs = ['-f','file.txt','-v','how are you', 'arg1', 'arg2']
#这个fakeArgs是模拟sys.argv
option , args = optParser.parse_args()
#上面这里没有传入任何参数是为了更好的演示
op , ar = optParser.parse_args(fakeArgs)
#这里传入了fakeArgs,其操作和上面的是一样的
#这里的op会返回一个类似字典的自定义类型option中的dest变量,而值则是我们自己传进去的
print("option : ",option)
print("args : ",args)
print("op : ",op)
print("ar : ",ar)
最后程序输出的结果如下
option : {'filename': None, 'verbose': 'hello'}
args : []
op : {'filename': 'file.txt', 'verbose': False}
#这里的verbose之所以是False于action参数有关
ar : ['how are you', 'arg1', 'arg2']
add_option()函数里面参数的具体说明
add_option()参数说明:
action:存储方式,分为三种store、store_false、store_true
type:类型
dest:存储的变量
default:默认值
help:帮助信息
action不同值得说明:
--store 上表示命令行参数的值保存在options对象中。例如上面一段代码,如果我们对optParser.parse_args()函数传入的参数列表中带有‘-f’,那么就会将列表中‘-f’的下一个元素作为其dest的实参filename的值,他们两个参数形成一个字典中的一个元素{filename:file_txt}。相反当我们的参数列表中没有‘-f’这个元素时,那么filename的值就会为空。
--store_false fakeArgs 中存在'-v'verbose将会返回False,而不是‘how are you’,也就是说verbose的值与'-v'的后一位无关,只与‘-v’存在不存在有关。
--store_ture 这与action="store_false"类似,只有其中有参数'-v'存在,则verbose的值为True,如果'-v'不存在,那么verbose的值为None。
参考于CSDN
默认的一个option -h
除了自定义的,在命令行输入-h
或--help
会自动整合所有选项的help及名称显示出来。如果添加一个usage的字符串也能把usage显示出来,例如:
import sys
from optparse import OptionParser
if __name__ == '__main__':
args = sys.argv[1:]
#读取除文件地址外得参数
usage = "This is test!" #使用方法字符串
optParser = OptionParser(usage) #创建一个对象 并把usage传进去
optParser.add_option('-f','--file',type = "string",dest = 'filename',help="请输入文件路径")
optParser.add_option("-u","--url", dest="url",default='http://www.baidu.com',help="请输入目标网址")
optParser.add_option("-t","--test", dest="test",action="store_true",help="测试是否存在")
#添加规则
option , args = optParser.parse_args(args)
#开始执行规则
pass
最后结果如图所示
完整的一个命令行传参示例
import sys
from optparse import OptionParser
if __name__ == '__main__':
args = sys.argv[1:]
#读取除文件地址外得参数
optParser = OptionParser() #创建一个对象
optParser.add_option('-f','--file',type = "string",dest = 'filename',help="请输入文件路径")
optParser.add_option("-u","--url", dest="url",default='http://www.baidu.com',help="请输入目标网址")
optParser.add_option("-t","--test", dest="test",action="store_true",help="测试是否存在",default='False')
#添加规则
option , args = optParser.parse_args(args)
#开始执行规则
print("-f传入了参数",option.filename) #注意option不是字典
print("-u传入了参数",option.url)
print("-t的状态为",option.test)
print("args多余的东西有",args)
pass
测试的命令行
python test.py -f "/flag" -t "hi" abcsdsd
输出结果:
-f传入了参数 /flag
-u传入了参数 http://www.baidu.com
-t的状态为 True
args多余的东西有 ['hi', 'abcsdsd']
最后
以上就是忐忑热狗为你收集整理的Python命令行参数解析Python命令行参数解析的全部内容,希望文章能够帮你解决Python命令行参数解析Python命令行参数解析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复