2016-04-11 12 views
2

Pythonでファイルを読み込むための再帰関数を作成しようとしています。このファイルには、一種のツリー構造があります。ユーザーが最初のファイル名を入力します。ファイルには他のファイルのリストが含まれます。 `+ 'で始まる行は、+ symbolの後に続く行を意味します。これは、読み込みが必要な別のファイル名です。 +記号で始まらなければ、その行を印刷する必要があります。 以下のコードは再帰的に動作しません。一度にすべての行でPython2.7でファイルを読み込むための再帰関数

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) 

読み取りをし、その後ためのループでそれらを介して実行します。

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

どうしたらうまくいかないのですか?すべてのエラー、またはどのファイルが印刷されていませんか? – Evert

答えて

1

私は、これはそれを行うべきだと思います。 '+'で始まる場合、ファイル名は2番目の文字であるi[1:]から始まる文字列であり、以前と同様に新しい行を.rstrip()で取り除きます。 '+'で始まらない場合は印刷してください。明らかに何もしていないということは何も返す必要はありません。

このような再帰関数には注意してください。予期せぬことが起こった場合、彼らは永遠に逃げることができます。がんばろう!

+0

ありがとう..それは動作します.. –

関連する問題