ファイルは、ビットの (1 次元) シーケンスとして配置されます。「線」は、人間が読みやすくするために追加した便利なものです。したがって、一般的に、あなたが求めていることはプレーンファイルでは不可能です。これをやってのけるには、レコードの開始位置を見つける何らかの方法が必要です。最も一般的な方法は次の 2 つです。
- 改行記号を検索します (つまり、ファイル全体を読み取ります)。
- 各レコードが固定された with を使用してレイアウトされるように、特別に配置されたレイアウトを使用します。そうすれば、 のような低レベルのファイル操作を使用
seek
して、必要な場所に直接移動できます。これにより、ファイル全体を読み取る必要がなくなりますが、手動で行うのは面倒です。
問題にならない限り、ファイルの読み取りパフォーマンスについてはあまり心配しません。はい、ファイルをメモリ マップできますが、OS が既にキャッシュしている可能性があります。はい、データベース形式 (たとえば、sqlalchemyを介した sqlite3 ファイル形式) を使用できますが、おそらく手間をかける価値はありません。
「固定幅」に関する補足:これは正確にはどういう意味ですか? 「すべての列が常にレコードの先頭から相対的に同じオフセットで始まる」ことを本当に意味する場合は、Pythonseek
を使用して、興味のない過去のデータをスキップできます。