如何在Python中检查EOF?我在代码中发现一个错误,分隔符之后的最后一段文本没有添加到返回列表中。或者也许有更好的方法来表达这个函数?
这是我的代码:
def get_text_blocks(filename):
text_blocks = []
text_block = StringIO.StringIO()
with open(filename, 'r') as f:
for line in f:
text_block.write(line)
print line
if line.startswith('-- -'):
text_blocks.append(text_block.getvalue())
text_block.close()
text_block = StringIO.StringIO()
return text_blocks
您可能会发现使用itertools.groupby解决这个问题更容易。
另一种方法是使用regular expression来匹配分隔符:
这是发出缓冲区的标准问题。
你没有检测到EOF——那是不必要的。你写最后一个缓冲区。
只要
for
语句终止,文件结束条件就保持不变——这似乎是minory修复此代码的最简单方法(如果要在追加前检查它是否为空,可以在结尾提取text_block.getvalue()
)。相关问题 更多 >
编程相关推荐