通过python从大文件中读取部分文本作为页面

时间:2012-08-19 17:16:35

标签: python file line

在python中,file.readlines()获取所有行,如果文件大小很大(几Mb)则浪费。是否有一种有效的方法将部分文件作为页面? 通常将部分文本显示为webapp中的页面,考虑文本将进一步修饰。

2 个答案:

答案 0 :(得分:0)

目前我的字节大小粗略:

import os
def getpage(fname, pageindex, pagesize=100, ahead=20):
    """read page roughly by byte size"""
    size = os.path.getsize(fname)
    pagenum = size/pagesize
    f=open(fname,'r')
    pos=pageindex * pagesize
    #ahead some line
    pos -= ahead
    if pos <0: 
        pos = 0
    f.seek(pos)
    f.readline()
    txt = f.read(pagesize)
    txt += f.readline()    
    return txt

它不是固定的线条,有些文字松散,有些紧张。但对于中等页面大小,用户的视图是可以的。

答案 1 :(得分:0)

您可以使用生成器以非常pythonic和有效的方式执行此操作:

def getPage(fileName, numberOfLinesInAPage):

    f = open(fileName)

    lines = (line.strip() for line in f)
    pageBuffer = []
    for lineNum, eachLine in enumerate(lines,1):
        pageBuffer.append(eachLine)
        if lineNum % numberOfLinesInAPage == 0:
            yield pageBuffer
            pageBuffer = []
    if pageBuffer:
        yield pageBuffer    
    f.close()   

for i in getPage('test.txt',100):
    print i