我有一个非常大的文本文件(比内存中的大得多)。我想做的是使用类似的东西:
for record in myFile:
process_record();
添加了一些技巧,我的记录用空行分隔(中间有各种各样的东西)。例如......
data1
data2,data3,moredata
anotherrecord,otherstuff
yippee
kaiyay
mom
aThird,record:here
如何在python中迭代文件,其中每个循环迭代访问文件中的单个记录?
答案 0 :(得分:4)
您可以使用生成器功能:
def records(textfile):
record_lines = []
for line in textfile:
if line != '\n':
record_lines.append(line)
else:
yield ''.join(record_lines)
record_lines = []
yield ''.join(record_lines)
for record in records(the_file):
process(record)
答案 1 :(得分:2)
您可以创建一个连接线的迭代器,直到找到一个空行。
class MyIter:
def __init__(self, infile):
self.infile=infile
def __iter__(self):
return self
def next(self):
lines = []
for line in infile:
line = line.strip()
if len(line) > 0:
lines.append(line)
else:
break
if len(lines)==0:
raise StopIteration
else:
return ",".join(lines)
并尝试
for line in MyIter(infile):
print line