一段流量分析工具代码

#!/usr/bin/envpython
#
-*-coding:cp936-*-
importthreading,os,time

classReadConfig():

defBase_Config(self):

#配置话单路径
TelPath="d:\bak"
#printTelPath
returnTelPath


classGetPath(ReadConfig):

defGet_Path(self):

#获取路径下分析文件,建立字典
dict={}
dir_temp
=[]
file_temp
=[]
basepath
=self.Base_Config()
#printbasepath
forroot,dirs,filesinos.walk(self.Base_Config()):
#获取文件夹节点,获取文件夹对应文件
fordirindirs:
dir_temp.append(dir)
dir_temp.sort()
foriindir_temp:
#printself.Base_Config()+"\"+str(i)
forroot,dirs,filesinos.walk(self.Base_Config()+"\"+str(i)):
#获取对应文件夹下的数据
file_temp.append(files)
foriinrange(len(dir_temp)):
#建立数据字典
dict[dir_temp[i]]=file_temp[i]
returnbasepath,dict

classThreadMain(threading.Thread,GetPath):

def__init__(self):

#设定一个分析时间片,单位为分钟
self.AnalyseTimeArea=5
basepath,dict
=self.Get_Path()
#printbasepath,dict
self.dict=dict
self.basepath
=basepath

defThread_Contorl(self):

#读取字典的索引,索引为文件夹节点self.dict.keys()[i]
self.Add_Tel_Path_temp2=[]
#printself.dict.keys()
foriinrange(len(self.dict.keys())):
self.Add_Tel_Path_temp1
=[]
#printself.dict.keys()[i],self.dict[self.dict.keys()[i]]
foryinrange(len(self.dict[self.dict.keys()[i]])):
#printself.dict.keys()[i],self.dict[self.dict.keys()[i]]
#printlen(self.dict[self.dict.keys()[i]])
self.Add_Tel_Path=self.basepath+"\"+self.dict.keys()[i]+"\"+self.dict[self.dict.keys()[i]][y]
self.Add_Tel_Path_temp1.append(self.Add_Tel_Path)
#printAdd_Tel_Path_temp1
self.Add_Tel_Path_temp2.append(self.Add_Tel_Path_temp1)
#Add_Tel_Path_temp2得到已文件夹节点分类数组,格式如下[[2008-3-8],[2008-3-10],[2008-3-9]]
returnself.Add_Tel_Path_temp2

#================================================================================
#已文件夹为单位进行时间分割计算每日的话单总流量
#MethodName:AnalyseMethod_Countdayflow
#Author:xinkaiAdd:2008-3-10
#================================================================================
defAnalyseMethod_Countdayflow(self):

self.CountFlow
=0
#由线程类获得分析数组
self.AnalyseList=self.Thread_Contorl()
#printAnalyseList
foriinrange(len(self.AnalyseList)):
self.CountFlow
=0
#printself.dict.keys()[i],AnalyseList[i]
#===============================================================================
#此处需要加判断日期以及有效话单
#===============================================================================
foryinrange(len(self.AnalyseList[i])):
#printAnalyseList[i][y]
self.AnalyseData=open(self.AnalyseList[i][y],'r')
self.CountFlow
+=len(self.AnalyseData.readlines())
#printself.dict.keys()[i]+str(len(AnalyseData.readlines()))+" "
printself.dict.keys()[i]+"当日数据总流量为:"+str(self.CountFlow)

#================================================================================
#已文件夹为单位进行时间分割按照划定的时间片对每日话单分时流量进行统计
#MethodName:AnalyseMethod_CountTimeFlow
#Author:xinkaiAdd:2008-3-10
#================================================================================
defAnalyseMethod_CountTimeFlow(self):

Analyse_CountTimeFlow
=open('Analyse_CountTimeFlow.log','w')
#由线程类获得分析数组
self.AnalyseList=self.Thread_Contorl()
foriinrange(len(self.AnalyseList)):
temp
=[]
self.AnalyseStack
=[]
self.AnalyseStackSend
=[]
foryinrange(len(self.AnalyseList[i])):
#已时间文件夹为分割点,分类读取话单进行分析
#用来计算每个文件中每个话单记录的时间堆栈
self.AnalyseData=open(self.AnalyseList[i][y],'r')
self.AnalyseStackSend.append(self.AnalyseData.readlines())
#用来计算基础时间轴的堆栈AnalyseStack
self.AnalyseData=open(self.AnalyseList[i][y],'r')
self.AnalyseStack.append(self.AnalyseData.readlines()[0])
#已文件夹时间点分割,获取基础时间轴
self.BaseTimeCenter=self.AnalyseStack[0].split(',')[21]
#转化话单发送时间为整数
self.ChangeBaseTime=self.ChageTime(self.BaseTimeCenter)
forhinrange(len(self.AnalyseList[i])):
forzinself.AnalyseStackSend[h]:
self.TelTime
=self.ChageTime(z.split(',')[21])
#printstr(self.TelTime)+"//\"+str(self.ChangeBaseTime)
importmath
#获得已基础时间为轴的时间差值
#printint(math.fabs(self.TelTime-self.ChangeBaseTime))/60
temp.append((int(math.fabs(self.TelTime-self.ChangeBaseTime))/60)/self.AnalyseTimeArea)
printself.dict.keys()[i]
Analyse_CountTimeFlow.writelines(
"话单时间:%s 初始时间片时间片分时流量 "%(self.dict.keys()[i]))
Analyse_CountTimeFlow.close()
forjinrange(1440/int(self.AnalyseTimeArea)):
iftemp.count(j)<>0:
Analyse_CountTimeFlow
=open('Analyse_CountTimeFlow.log','a')
print"分析时间片:%s分钟;第%s时间片;分时流量为%s条;"%(self.AnalyseTimeArea,j,temp.count(j))
Analyse_CountTimeFlow.writelines(
"%s%s%s "%(self.AnalyseTimeArea,j,temp.count(j)))

defChageTime(self,datatime):

#初始化变量
self.YearMD=""
self.TimeCS
=""

#引用时间参数
self.datatime=datatime
self.SplitDataTime1
=self.datatime.split('')
self.SplitDataTime2
=self.SplitDataTime1[0].split('/')
self.SplitDataTime3
=self.SplitDataTime1[1].split(':')
#分割结果['2008','03','10']['11','18','18']

#组合分割数据转换时间为整数
foriinself.SplitDataTime2:
self.YearMD
+=i
forhinself.SplitDataTime3:
self.TimeCS
+=h
self.newTime
=self.YearMD+self.TimeCS
returnint(self.newTime)

def__del__(self):
pass

classControlThread(ThreadMain):

def__init__(self):

basepath,dict
=self.Get_Path()
self.dict
=dict
self.basepath
=basepath

defControl_Thread(self):

#控制使用分析线程
print"-----------------------------------------"
ObjectThread
=ThreadMain()
print"开始计算每日流量:"
ObjectThread.AnalyseMethod_Countdayflow()
print"计算结束"
print"-----------------------------------------"
importtime
time.sleep(
0.01)
print"开始计算分时流量:"
ObjectThread.AnalyseMethod_CountTimeFlow()
print"计算结束"
print"-----------------------------------------"

if__name__=="__main__":

ObjectControl
=ControlThread()
ObjectControl.Control_Thread()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值