python 实时遍历日志文件

yipeiwu_com6年前Python基础

open 遍历一个大日志文件

使用 readlines() 还是 readline() ?

总体上 readlines() 不慢于python 一次次调用 readline(),因为前者的循环在C语言层面,而使用readline() 的循环是在Python语言层面。

但是 readlines() 会一次性把全部数据读到内存中,内存占用率会过高,readline() 每次只读一行,对于读取 大文件, 需要做出取舍。

如果不需要使用 seek() 定位偏移, for line in open('file') 速度更佳。

使用 readlines(),适合量级较小的日志文件

import os
import time
def check():
p = 
while True:
f = open("log.txt", "r+")
f = open("result.txt", "a+")
f.seek(p, )
#readlines()方法
filelist = f.readlines()
if filelist:
for line in filelist:
#对行内容进行操作
f.write(line)
#获取当前位置,为下次while循环做偏移
p = f.tell()
print 'now p ', p
f.close()
f.close()
time.sleep()
if __name__ == '__main__':
check() 

使用 readline(),避免内存占用率过大

import os
import time
def check():
p = 
while True:
f = open("log.txt", "r+")
f = open("result.txt", "a+")
f.seek(p, )
#while readline()方法
while True:
l = f.readline()
#空行同样为真
if l:
#对行内容操作
f.write(l)
else:
#获取当前位置,作为偏移值
p = f.tell()
f.close()
f.close()
break
print 'now p', p
time.sleep()
if __name__ == '__main__':
check()

相关文章

Python 通配符删除文件的实例

实例如下所示: # -*- coding: utf-8 -*- """ 使用通配符,获取所有文件,或进行操作。 """ import glob import os def files...

python的mysql数据库建立表与插入数据操作示例

本文实例讲述了python的mysql数据库建立表与插入数据操作。分享给大家供大家参考,具体如下: mysql数据库建立表 一 代码 import pymysql # 打开数据库连接...

pyqt5 从本地选择图片 并显示在label上的实例

pyqt5 从本地选择图片 并显示在label上的实例

1.主要用到 QFileDialog 方法打开本地文件 2.界面 打开前: 打开后: 3. 代码 import sys from PyQt5 import QtWidgets,...

Python中运行并行任务技巧

Python中运行并行任务技巧

示例 标准线程多进程,生产者/消费者示例: Worker越多,问题越大 复制代码 代码如下: # -*- coding: utf8 -*- import os import time i...

python处理cookie详解

要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: 复制代码 代码如下:Set-Cookie:session=8345234;expires=...