当初为什么选择Python来做这件事,主要是因为Python有以下几个好处:
1.语法比较简单,容易快速上手
2.功能足够强大,有各种现成的模块,能快速实现各种功能
之前我们说过,要用Python实现数据的抓取和输出功能,抓取需要能读取SNAP文件,输出需要能把信息写到Excel表格中。为了实现这两部分功能,我们不需要写一堆代码,因为已经有现成的模块,我们只需要下载回来简单安装一下就好。
(1)读取SNAP
上一次我们提到过,SNAP文件其实是打包了两层,首先是以pax格式将所有文件打包成一个文件,然后再以Z模式压缩了一遍。所以我们直接查看的时候,需要解包两次才能看到那些文件。
对于Z模式的压缩,似乎由于专利限制之类的问题,我目前没有找到现成的Python模块可以去解压缩,如果有哪位知道,欢迎告诉我。
而对于pax的打包,则是跟tar格式类似,可以使用Python自带的tarfile模块去打开。
所以我们可以先利用解压缩软件,解开压缩,让snap.pax.Z解压为snap.pax,然后就可以利用Python处理了。
先给出一个例子example1
#! /usr/bin/env python #coding=utf-8 #以上两句用于声明python的环境和使用utf-8编码 import tarfile #导入tarfile模块,用于打开pax包文件 snapfile = tarfile.open("snap.pax") #打开pax文件,其中snapfile为包文件对象,“snap.pax”是pax包文件的文件名 adapter=snapfile.extractfile("./general/lsdev.adapter").read() #解包并读取包内的“./general/lsdev.adapter”文件,内容保存在名为adapter的对象 outputfile=open("lsdev-adapter.txt",'w') #选择输出文件,“lsdev-adapter.txt”是输出的文件名,‘w’表示写模式,文件对象名为outputfile outputfile.write(adapter) #将adapter对应的内容写入outputfile outputfile.close() #使用完,关闭outputfile
如果你已经安装了Python,那么把上面的内容复制到记事本,然后保存为“example1.py”(文件名无所谓,以py结尾即可),同目录下有一个snap.pax的文件。双击运行一下“example1.py”,你就会看到同目录下增加了一个lsdev-adapter.txt的文件,打开里面的内容,就是SNAP包中lsdev.adapter的内容。
以上去掉注释(#号开头的部分),真正的语句只有6句。是不是非常简单?
这可以当做一个小模板,比如你想输出snap.pax里的/general/lsdev.disk的内容,那么把前面程序里
adapter=snapfile.extractfile(“./general/lsdev.adapter”).read()
引号内的.general/lsdev.adapter 替换为./general/lsdev.disk即可,非常简单。
(2)输出到Excel文件
Python自带的模块没有读写Excel的功能,这就需要额外安装。
能实现该功能的模块有很多,我使用的是python-excel
它其实是由3个模块组成,xlrd,xlwt,xlutils
xlrd 用于读取Excel文件
xlwt 用于把数据写入Excel文件
xlutils 实现一些处理Excel文件的功能
官网 http://www.python-excel.org/ 不过因为挂在Google的服务上,所以结果你懂的……
好在不影响我们下载使用,以下地方都可以下载到
https://github.com/python-excel (包括3个模块和使用说明)
https://pypi.python.org/pypi/xlrd xlrd模块
https://pypi.python.org/pypi/xlwt xlwt模块
https://pypi.python.org/pypi/xlutils/ xlutils模块
顺便说一句 https://pypi.python.org/pypi 这个网站相当于Python模块的大集合,绝大多数Python的模块都会在这里,Python是非常鼓励大家共享代码共享功能的,不必重复去造轮子。
由于我们这次是要把信息输出到Excel文件,因此需要用到xlwt模块。
安装这个模块有两种方式,一种方式是在上面的网站下载xlwt,会得到一个压缩包,解压缩之后,在解包的目录下面,会看到一个setup.py的文件,然后在该目录下执行命令(需要切换到命令提示符操作)
python setup.py install
等待安装完成即可,基本上其他的Python模块也都可以使用这样的安装方法
第二种方式更简单,直接在Python的安装目录下,执行命令(需要切换到命令提示符操作)
pip install xlwt
就可以了。不过这种方式容易出错,建议大家用第一种方式保险一些。
安装完成后,就可以使用这个模块向Excel文件写内容了。
以下是一个例子
#! /usr/bin/env python #coding=utf-8 import xlwt #导入xlwt模块 excelfile = xlwt.Workbook() #创建一个工作薄,可以理解为一个Excel文件,取名为excelfile table = excelfile.add_sheet(u"测试表") #创建一个表,对应就是Excel文件中的一个Sheet,名为table table.write(0,0,u"测试") #向table表中第0行第0列的单元格中写入“测试”两个字,因为使用了中文,所以引号前面加u,表示unicode编码的字符串 table.write(0,1,u"成功") #向table表中第0行第1列的单元格中写入“成功”两个字 excelfile.save("test.xls") #将内容保存为文件名是test.xls的Excel文件
将以上内容保存为example2.py,双击运行后,就会在同目录下生成一个test.xls的Excel文件,打开后内容就是“测试”,“成功”。
可以看到,同样是只用了6条语句,就实现了最简单的把内容写入Excel文件。
下一次我们就讲讲如何把这两者结合,实现我们的SNAP分析功能
© 2015, QP. 版权所有.