2013-03-26 21 views
7

大きなファイル(数百MB)を指定すると、ファイル内の特定の開始インデックスと終了インデックスの間でコンテンツをすばやく読み取るにはどうすればよいですか?Pythonで大きなファイルの特定の部分を読み取る方法

基本的に、私はやってのより効率的な方法を探しています:

open(filename).read()[start_index:end_index] 

答えて

14

あなたはファイルにファイルをseekし、そこから一定量を読み取ることができます。 Seekを使用すると、ファイル内の特定のオフセットにアクセスできるようになり、読み込みをその範囲内のバイト数に制限することができます。

これは、あなたが探しているデータだけを読み込みます。

+2

OPの 'start_index'と' end_index'は文字位置であるため、シングルバイトエンコーディング(ASCIIなど)やバイナリファイルのOPコードでのみ使用できますが、 'seek()'と 'read( ) 'はバイト位置で動作します。可変幅のエンコーディングを持つファイルがある場合、正しくインデックスを作成できるようにファイルをデコードする必要があります。 –

+1

それは本当に良い点です。私は非常にASCIIモードでした:-) –

+1

1つの追加ポイント:ファイルの複数の連続したセグメントを読み込もうとすると、読み込みポインタは自動的に読み込みポインタを次のバイトに設定します。 – MrMas

関連する問題