2010-01-17 8 views
0

J'essaie donc d'écrire un code qui ouvre un fichier et à l'intérieur de ce fichier peut être vide ou contenir le nom d'autres fichiers à ouvrir sur chaque ligne. Par exemple. 1.txt a 2.txt. sur la première ligne et 3.txt sur la deuxième ligne. 2.txt est un fichier vide et 3.txt a 4.txt sur la première ligne. Je dois avoir une sortie qui imprime les fichiers que le code traverse comme "ouverture 1.txt..opening 2.txt et ainsi de suite jusqu'à ce que tous les fichiers sont ouverts. Le problème que je rencontre est que mon programme arrête d'imprimer lorsque le En regardant l'exemple, je ne suis pas sûr de savoir comment le faire lire la deuxième ligne (3.txt) dans 1.txt après avoir ouvert 2.txt et découvert qu'il est videOuverture et impression de fichiers en utilisant Recursion en python

le code que j'ai jusqu'à présent est la suivante: (ce qui est un problème de récursivité).

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

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

Répondre

4

Je vais supposer qu'une ligne contient le chemin complet du fichier Si ce n'est pas le cas, alors vous devrait être capable de faire les modifications de chemin nécessaires très facilement.Ceci est devoirs, alors je vais vous laisser figur e que sur votre propre

Essayez ceci:

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

Vive

+0

im nouveau pour récursion donc je ne suis pas sûr si votre code a une récursion en elle. la façon dont j'ai appris c'est qu'il doit y avoir un scénario de base mais je peux me tromper. – Dan

+2

@Dan vous avez raison qu'il doit généralement être un cas de base lors de l'utilisation de la récursivité. Il y a un cas de base dans ce code, mais il n'est pas explicite: quand le fichier est vide, le corps de la boucle for n'est jamais exécuté, donc vous ne vous en rouvrirez plus. –

Questions connexes