2016-04-11 3 views
2

Ich versuche eine rekursive Funktion in Python zu schreiben, um die Datei zu lesen. Die Datei hat eine Art Baumstruktur. Der Benutzer gibt den ersten Dateinamen ein. Die Datei enthält die Liste anderer Dateien. Wenn die Zeile mit '+' beginnt, bedeutet dies, dass die nachfolgende Zeile nach dem + Symbol ein anderer Dateiname ist, den wir lesen müssen. Wenn es nicht mit + Symbol beginnt, müssen wir diese Zeile drucken. Der folgende Code funktioniert nicht rekursiv.Rekursive Funktion zum Lesen der Datei in Python2.7

def readFile(myfile): 
print("FUnctionEntered\n",myfile) 
fileOpen=open(myfile,'r') 
for line in fileOpen: 
      if line.startswith('+'): 
        myfile=[line.lstrip('+') for line in fileOpen] 
        line.rstrip() 
        print(line,"\n") 
        readFile(line) 
      else: 
        print line 
fileOpen.close() 
return line 
+1

Was funktioniert nicht? Irgendwelche Fehler oder welche Datei (en) werden nicht gedruckt? – Evert

Antwort

1

Ich denke, das sollte es tun:

def readFile(filename): 
    print("Reading file: %s" % (filename)) 
    f=open(filename,'r').readlines() 
    for i in f: 
     if i.startswith('+'): 
      readFile(i[1:].rstrip()) 
     else: 
      print(i) 

liest in allen auf einmal Zeilen und dann durch sie mit der for-Schleife laufen. Wenn es mit '+' beginnt, ist der Dateiname die Zeichenfolge, die vom zweiten Zeichen i[1:] beginnt, und wir entfernen die neue Zeile mit .rstrip() wie zuvor. Wenn es nicht mit "+" beginnt, dann drucke einfach. Es gibt keine Notwendigkeit, etwas zurückzugeben, weil du scheinbar nichts damit machst.

mit rekursiven Funktionen wie diese vorsichtig. Sie können ganz leicht für immer weglaufen, wenn etwas Unvorhergesehenes passiert. Viel Glück!

+0

Danke .. es funktioniert .. –