2010-01-17 4 views
0

Итак, я пытаюсь написать код, который открывает файл, и внутри этого файла может быть пустым или содержать имя других файлов, которые будут открываться в каждой строке. Например. 1.txt имеет 2.txt. на первой строке и 3.txt на второй строке. 2.txt - пустой файл, а 3.txt имеет 4.txt в первой строке. Я должен иметь вывод, который печатает файлы, которые проходит код, например, «открытие 1.txt..opening 2.txt и т. Д., Пока все файлы не будут открыты. Проблема, с которой я сталкиваюсь, заключается в том, что моя программа прекращает печать, когда открывает файл, который пуст. Посмотрев на пример, я не уверен, как заставить его прочитать вторую строку (3.txt) в 1.txt после того, как она открыла 2.txt и выяснила, что она пуста.Открытие и печать файлов с использованием Recursion in python

код у меня до сих пор это: (это проблема рекурсии).

def search(doc): 
    a=open(doc) 
    b=a.readline() 
    if line == "": 
     print ("Visiting " + doc) 

    else: 
     print ("Visiting " + doc) 
     open(b[:-1]) 
     search(b[:-1]) 

ответ

4

Я буду считать, что строка содержит полный путь к файлу Если это не так, то вы должен быть в состоянии сделать необходимые изменения пути очень легко. Это домашнее задание, поэтому я позволю вам фигурировать е, что на свой собственный

Попробуйте это:

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

Приветствия

+0

им новое для рекурсии, так что я не уверен, что если ваш код любой рекурсии в нем. как я узнал, что это должен быть базовый случай, но я могу ошибаться. – Dan

+2

@ Да, вы правы, что при использовании рекурсии обычно должен быть базовый случай. В этом коде есть базовый пример, но он не является явным: когда файл пуст, тело цикла for никогда не выполняется, поэтому вы не будете углубляться. –

Смежные вопросы