实习期间,服务器的一位师兄让我帮忙整理一下服务器的log数据,最终我用Python实现了数据的提取并将其用Excel格式导出。下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出为Excel格式这样就比较方便统计了。
//实现将目录下所有文件格式为.txt的文件进行遍历统计,如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了,比较方便。
//过程就是先将所有的文件中的内容提取出来写入到一个新文件中,然后再从新文件中提取数据,最后将数据写入到Excel文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
from pyExcelerator import *
import os
currentpath = os.getcwd()
testlog = open ( 'test.mak' , 'w' )
os.mkdir(r 'Excel' )
print "currentpath: " ,currentpath
for file in os.listdir(currentpath):
if os.path.isfile(os.path.join(currentpath, file )) = = True :
if file .find( '.txt' )> 0 : / / 如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了
file_ = open ( file , 'r' )
content = file_.read()
file_.close()
testlog.write( content )
print 1
os.popen( 'log_parse.exe test.mak >> shuju.log' )
print 2
for _file in os.listdir(currentpath):
if os.path.isfile(os.path.join(currentpath,_file)) = = True :
if _file.find( '.log' )> 0 :
work = Workbook()
works = work.add_sheet( 'Sheet1' )
print 3
file_object = open (_file)
for i in range ( 0 , 2 ):
works.col(i).width = 10000
i = 0
for line in file_object:
line = line.rstrip( '\n' )
print 4
if not line.split():
i = i + 1
if line.strip():
array = line.split( ':' )
lineleft = array[ 0 ]
lineright = array[ 1 ]
works.write(i, 0 ,lineleft)
works.write(i, 1 ,lineright)
i = i + 1
_file = _file.rstrip( '.log' )
_file = 'Excel\%s.xls' % _file
work.save(_file)
|
//其中的print 1 2 3 4 是我打的log如果不想要可以直接删掉。 使用该Python实现时直接将上面代码保存到 test.py的文件中就行了。
另外中间使用到了一个c++的提取可执行文件log_parse.exe,放在下面了。使用时将其与test.py放在同一目录下就可以了。
如果想方便的话可以建一个.bat文件写成命令行的形式,直接点击一下就可以自动完成所有的工作了,如下:
echo
python test.py
我自己的实现是大约150M文件跑了一分半的时间出结果,我认为还比较理想。
以上这篇python脚本实现数据导出excel格式的简单方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。