Step By Step使用Python分析AIX SNAP(5)——批量处理多个文件

之前我们使用Python抓取信息,都是处理一个SNAP文件,而实际情况中,我们手上经常有多个SNAP文件需要处理,比如巡检或者信息统计。而同时处理多个文件,才能更大的发挥Python的威力。

我们在上次example4的基础上,加入一个循环,读取当前目录下的所有SNAP文件。

为了方便使用和扩展,我们把example4中的功能,定义为一个名为readsnap的函数。

另外,输出的格式,由于是需要输出多个文件的信息,因此我们把格式改为Excel表格一行输出一个文件的信息,每行的第一格输出Node Name,第二格输出CPU,第三格输出内存。

示例程序如下:

#! /usr/bin/env python
#coding=utf-8

import tarfile
import xlwt

import os
import sys
import os.path
#导入以上模块用于获取当前路径及当前目录下的文件名

def readsnap(table,file,linenum):
snapfile = tarfile.open(file)
#打开snap.pax文件
lparinfo=snapfile.extractfile("./general/lparstat.out").readlines()
#读取snap.pax包中的/general/lparstat.out文件

for line in lparinfo:
#循环读取lparstat.out的内容,每个循环中的line表示一行
outputline=line.split(":")
#以":"为关键字去分隔line的内容

if line.find("Node Name")!=-1:
table.write(linenum,0,outputline[1].strip())
#将node name写入每行第一格
if line.find("Online Virtual CPUs")!=-1:
table.write(linenum,1,outputline[1].strip())
#将CPU数写入每行第二格
if line.find("Online Memory")!=-1:
table.write(linenum,2,outputline[1].strip())
#将memory数写入每行第二格

linenum=linenum+1
#行号加1
return linenum
#返回行号

#以上为定义函数readsnap()部分

excelfile = xlwt.Workbook()
table = excelfile.add_sheet(u"测试表")
#创建一个Excel表对象,并创建一个名为“测试表”的sheet

linenum=0
#定义表格行号从0开始

for dirpath, dirnames, filenames in os.walk('.'):
#循环读取当前路径文件名
for filename in filenames:
if os.path.splitext(filename)[1] == '.pax':
#如果文件扩展名为.pax
filepath = os.path.join(dirpath, filename)
print("file:" + filepath)
linenum=readsnap(table,filepath,linenum)
#调用readsnap函数

excelfile.save("test.xls")
#将内容保存在“test.xls"文件

输出结果类似如下:

 

SAS_C 5 47872 MB
ETLSER_B 3 16384 MB

 

© 2015, szqp. 版权所有.

此条目发表在计算机与 Internet分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>