Найти - Пользователи
Полная версия: Как считать из файла произвольную строку не читая весь файл?
Начало » Python для новичков » Как считать из файла произвольную строку не читая весь файл?
1
pasaranax
Есть текстовый файл в котором находятся короткие тексты (250-300 символов), на каждой строке один текст, строк может быть тысяча. Нужно случайным образом взять оттуда одну строчку (один текст). Можно ли это как-то сделать не читая весь файл или просто как-то минимизировать обращение к диску и использование памяти?
pasaranax
Спасибо. А как можно узнать количество строк в файле, чтобы потом случайным образом выбрать число в нужном диапазоне? Проходить по файлу дважды?
Ferroman
Да, проходить дважды.
PooH
Тут такая идея в голову пришла, средняя длина строки известна:
pasaranax
Есть текстовый файл в котором находятся короткие тексты (250-300 символов), на каждой строке один текст, строк может быть тысяча.
Вычисляем p = средняя длина строки/размер файла. Проходим построчно файл и с вероятностью p выбираем текущую строку. Если дошли до конца, а строка не выбрана берем последнюю. Будет выбор за один проход(и даже не всегда до конца), хотя и не совсем равномерное распределение.
Андрей Светлов
Случайную строку (но не ее номер по порядку) получают даже проще: прыжок куда-нибудь внутрь файла и затем вытягивание до перевода каретки. Искомая строка - от этого перевода и до следующего.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB