次のようなコードがあります。
#opened file f
goto_line = num_lines #Total number of lines
while not found:
line_str = next(itertools.islice(f, goto_line - 1, goto_line))
goto_line = goto_line/2
#checks for data, sets found to True if needed
line_str は最初のパスでは正しいですが、その後のすべてのパスは別の行を読み取る必要があります。
たとえば、goto_line は 1000 から始まります。1000 行目までは問題なく読み取れます。次に、次のループ goto_line は 500 ですが、500 行目は読み取れません。1000 に近い行が読み取られます。
必要以上に読み取らずに、大きなファイルの特定の行を読み取ろうとしています。ある行に後方にジャンプすることもあれば、前方にジャンプすることもあります。
私は linecache を試しましたが、通常、このコードを同じファイルに対して複数回実行することはありません。