2016-05-18 20 views
0

私はsource.txtファイルにいくつかの行が含まれているとしましょう。 私はプログラムを手動で壊すまで何度も何度も行を印刷したいと思います。リストの何度も繰り返しループ

file_source = 'source.txt' 
source = open(file_source,'r') 

while 1: 
    for line in source: 
     print line 

source.close()  

もっとも簡単な解決策は、whileループに開いて閉じてしまうことです。私の気持ちでは、それは最善の解決策ではありません。

あなたは何か良いことを提案できますか? 変数ソースを何度もループする方法は?

よろしく

+2

あなたは 'itertools.cycle'を見ましたか? – jonrsharpe

答えて

4

私はこれがうまくいくことを確認しなかったが、あなただけseekファイルの先頭にして、繰り返し処理を続行することができます表示されます:ファイルが小さい場合

file_source = 'source.txt' 
source = open(file_source,'r') 

while 1: 
    for line in source: 
     print line 
    source.seek(0) 

source.close()  

、明らかに単純にメモリ内のリストにすべてのものを読み込んで、代わりにそれを反復することができます。

1

最初に行を読み取り、リストに保存することができます。あなたのファイルは読んだ後に閉じます。次に、あなたの無限ループを続行することができます

lines = [] 

with open(file_source, 'rb') as f: 
    lines = f.readlines() 

while 1: 
    for line in lines: 
     print line 

しかし、ファイルからすべてがメモリに読み込まれますので、あなたのファイルが非常に大きい場合、これはお勧めできません。

file.readlines([sizehint]):

EOFまで読み取ってreadline()を使用し、読み取った行を含むlistを返します。

関連する問題