`
yesjavame
  • 浏览: 687167 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

一段流量分析工具代码

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

相关推荐

    Tableau+数据可视化+网站流量分析

    **Tableau + 数据可视化 + 网站流量分析** 在当今大数据时代,数据可视化的工具如Tableau成为了数据分析师和业务决策者的重要助手。本文将深入探讨如何利用Tableau进行数据可视化,特别是在网站流量分析中的应用。 ...

    国外的一款流量监控小工具,小巧功能强大

    平均值则反映了网络在一段时间内的平均流量,这有助于理解日常流量模式,以便预测未来的需求或识别异常行为。 在标签中,“流量”和“监控”进一步强调了该工具的核心功能。流量分析可以帮助我们识别高流量的源头,...

    IP包流量分析程序

    IP包流量分析程序是一种用于监测和理解网络中IP数据包流量的工具,它可以帮助网络管理员、安全专家或研究人员深入洞察网络活动。通过分析IP包,我们可以获取关于数据传输的详细信息,例如源和目标IP地址、使用的协议...

    网站流量分析系统需求分析

    ### 网站流量分析系统需求分析 #### 一、引言 随着互联网技术的不断发展,网站已经成为企业和个人展示自己、提供服务的重要平台。...因此,建立一个高效准确的网站流量分析系统对于网站的成功运营至关重要。

    Shiro反序列化流量分析.pdf

    在Shiro中,反序列化漏洞主要出现在RememberMe服务中,该服务允许用户在登录后一段时间内自动保持登录状态。攻击者可以构造恶意的RememberMe令牌(通常包含加密的用户信息),并通过反序列化过程执行任意代码。 ...

    VLAN.rar_vlan_vlan topology data_拓扑_流量 分析_网络 流量 分析

    流量分析工具通常包括网络嗅探器(如Wireshark)、流量监控软件(如SolarWinds NetFlow Traffic Analyzer)等,它们可以帮助管理员识别高流量的应用程序、检测潜在的DDoS攻击,以及进行带宽利用率的统计。...

    js连接百度流量分析

    在提供的代码片段中,我们看到一段JavaScript代码,用于嵌入百度流量统计代码到网页中。下面对这段代码进行详细解析: 1. **变量定义**: ```javascript var _bdhmProtocol = ((...

    车流量统计代码

    OpenCV是一个强大的计算机视觉库,包含了丰富的图像处理和分析功能。 首先,车流量统计的关键在于准确地识别和跟踪车辆。在这个项目中,采用了高斯背景提取法来分离车辆与背景。高斯背景模型是一种常用的方法,它...

    IP包流量分析程序C++

    标题中的“IP包流量分析程序C++”是一个使用C++编程语言开发的工具,用于对网络中的IP数据包进行监控和分析。这个程序的核心功能是捕获本地网络上的IP数据包,并统计在特定时间范围内本机与其他主机之间通过不同协议...

    水文分析的代码

    综上所述,这段代码通过一系列的按钮触发事件,展示了如何在C#环境下利用ArcGIS的接口进行完整的水文分析流程,包括流方向分析、洼地填充、水流累积量计算以及定义流量汇聚点,为理解和实践GIS领域中的水文分析提供...

    仿cnzz流量分析,虚拟网站流量,自定义时间查询流量

    【标题】: "仿cnzz流量分析" 是一个模拟真实流量统计功能的项目,它能够虚拟网站流量数据,并允许用户自定义时间范围进行查询。这个项目借鉴了知名的网站统计服务CNZZ(即China Zhitong ZhiJi,现已被神马搜索收购)...

    基于Netfilter内核态网络流量分析研究.pdf

    综上所述,基于Netfilter的内核态网络流量分析是一种有效且高效的网络安全策略,它可以增强网络监控能力,及时发现并预防潜在的安全威胁,对于系统开发和维护人员具有重要的参考价值。通过深入理解和应用Netfilter...

    Window流量监控小工具源码和EXE

    它可以实时显示上传和下载速度,还可以记录一段时间内的总流量,以便于进行网络资源管理。 在这个项目中,开发者使用了.NET框架来实现这一功能。.NET框架是由微软开发的一个全面的开发平台,它提供了丰富的类库和...

    使用C#设计的网络流量统计工具

    2. 历史数据记录:保存和展示过去一段时间内的流量数据,帮助用户了解流量变化趋势。 3. 数据包过滤:允许用户根据协议、端口或IP地址筛选要显示的数据包。 4. 报告生成:生成详细的流量报告,便于分析和共享。 5. ...

    PHP网络数据包分析工具的设计与开发(源代码+论文).zip

    《PHP网络数据包分析工具的设计与开发》是一个深入探讨如何利用PHP进行网络数据包分析的项目,该项目包含源代码和相关论文。通过这个项目,我们可以了解到如何在PHP环境中构建一个功能强大的网络数据包分析工具,这...

    google流量统计代码

    Google Analytics(GA)作为全球范围内广泛使用的网站流量分析工具,提供了丰富的功能帮助用户追踪并分析网站访问数据。本文将详细介绍Google流量统计代码的工作原理、配置方法及其在网页中的应用。 #### 二、...

    Go-xsec-traffic为一款轻量级的恶意流量分析程序

    4. **恶意流量分析的关键技术**: - **协议解析**:xsec-traffic能解析多种网络协议,如TCP、UDP、HTTP、HTTPS等,提取关键字段以进行分析。 - **签名匹配**:通过预定义的恶意流量特征库进行匹配,快速识别已知...

    cacti源代码功能非常强大的网络流量监控与分析系统

    Cacti是一款基于Web界面的开源网络流量监控与分析系统,其源代码可供用户自定义和扩展,以满足各种网络管理需求。Cacti的核心功能包括数据采集、数据存储、图表生成以及警报通知,为网络管理员提供了全面的网络性能...

    抓包 工具 C# 源代码

    这段描述强调了这个项目的特点:源代码可用,使用C#编写,具备数据包截获和分析功能,并且可以在Visual Studio 2010这样的IDE环境下直接打开和学习。Visual Studio 2010是一款强大的开发工具,支持多种语言,其集成...

Global site tag (gtag.js) - Google Analytics