您的位置:首页 > 编程语言 > Python开发

python 倒读 一个文件,从最后一行往前读

2014-04-04 16:23 323 查看
#!/usr/bin/env python

# -*-mode: python; coding: iso-8859-1 -*-

#

# Copyright (c) Peter Astrand <astrand@cendio.se>

import os

import string

class BackwardsReader:

    """Read a file line by line, backwards"""

    BLKSIZE = 4096

    def readline(self):

        while 1:

            newline_pos = string.rfind(self.buf, "\n")

            pos = self.file.tell()

            if newline_pos != -1:

                # Found a newline

                line = self.buf[newline_pos+1:]

                self.buf = self.buf[:newline_pos]

                if pos != 0 or newline_pos != 0 or self.trailing_newline:

                    line += "\n"

                return line

            else:

                if pos == 0:

                    # Start-of-file

                    return ""

                else:

                    # Need to fill buffer

                    toread = min(self.BLKSIZE, pos)

                    self.file.seek(-toread, 1)

                    self.buf = self.file.read(toread) + self.buf

                    self.file.seek(-toread, 1)

                    if pos - toread == 0:

                        self.buf = "\n" + self.buf

    def __init__(self, file):

        self.file = file

        self.buf = ""

        self.file.seek(-1, 2)

        self.trailing_newline = 0

        lastchar = self.file.read(1)

        if lastchar == "\n":

            self.trailing_newline = 1

            self.file.seek(-1, 2)

if __name__=="__main__":

    br = BackwardsReader(open('txt.txt'))

    for i in range(14):

        print br.readline()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python