您的位置:

python拆分canlog,python拆分文本文件

本文目录一览:

如何用 python 分析网站日志

日志的记录

Python有一个logging模块,可以用来产生日志。

(1)学习资料

前边几篇文章仅仅是其它人的简单学习经验,下边这个链接中的内容比较全面。

(2)我需要关注内容

日志信息输出级别

logging模块提供了多种日志级别,如:NOTSET(0),DEBUG(10),

INFO(20),WARNING(30),WARNING(40),CRITICAL(50)。

设置方法:

logger = getLogger()

logger.serLevel(logging.DEBUG)

日志数据格式

使用Formatter设置日志的输出格式。

设置方法:

logger = getLogger()

handler = loggingFileHandler(XXX)

formatter = logging.Formatter("%(asctime)s %(levelname) %(message)s","%Y-%m-%d,%H:%M:%S")

%(asctime)s表示记录日志写入时间,"%Y-%m-%d,%H:%M:%S“设定了时间的具体写入格式。

%(levelname)s表示记录日志的级别。

%(message)s表示记录日志的具体内容。

日志对象初始化

def initLog():

logger = logging.getLogger()

handler = logging.FileHandler("日志保存路径")

formatter = logging.Formatter("%(asctime)s %(levelname) %(message)s","%Y-%m-%d,%H:%M:%S")

handler.setFormatter(formatter)

logger.addHandler(handler)

logger.setLevel

写日志

logging.getLogger().info(), logging.getLogger().debug()......

2. 日志的分析。

(1)我的日志的内容。(log.txt)

2011-12-12,12:11:31 INFO Client1: 4356175.0 1.32366309133e+12 1.32366309134e+12

2011-12-12,12:11:33 INFO Client1: 4361320.0 1.32366309334e+12 1.32366309336e+12

2011-12-12,12:11:33 INFO Client0: 4361320.0 1.32366309389e+12 1.32366309391e+12

2011-12-12,12:11:39 INFO Client1: 4366364.0 1.32366309934e+12 1.32366309936e+12

2011-12-12,12:11:39 INFO Client0: 4366364.0 1.32366309989e+12 1.32366309991e+12

2011-12-12,12:11:43 INFO Client1: 4371416.0 1.32366310334e+12 1.32366310336e+12

2011-12-12,12:11:43 INFO Client0: 4371416.0 1.32366310389e+12 1.32366310391e+12

2011-12-12,12:11:49 INFO Client1: 4376450.0 1.32366310934e+12 1.32366310936e+12

我需要将上述内容逐行读出,并将三个时间戳提取出来,然后将其图形化。

(2) 文件操作以及字符串的分析。

打开文件,读取出一行日志。

file = file("日志路径",“r”)

while True:

line = file.readline()

if len(len) == 0:

break;

print line

file.close()

从字符串中提取数据。

字符串操作学习资料:

;method=viewSharedItemThroughLinksharedBy=-1137845767117085734

从上面展示出来的日志内容可见,主要数据都是用空格分隔,所以需要使用字符串的

split函数对字符串进行分割:

paraList = line.split(),该函数默认的分割符是空格,返回值为一个list。

paraList[3], paraList[4], paraList[5]中分别以字符串形式存储着我需要的时间戳。

使用float(paraList[3])将字符串转化为浮点数。

(3)将日志图形化。

matplotlib是python的一个绘图库。我打算用它来将日志图形化。

matplotlib学习资料。

matplotlib的下载与安装:

对matplotlib的宏观介绍:

对matplotlib具体使用的详细介绍:

在matplotlib中设置线条的颜色和形状:

如果想对matplotlib有一个全面的了解,就需要阅读教程《Matplotlib for Python developers》,教程下载地址:

使用实例

import matplotlib.pyplot as plt

listX = [] #保存X轴数据

listY = [] #保存Y轴数据

listY1 = [] #保存Y轴数据

file = file("../log.txt","r")#打开日志文件

while True:

line = file.readline()#读取一行日志

if len(line) == 0:#如果到达日志末尾,退出

break

paraList = line.split()

print paraList[2]

print paraList[3]

print paraList[4]

print paraList[5]

if paraList[2] == "Client0:": #在坐标图中添加两个点,它们的X轴数值是相同的

listX.append(float(paraList[3]))

listY.append(float(paraList[5]) - float(paraList[3]))

listY1.append(float(paraList[4]) - float(paraList[3]))

file.close()

plt.plot(listX,listY,'bo-',listX,listY1,'ro')#画图

plt.title('tile')#设置所绘图像的标题

plt.xlabel('time in sec')#设置x轴名称

plt.ylabel('delays in ms'')#设置y轴名称

plt.show()

日志文件太大,python怎么分割文件,多线程操作

python的多线程为伪多线程,多线程并不能提高文件IO的速度,在读取文件时使用直接读取 for line in open('文件名', 'r')  效率最高,因为此方式为直接读取,不像其它方式要把文件全部加载到内存再读取,所以效率最高。分割时文件时,提前计算好行数,把读取的每固定数量的行数存入新文件,直接读取完成,最后删除旧文件,即可实现文件分割。

示意代码:

line_count = 0

index = 0

fw = open('part'+str(index)+'.log', 'w')

for line in open('filename.log', 'r'):

    fw.write(line)

    line_count += 1

    # 假设每10000行写一个文件

    if line_count  10000:

        fw.close()

        index += 1

        fw = open('part'+str(index)+'.log', 'w')

fw.close()

请教python 如何分日志级别分文件输出

利用sys.stdout将print行导向到你定义的日志文件中,例如:

import sys

# make a copy of original stdout route

stdout_backup = sys.stdout

# define the log file that receives your log info

log_file = open("message.log", "w")

# redirect print output to log file

sys.stdout = log_file

print "Now all print info will be written to message.log"

# any command line that you will execute

log_file.close()

# restore the output to initial pattern

sys.stdout = stdout_backup

print "Now this will be presented on screen"

有几千个TXT格式的log文件,怎么用Python批量提取每个log文件固定位置的具体数值,输出到一个TXT文件?

1.将这些TXT文件先合并

2.找到这些具体数值的特征

3.用正则表达式过滤提取

这阵子正学习python,不介意可以发给我,练着玩