ホームページ  >  記事  >  バックエンド開発  >  大きなテキスト ファイルの特定の行に効率的にスキップするにはどうすればよいですか?

大きなテキスト ファイルの特定の行に効率的にスキップするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 03:39:30129ブラウズ

How to Efficiently Skip to a Specific Line in a Large Text File?

大きなテキスト ファイル内の特定の行へのスキップ

大規模なテキスト ファイルを扱う場合、直接ジャンプする必要があることがよくあります。特定の行に。簡単なアプローチの 1 つは、ファイルを繰り返し読み取ることですが、ターゲットの行番号が事前にわかっている場合は非効率的になる可能性があります。

問題:

コード スニペットの使用提供:

startFromLine = 141978
urlsfile = open(filename, "rb", 0)
linesCounter = 1
for line in urlsfile:
    if linesCounter > startFromLine:
        DoSomethingWithThisLine(line)
    linesCounter += 1

このコードはファイルを 1 行ずつ読み取り、無関係であっても先行するすべての行の処理を必要とします。

より効率的な解決策:

特定の行に効率的にジャンプするには、2 段階のアプローチを利用できます:

  1. オフセット リストを構築します:

    • ファイルを 1 行ずつ読み取り、各行の開始位置のオフセットを保存するリスト line_offset を作成します。
  2. ターゲット行までシーク:

    • ターゲット行番号 n を指定すると、file.seek(line_offset[n]) を使用してファイル ポインタをその行の先頭に移動します。

次に例を示します:

line_offset = []
offset = 0
for line in file:
    line_offset.append(offset)
    offset += len(line)
file.seek(0)

target_line = 141978
file.seek(line_offset[target_line])

このアプローチにより、目的の行に直接スキップし、無関係な行の処理による不必要なオーバーヘッドを回避できます。

以上が大きなテキスト ファイルの特定の行に効率的にスキップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。