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