`
weimou66
  • 浏览: 1248530 次
文章分类
社区版块
存档分类
最新评论

一段流量分析工具代码检视

 
阅读更多
#!/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()
分享到:
评论

相关推荐

    PMD--java代码检视工具

    非常优秀的java代码检视工具。帮助大家打造高质量的java代码。希望大家喜欢

    Eclipse代码检视插件使用说明

    Eclipse代码检视插件,检查代码的规范性和合格性

    cc++代码检视

    这文档主要讲述了c和c++中编码后对代码的检视

    Javascript代码检视规范

    NULL 博文链接:https://njuptlinjian.iteye.com/blog/1683673

    代码检视

    NULL 博文链接:https://mwhgjava.iteye.com/blog/1752760

    代码检视工具Gerrit的日常使用

    Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控制,以及一个用来做Code Review是Web前台页面。当然,其主要功能就是用来做CodeReview。 Email激活 Gerrit账户的设置界面,点击“Contact...

    C/C++代码检视要点

    代码检视技能属于开发人员的基本功,能够很大程度地反应出开发人员的能力水平,前面4.4.1节已经讲过提高评审检视的方法。下面以实际的C/C++语言方面的代码来讲解代码检视的一些基本关注点和重点检查的内容。从C/C++...

    推荐17款最佳的代码审查工具!

    官方网站:http://codestriker.sourceforge.net/index.htmlRhodeCode是另一款非常棒的代码审查工具,能让你发现代码中的bug和问题,并在检查过后删除它们。官方网站:https://rhodecode.com/Codebrag是一款简单轻巧...

    代码评审检查表.xls

    Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码、测试过程和注释进行检查。 Code Review主要用来在软件工程过程中改进代码质。代码评审检查文档,统一规范文档、适合规范...

    代码审查CodeReview的最佳实践

    我一直认为CodeReview(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,CodeReview都是基本要求,代 我一直认为CodeReview(代码...

    Windows硬件检视工具

    Const MyName = "Windows硬件检视工具(测试版)

    C/C++代码检视实例

    下面就讲几个代码检视的实例,请读者在看这些实例时先不要看后面的分析,自己先拿张纸边看代码边把自己能够发现的问题记录下来,然后再和后面的分析进行比较。如果能够发现后现分析中没有提及的问题,说明已经将评审...

    OpenStack代码贡献以及检视规范

    NULL 博文链接:https://chenyingkof.iteye.com/blog/2231731

    最佳实践-代码静态检查技术分享

    最佳实践-代码静态检查技术分享,最佳实践-代码静态检查技术分享

    java编码规范(命名规范 代码检查)

    java变法规范 包括命名规范 代码检查 细化到包 类 源程序等的命名方式 方法 接口名的书写规范等

    CPU-Z,是一个检视cpu的软件,可以观察cpu名称,厂商,时钟,缓存

    这是一个检视cpu的软件,可以观察cpu名称,厂商,时钟,缓存,点击此处,立即下载是一个检视cpu的软件,可以观察cpu名称,厂商,时钟,缓存,点击此处,立即下载是一个检视cpu的软件,可以观察cpu名称,厂商,时钟,...

    12代码缺陷检查表示例.pdf

    12代码缺陷检查表示例.pdf 这是代码一系列最后一本拉, 谢谢大家的支持,今后有什么好书 拿来与大家一起分享

Global site tag (gtag.js) - Google Analytics