2017-11-09 4 views
0

エポックタイムスタンプを含む大きなテキストファイルから値の範囲を取得する必要があります。現在、開始点/終了点のファイルをループしています。行番号を取得してから、リストを繰り返し繰り返し、範囲値を取得します。これはリストを2回ループするので非常に非効率的です。より良い方法がありますか?テキストファイルを繰り返し、Pythonで値の範囲を返す

start = '1509347040' 
end = '1509347700' 
with open('database.txt') as fp: 
    for i, line in enumerate(fp): 
     if start in line: 
      start=i 
     elif end in line: 
      end=i 
      break 
    for i, line in enumerate(fp): 
     if i >= start and i <= end: 
      print(i,line) 

答えて

2

あなたはstart遭遇した瞬間を追跡するためにflag変数を使用することができます。このようなもの。この方法では、endまでしかファイルを通過しません(最悪の場合、ファイルを1回だけ)。

flag = 0 
with open('database.txt') as fp: 
    for i, line in enumerate(fp): 
     if start in line: 
      flag = 1 
     elif end in line: 
      print(i,line) 
      break 
     if flag==1: 
      print(i,line) 
関連する問題