python处理日志文件

python处理日志文件

1 打开日志文件

虽然,日志文件的后缀为.log,但是基本上与文本文件没有区别,按照一般读取文本文件的方式打开即可:

fp =open("e:\\data.log")
fp.close()

应用示例:

fp =open("e:\\data.log")
for line in fp.readlines(): # 遍历每一行
    filename = line[:14]    # 每行取前14个字母,作为下面新建文件的名称
    content = line[14:]     # 每行取第15个字符后的所有字符,作为新建文件的内容
 
    with open("e:\\"+filename+".txt","w") as fp2:
        fp2.write(content+"\n")
 
fp.close()
View Code

参考链接[1].

2 提取目标信息

日志文件每行字符串由空格分隔,例如对第1个字段(IP、时间等)感兴趣,则使用split()方法对每行字符串进行切片,将第1个子字符串存到列表里,用于下一步处理。

示例代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
txt = "Google#Runoob#Taobao#Facebook"
 
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
 
print x

输出结果:

['Google', 'Runoob#Taobao#Facebook']

参考链接[2].

3 统计分析

在上一步骤中,将感兴趣的目标信息存储到列表中,现使用python统计列表元素出现的次数,参考链接[3]提供了很多实现方法[4],本文使用collections[5]中的most_common()方法。

示例:

from collections import Counter
def counter(arr):
    return Counter(arr).most_common(2) # 返回出现频率最高的两个数

# 结果:[(2, 3), (1, 2)]

参考链接[3-4-5]

4 后记

完整代码(待整理):

# -*- coding: utf-8 -*-
"""
Created on Thu Apr 11 08:24:02 2019

@author: Green
"""
#import sys
#import time
from collections import Counter
#import pyExcel
import xlwt
fp =open("d:\\aa.log")
#print len(fp.readlines()) # 3593512
mycount = 0
IPlists = []
for line in fp.readlines():
    # control times====================
    #mycount += 1
    #if mycount > 100:
    #    break
    #==================================

    data = line.split(" ") # 依空格切片
    IP = data[0]
    IPlists.append(IP)

fp.close()

print 'Length of IPlists:', len(IPlists)

#IPlists.count()
IP_CountResult = Counter(IPlists).most_common()
#print IP_CountResult
#print '[0][0]', IP_CountResult[0][0]
print 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值