在 python 中,file.readlines() 获取所有行,如果文件大小很大(几 Mb),那就浪费了。有没有一种有效的方法来获取部分文件作为页面?通常部分文本在 webapp 中显示为页面,考虑文本要进一步修饰。
问问题
874 次
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 回答