如何在递归函数中检查文件结尾?

时间:2019-04-18 16:29:00

标签: python functional-programming

我想实现一个将文件作为输入并处理行的递归函数。当满足条件或文件结尾时,递归停止。

问题是我找不到一种方法来检查我是否位于文件末尾。

例如,如果到达文件末尾,以下寻找行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

我真正想知道的是,是否有一种方法可以对文件应用递归函数,而文件仍然被延迟读取。

1 个答案:

答案 0 :(得分:1)

.readline()在到达文件末尾时将返回一个空字符串,并且空字符串为false,因此可以正常工作

def f_rec(file):
    line=file.readline()
    if line:
        return f_rec(file)
    else:
        return line