Tjohohan Ответов: 4

Есть ли способ перейти к строке txt-файла, не читая его построчно? Как


Например, с помощью функции readlines() программа проходит через весь текстовый файл
Как перейти к строке и читать только эту строку?

/Йохан

Что я уже пробовал:

Не могу найти его описание в google

4 Ответов

Рейтинг:
0

MadMyche

Нет.

Фактический файл, который хранится, не имеет строк внутри него, он фактически имеет разрывы строк внутри него, чтобы отметить, где начинается новая строка.

Таким образом, единственный способ найти, где начинается "новая строка",-это прочитать файл и найти маркеры разрыва строки


Рейтинг:
0

OriginalGriff

Текстовые файлы не имеют "строк", они представляют собой непрерывный поток символов, содержащих символ новой строки (который может отличаться от системы к системе), который интерпретируется программным обеспечением как символ "конца строки".
Таким образом, "переход к строке" невозможен, потому что строки не имеют одинаковой длины, а текстовый файл не содержит никакого индекса, указывающего, где начинаются строки.

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

Но имейте в виду, что вы не можете "вставить" или "удалить" из текстового файла по той же причине - отсутствие концепции строк означает, что операция просто не работает. Чтобы сделать это, вы должны скопировать файл в новый файл до начала вставки или удаления, добавить или пропустить ваши данные, а затем скопировать остальную часть файла. Затем вы можете удалить оригинал и переименовать новый файл.


Рейтинг:
0

CHill60

Предостережение - я новичок в Python, поэтому это решение вряд ли будет свободным от ошибок.

Как вы теперь узнаете из решений 1 и 2, файл представляет собой непрерывный поток символов, где символ новой строки разделяет текст на то, что мы, люди, считаем "линиями".

Решение 1 дало вам большой ключ к простому подходу

Цитата:
прочтите в файле и найдите маркеры разрыва строки
Считайте весь файл как одну строку..
file = open('my_text_file',mode='r')
wholefile = file.read()
file.close()
Затем вы можете получить список всех "строк" из файла, используя splitlines[^] например
listlines = wholefile.splitlines(false)
Затем вы можете извлечь нужную строку из этого списка, например, чтобы получить 6-ю "строку":
line6 = listlines[5]
Существует хорошая дискуссия о плюсах и минусах splitlines по сравнению с split by Danziger здесь[^]


Рейтинг:
0

Patrice T

Цитата:
Есть ли способ перейти к строке txt-файла, не читая его построчно? Как

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


CHill60

Однако вы можете "предсказать" позицию, определив местоположение символа перевода строки

Patrice T

ОП сказал: "не читая его строчка за строчкой".

CHill60

Считайте весь файл как единый поток. Разделение на "обертку" (в память)

Patrice T

Я считаю, что чтение всего файла и разделение-это то же самое, что чтение строка за строкой.