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

发布时间:2022-11-20

本文目录一览:

1、如何用 python 分析网站日志 2、日志文件太大,python怎么分割文件,多线程操作 3、请教python 如何分日志级别分文件输出 4、有几千个TXT格式的log文件,怎么用Python批量提取每个log文件固定位置的具体数值,输出到一个TXT文件?

如何用 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()......
  1. 日志的分析。 (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.stdoutprint行导向到你定义的日志文件中,例如:

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,不介意可以发给我,练着玩