在python中使用递归打开和打印文件

在python中使用递归打开和打印文件,python,recursion,Python,Recursion,因此,我试图编写一个代码来打开一个文件,该文件中可能是空的,或者包含每行要打开的其他文件的名称。例如1.txt有2.txt。第一行和第二行分别显示3.txt和3.txt。2.txt是一个空文件,3.txt的第一行有4.txt。我必须有一个输出,打印代码运行的文件,比如“opening 1.txt..opening 2.txt等等,直到所有文件都打开。我遇到的问题是,当打开空文件时,我的程序停止打印。查看示例,我不确定如何使其读取第二行(3.txt)在1.txt中打开2.txt后,发现它是空的 到

因此,我试图编写一个代码来打开一个文件,该文件中可能是空的,或者包含每行要打开的其他文件的名称。例如1.txt有2.txt。第一行和第二行分别显示3.txt和3.txt。2.txt是一个空文件,3.txt的第一行有4.txt。我必须有一个输出,打印代码运行的文件,比如“opening 1.txt..opening 2.txt等等,直到所有文件都打开。我遇到的问题是,当打开空文件时,我的程序停止打印。查看示例,我不确定如何使其读取第二行(3.txt)在1.txt中打开2.txt后,发现它是空的

到目前为止,我的代码如下:(这是一个递归问题):


我将假设一行包含文件的完整路径。如果不是这样,那么您应该能够非常轻松地进行必要的路径修改。这是家庭作业,所以我将让您自己解决这个问题

试试这个:

def search(doc):
    print "Visiting", doc
    f = open(doc, 'r')
    for line in f:
        if line.strip():
            search(line.strip())

干杯

我将假设一行包含文件的完整路径。如果不是这样,那么您应该能够非常轻松地进行必要的路径修改。这是家庭作业,因此我将让您自己解决

试试这个:

def search(doc):
    print "Visiting", doc
    f = open(doc, 'r')
    for line in f:
        if line.strip():
            search(line.strip())

干杯

我是递归新手,所以我不确定你的代码中是否有递归。我学到的方法是需要一个基本情况,但我可能错了。@Dan你是对的,在使用递归时通常需要一个基本情况。这段代码中有一个基本情况,但并不明确:当文件为空时e for循环从未执行过,因此您不会再进行更深入的递归。我是递归新手,所以我不确定您的代码中是否包含任何递归。我了解到这需要一个基本情况,但我可能错了。@Dan您是对的,在使用递归时通常需要一个基本情况。这段代码中有一个基本情况,但它不是显式:当文件为空时,for循环的主体永远不会执行,因此您不会再进行更深入的递归。