• 技术文章 >后端开发 >Python教程

    python 实时遍历日志文件

    2016-06-10 15:05:16原创659
    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()
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Python Web框架Tornado运行和部署 下一篇:Python爬虫爬验证码实现功能详解
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 手把手教你在Python使用plot()函数画图• 详细解析python正则表达式re模块• 一文搞定Python中pip的安装与使用• 一文详解python生成器• Python实战解析selenium的基本元素与键盘鼠标模拟事件
    1/1

    PHP中文网