我正在Python中读取一个文件,其中每个记录由一个空的新行分隔。如果文件以两行或多行结尾,则最后一条记录按预期处理,但如果文件以单行结尾,则不处理。 Here's的代码:读取文件时保留最后一个新行
def fread():
record = False
for line in open('somefile.txt'):
if line.startswith('Record'):
record = True
d = SomeObject()
# do some processing with line
d.process(line)
if not line.strip() and record:
yield d
record = False
for record in fread():
print(record)
在该数据样本,一切都按预期( '---' 是一个空行):
记录1
数据的
数据B
数据c
\ n
记录2
数据的
数据b
数据c
\ n
\ n
但在这,最后一条记录isn't返回:
记录1
数据
数据B
数据c
\ n
记录2
数据a
数据B
数据c
\ n
我怎样才能从文件中保存的最后一行,以获得最后一个记录?
PS .:我使用术语“保留”,因为我找不到更好的名字。
谢谢。
编辑 最初的代码是一个剥离的版本,只是为了说明问题,但似乎我剥去了太多。现在我发布了所有函数的代码。
更多解释:为文件中的每个记录创建对象SomeObject
,记录由空的新行分隔。在记录结束时,它返回对象,以便我可以使用它(保存到数据库,与其他对象进行比较等)。
当文件以一个新行结束时,最后一条记录没有被放弃,这是主要问题。看起来,Python在空白时不读取最后一行。
您的代码确实符合作者的代码,但是从他的问题的措辞和他的样本数据看,他看起来并不像他想在每个非空行上创建一个新的SomeObject。他希望一行代码能够贡献给一个SomeObject。 – DNS 2009-03-03 18:39:24
啊是的..你说得对。 – 2009-03-03 18:45:35
编辑我的帖子来引用你的DNS。 – 2009-03-03 18:47:01