Python文件倒读,主要用于日志分析
Python文件倒读,主要用于日志分析
connie_wu 发表于3年前
Python文件倒读,主要用于日志分析
  • 发表于 3年前
  • 阅读 49
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: Python文件倒读,主要用于日志分析

#!/usr/bin/env python

#-*- coding:utf-8 -*-


"""

思路:

    先将指针移动到文件最后

    f.seek(0,2)

    向前移动2位读一位

    f.seek(-2,1)

    f.read(1)

    f.tell() == 1  到达文件顶部退出循环

    

    

    文件内容:

            a

            b

            c

            d

"""

f = open('文件倒读.txt')

f.seek(0,2)

while f.tell() > 1:

    f.seek(-2,1#第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后

    c = f.read(1)

    print c,

f.close()




#!/usr/bin/env python

#-*- coding:utf-8 -*-


"""

思路:

    先将指针移动到文件最后

    f.seek(0,2)

    向前移动2位读一位

    f.seek(-2,1)

    f.read(1)

    f.tell() == 1  到达文件顶部退出循环

    

    

    文件内容:

            1a

            2b

            3c

            4d

"""

f = open('文件倒读.txt')

line = ''

f.seek(0,2)

#while f.tell() > 1:

while True:

    if f.tell() == 1:

        print line

        break

    f.seek(-2,1#第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后

    c = f.read(1)

    if c != '\n':

        line = c + line

    else:

        print line

        line = ''

f.close()








#!/usr/bin/env python

#-*- coding:utf-8 -*-


"""

思路:

    先将指针移动到文件最后

    f.seek(0,2)

    向前移动2位读一位

    f.seek(-2,1)

    f.read(1)

    f.tell() == 1  到达文件顶部退出循环

    

    

    文件内容:

            1a

            2b

            3c

            4d

"""

import sys

def filerev(file):

    fd = open(file)

    line = ''

    fd.seek(0,2)

    #while f.tell() > 1:

    while True:

        if fd.tell() == 1:

            yield line

            break

        else:

            fd.seek(-2,1#第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后

            c = fd.read(1)

            if c != '\n':

                line = c + line

            else:

                yield line

                line = ''

    fd.close()


def main():

    a = filerev('文件倒读.txt)#生成器对象,返回文件类型

    for i in a:

        print i

if __name__ =='__main__':

    main()




buff方法读取

#!/usr/bin/env python

#-*- coding:utf-8 -*-


"""

思路:

    先将指针移动到文件最后

    f.seek(0,2)

    向前移动2位读一位

    f.seek(-2,1)

    f.read(1)

    f.tell() == 1  到达文件顶部退出循环

    

    

    文件内容:

            1a

            2b

            3c

            4d

"""

import sys

def filerev(file):

    buf = 256

    fd = open(file)

    line = ''

    fd.seek(0,2)

    size = fd.tell()

    rem = size % buf

    pos = max(0,size-(buf+rem))

    #while f.tell() > 1:

    while True:

        if pos < 0:

            yield line

            break

        else:

            fd.seek(pos)  #第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后

            d = fd.read(buf+rem)

            rem = 0

            pos -= buf

            if '\n' in d:

                for c in reversed(d):

                    if c != '\n':

                        line = c+line

                    else:

                        if line:

                            yield line

                        line = ''

            else:

                line = d+line

    fd.close()


def main():

    a = filerev('文件倒读.txt')#生成器对象,返回文件类型

    for i in a:

        print i

if __name__ =='__main__':

    main()










  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 18
码字总数 4503
×
connie_wu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: