我想实现一个将文件作为输入并处理行的递归函数。当满足条件或文件结尾时,递归停止。
问题是我找不到一种方法来检查我是否位于文件末尾。
例如,如果到达文件末尾,以下寻找行condition
行的代码不会停止。
def f_rec(file):
line=file.readline()
if not condition(line): # or file end
return f_rec(file)
else:
return line
我很高兴使用文件对象以外的其他数据结构,但是必须懒惰地读取文件。我不想使用for循环,因为我喜欢函数式编程。我的文件中可能有空行。
要澄清:
这不是询问如何检查文件末尾的任何问题的重复项。我非常知道您可以这样做:
for line in file:
if condition(line):
return line
我真正想知道的是,是否有一种方法可以对文件应用递归函数,而文件仍然被延迟读取。
答案 0 :(得分:1)
.readline()
在到达文件末尾时将返回一个空字符串,并且空字符串为false,因此可以正常工作
def f_rec(file):
line=file.readline()
if line:
return f_rec(file)
else:
return line