`
- 浏览:
687219 次
- 性别:
- 来自:
杭州
-
#!/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()
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
PMD是一款强大的开源静态代码分析工具,主要用于Java语言。它的主要功能是对Java源代码进行分析,检测潜在的编程错误、不良习惯和可能的性能问题,从而帮助开发者提高代码质量,降低维护成本。PMD通过定义一系列规则...
这是一个可配置的静态代码分析工具,可以检查代码的语法错误、潜在问题,并根据预设的规则进行格式化。安装和配置ESLint后,可以在开发过程中实时反馈代码质量问题,甚至集成到构建流程中,确保每次提交的代码都符合...
通过对C/C++代码检视的关注点进行详细分析,我们可以看出,代码检视是一个细致且全面的过程,涵盖了从设计一致性到具体实现细节的各个方面。遵循这些指导原则,可以帮助开发者编写出高质量、可维护的代码。同时,这...
NULL 博文链接:https://mwhgjava.iteye.com/blog/1752760
标题提到的"IDEA代码检视插件Code Review Helper"是针对IntelliJ IDEA集成开发环境的一款强大工具,旨在提升代码审查的效率和质量。代码审查是软件开发中的一个关键环节,通过它,团队成员可以互相检查彼此的代码,...
在深入讨论持续集成的质量控制时,报告提出了“可度量的代码检视”这一概念。代码检视被看作是提升代码质量的最佳实践,它能够帮助识别并预防潜在的问题,提高代码的可读性和可维护性。报告强调了规模化实践代码检视...
OpenStack的开发模式鼓励全球社区的贡献,因此了解其代码贡献和检视规范对于想要参与这个项目的开发者至关重要。 首先,我们要明确OpenStack的开发流程遵循Git版本控制系统,并使用Gerrit作为代码审查工具。开发者...
Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控制,以及一个用来做Code Review是Web前台页面。当然,其主要功能就是用来做CodeReview。 Email激活 Gerrit账户的设置界面,点击“Contact...
代码检视技能属于开发人员的基本功,能够很大程度地反应出开发人员的能力水平,前面4.4.1节已经讲过提高评审检视的方法。下面以实际的C/C++语言方面的代码来讲解代码检视的一些基本关注点和重点检查的内容。从C/C++...
标书检视工具
代码检视通常包括了静态代码分析和同行评审两个方面。 5. 可度量的代码检视:通过内建质量的第一步,即通过使用工具和平台支持统一检视体验,比如基于故事卡的代码检视,以及使用LeanCodeIDE插件进行提交规范控制。...
本文将深入探讨FLV Tag的结构、作用以及如何使用“flv tag查看分析工具”进行分析。 FLV文件结构: FLV文件由文件头、文件体两部分组成。文件头包含文件标识、文件长度、数据类型和第一个Tag的偏移量。文件体则由一...
- **Checkstyle**:这是一个静态代码分析工具,可以帮助检查代码是否符合预定义的编码规范。 - **PMD**:通过分析代码结构找出可能的问题,如未使用的变量、过长的方法等。 - **FindBugs**:检测代码中的潜在错误...
官方网站:http://codestriker.sourceforge.net/index.htmlRhodeCode是另一款非常棒的代码审查工具,能让你发现代码中的bug和问题,并在检查过后删除它们。官方网站:https://rhodecode.com/Codebrag是一款简单轻巧...
Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码、测试过程和注释进行检查。 Code Review主要用来在软件工程过程中改进代码质。代码评审检查文档,统一规范文档、适合规范...
Const MyName = "Windows硬件检视工具(测试版)
下面就讲几个代码检视的实例,请读者在看这些实例时先不要看后面的分析,自己先拿张纸边看代码边把自己能够发现的问题记录下来,然后再和后面的分析进行比较。如果能够发现后现分析中没有提及的问题,说明已经将评审...