X12 EDIファイルを処理するためのスクリプトを作成していますが、これは行単位で繰り返したいものです。ファイルは一連の個別のレコードで構成され、それぞれ特殊文字で終了します(例:~
、以下を参照)。ファイルは大きくて(> 100 MB)、全体を読み込んで分割したくない場合があります。レコードは改行で区切られていません。最初の行を読み込むとファイル全体が読み込まれる可能性があります。ファイルはすべてASCIIです。文字までのファイルを読み取る
Pythonは、文字が改行であれば、特定の文字までファイルを読むことができます。私は任意の文字で同じことをしたいと思います。私は、行ごとの読みがバッファリングを介して実装されていると推測します。自分でバッファリングされたリーダーを実装することもできますが、より良い解決策がある場合は、余分なコードとオーバーヘッドを避けることになります。
注:私はいくつか似たような質問をしましたが、すべてが合理的なサイズであると仮定して、ファイルをラインで読み込むべきであると結論づけられました。この場合、ファイル全体はおそらく1行になります。
編集:セグメントターミネーター文字は、ファイルの106番目のバイトです。スクリプトが呼び出される前にはわかりません。
ファイルポインタに '.read(some_reasonable_number)'を使用し、 '〜'を見つけるまで結果を検索し、そうであれば '.seek()'を後方に検索しますか? – L3viathan
私はバッファリングされた読者についてあなたが正しいと信じています。残念ながら、 'open'の' newline'引数は '〜'を許可しません。 –
私はio.BytesIO上で専用の実装を書いて、チャンクでファイルを読んで、* line *を送って、特定の区切り文字で終わってしまうのではないかと心配です... –