Python:文字列を見つけるために莫大な行数のファイルを反復処理する方法はありますか?
私は、何百万というレコードの大サイズのテキストファイルを見ている特定の単語があります。
実際には、特定の文字列がファイル内にあるかどうかを調べたいと思っていました。私がやった
一つの方法は次のとおりです。
with open('ip.log', 'r') as f:
for line in f:
if semething in line:
break
else:
print 'Not found'
しかし、小さなファイルのために、このプロセスは、罰金になりますが、ファイルサイズが増大したり、レコードがmillions.Loadingの数十にまで成長するときメモリに大きなファイルがないかもしれないこと実現可能な解決策。
この問題に対処する方法はありますか?
観察:
- ファイルが1GB以上の何かのように巨大である場合、それは一つのテキストをお探しシステム
- をアップ遅くなりますが、私たちは、数百万レコードごとに反復処理する必要があります。
ベンチマークを実行しましたか?ファイルオブジェクトはジェネレータのようなオブジェクトなので、一度にメモリにロードされません。 – Kasramvd
あなたの観測#2はあまり意味がありません。 1つのテキストを探しているなら、何百万ものレコードを一度に繰り返し処理します。ただし、複数のテキストを検索する必要がある場合は、複数の検索を実行するのではなく、実用的に一度にすべてのテキストを検索するのが理にかなっています。 –
あなたのコードはファイル全体を一度にメモリに読み込んでいません。それは1行を処理し、それを忘れてしまいます。 – tripleee