0

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

4

2 回答 2

1

您可以使用生成器以非常 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
于 2012-08-19T19:48:23.533 回答
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

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

于 2012-08-19T17:16:34.890 回答