Python では、大きなテキストファイルを 1 行ずつ読み取るのは簡単です。
for line in open('somefile', 'r'): ...
しかし、バイナリファイルを読み取り、改行「\ n」ではなく、特定のマーカーでそのコンテンツを(ジェネレーターによって)「分割」する方法は?
私はそのようなものが欲しい:
content = open('somefile', 'r').read()
result = content.split('some_marker')
もちろん、メモリ効率が良いです (ファイルは約 70GB です)。もちろん、ファイルをすべてのバイト単位で読み取ることはできません (HDD の性質上、非常に遅くなります)。
「チャンク」の長さ (これらのマーカー間のデータ) は、理論的には 1 バイトからメガバイトまで異なる場合があります。
したがって、要約する例を示すと、データは次のようになります (ここでは数字はバイトを意味し、データはバイナリ形式です)。
12345223-MARKER-3492-MARKER-34834983428623762374632784-MARKER-888-MARKER-...
それを行う簡単な方法はありますか(チャンクでの読み取りを実装しない、チャンクを分割する、テールを記憶するなど)?