大きなテキスト ファイルでの行ジャンプの最適化
特定の行をシークするときに大量のテキスト ファイルを 1 行ずつ処理すると非効率になる可能性があります。提供されたコードは、必要な行がファイルのかなり前にある可能性があるという事実を無視して、15 MB ファイルのすべての行を反復して目的の行番号に到達します。
代替アプローチ
この問題に対処するには、ライン オフセットを利用する最適化手法の採用を検討してください。これには、ファイル全体を 1 回読み取り、各行の開始オフセットを含むリストを作成することが含まれます。
Implementation
line_offset = [] # List to store line offsets
offset = 0 # Current offset
# Loop through each line in the file
for line in file:
line_offset.append(offset) # Store the current line offset
offset = len(line) # Update the offset for the next line
file.seek(0) # Reset the file pointer to the beginning
Usage
特定の行 (n) にスキップするには、対応するオフセットにシークするだけです。
line_number = n
file.seek(line_offset[line_number])
このアプローチにより、すべての中間行を処理する必要がなくなり、大きなファイルのパフォーマンスが大幅に向上します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3