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 に答える