Как начать чтение файла с определенной строки? Задача следующая:
Есть файл, длина строк в нем разная. Какая-то строка может быть 10 байт, какая-то 100, какая-то 500. Каким образом начать чтение файла с начала той или иной строки, при этом не читая весь файл?
Напрашивается решение:
Сделать фиксированную длину каждой строки, допустим 500байт. Таким образом, зная размер файла, мы можем с легкостью вычеслить на каком байте находится нужная строка и переместить на нужный байт указатель и начать чтение. Но, таким образом, размер файла существенно увеличится + есть вероятность что в выделенный лимит не все строки влезут.
Какие еще варианты?

21 Авг 2019 в 06:22
203 +2
1
Ответы
1

Один из вариантов - использовать цикл для построчного чтения файла, при этом заведя переменную, которая будет считать текущее количество обработанных байт. Когда нужно начать чтение с определенной строки, можно продолжать считывать строки до тех пор, пока не достигнем нужной строки, игнорируя при этом данные.

Другой вариант - использовать функцию seek(), которая позволяет перемещать указатель в файле. Можно использовать seek() чтобы переместить указатель на нужное место в файле и начать чтение с этой позиции.

Например, если вы хотите начать чтение с 5-й строки, вы можете использовать следующий код на Python:

with open("file.txt", "r") as file:
for _ in range(4): # прочитать первые 4 строки (считаем строки с 0)
file.readline()
for line in file:
print(line)

Оба подхода позволяют начать чтение файла с определенной строки, не читая его полностью.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир