2016-05-05 6 views
1

私は、2つのファイルを開き、1つのファイル内の各文字列をループして、他のファイル内の一致する文字列(またはその一部)を探すPythonコードの単純なビットを持っています。見つかった場合は、その行をファイルに書き込む必要があります。なんらかの理由でそれは繰り返されていません。ここに私のコードは次のとおりです。Python:なぜ私のループは反復しませんか?

out = open("outputfile.txt", "w") 
with open("inputfile1.txt", "r") as f: 
    with open("inputfle2.txt", "r") as map: 
     for line in f: 
      for mline in map: 
       if line[0:6] in mline: 
        out.write(line) 

結果の出力ファイルは一つだけの行が含まれているいくつかの理由。私は行をチェックして、それは正しいので、コードは私が望むことをやっているが、ループは何らかの理由で両方のファイルを反復していない。私はこれに明らかな解決策があることを知っていますが、私のコードを検索して時間をかけて何時間も何の結果も得られていません。

+0

[私はPythonで並列に二つのリストを反復処理するにはどうすればよい?](http://stackoverflow.com/q/1663807) – GingerPlusPlus

答えて

4

lineがファイルfの2行目に到達するまでには、mlineはすでにmapのすべての行を読み取ってジェネレータを使い果たしています。この

out = open("outputfile.txt", "w") 

with open("inputfle2.txt", "r") as map: 
    map_lines = map.readlines() 

with open("inputfile1.txt", "r") as f: 
    for line in f: 
     for mline in map_lines: 
      if line[0:6] in mline: 
       out.write(line) 
+0

ありがとう:

あなたがmapのコンテンツをキャッシュする必要があります完璧に働いた! – spiral01

関連する問題