python获取文件倒数第n行

#获取文件倒数第n行
def getTail(file,num):
    readlen=1024 #每次多偏移1024字节
    readoffset=0 #每次从文件末尾向前偏移量
    linenum=0 #当前读取的行号
    preindex=None #上一个换行符所在位置
    while True:
        readoffset=readoffset+readlen #文件每次偏移readoffset个字符
        if file.seek(readoffset,2)==None:
            file.seek(0,0) #若无num行则移到开始处
        readline=file.read()
        if preindex==None: #当为第一次查找换行符
            index=readline.rfind('\n')
        else:
            index=readline.rfind('\n',0,preindex-1) #否则从前一个换行符开始找
        while index>-1:  #获取读取文本中总共的行数
            linenum=linenum+1
            if linenum==num:
                return readline[index:preindex]
            preindex=index
            index=readline.rfind('\n',0,preindex-1)
    if linenum!=num: #若无这么多行,报错
        print("ERROR:this file only have %d lines"%(linenum))
        return None

猜你喜欢

转载自blog.csdn.net/sinat_30477313/article/details/81836283