@Elnurhan

Как прочитать случайную строку из txt-файла, не записывая строки этого файла в список?

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

Как это реализовать?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
nonname
@nonname
Проблема в том, что при открытии файла мы получаем поток io.TextIOBase с курсором в начале. Перенос строки - это обычный символ (или символы) и даже зная номер строки, которая нас интересует необходимо прочитать файл, чтобы понять где кончилась одна строка и начинается другая. В io.TextIOBase есть метод readline, можно воспользоваться им в цикле, для того чтобы пропустить лишние строки, в памяти при этом будет только текущая строка. Если бы мы знали позицию символа, откуда начинается искомая строка, можно было бы использовать метод seek.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@freelion93
StackOverflow

import random
print(random.choice(list(open('file.txt'))))
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
А почему загнать строки в БД и прочитать строку по айдишнику не хотите?
Ответ написан
adugin
@adugin
linecache — Random access to text lines
linecache.getline('textfile.txt', random.randint(0, 33723))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы