Файлы располагаются в виде (одномерной) последовательности битов. «Линии» - это просто удобство, которое мы добавили, чтобы людям было легче читать. Итак, в общем, то, что вы спрашиваете, невозможно для простых файлов. Чтобы осуществить это, вам понадобится какой-то способ узнать, где начинается запись. Два наиболее распространенных способа:
- Поиск символов новой строки (другими словами, прочитайте весь файл).
- Используйте специально размеченный макет, чтобы каждая запись располагалась с использованием фиксированного с. Таким образом, вы можете использовать низкоуровневые файловые операции, такие как
seek
, чтобы перейти прямо туда, куда вам нужно. Это позволяет избежать чтения всего файла, но это больно делать вручную.
Я бы не стал сильно беспокоиться о производительности чтения файлов, если это не станет проблемой. Да, вы можете отобразить файл в памяти, но ваша ОС, вероятно, уже кеширует вас. Да, вы можете использовать формат базы данных (например, формат файла sqlite3 через sqlalchemy ), но это, вероятно, не стоит хлопот.
Примечание по поводу "фиксированной ширины": Что именно вы подразумеваете под этим? Если вы действительно имеете в виду «каждый столбец всегда начинается с одного и того же смещения относительно начала записи», тогда вы определенно можете использовать Python seek
для пропуска данных, которые вам не интересны.