Форум сайта python.su
Доброго времени суток,
то ли я гуглом разучился пользоваться, то ли питон действительно не умеет говорить сколько строк в файле, да и начать чтение файла с определенной строки тоже не может.
Мне по задаче нужно взять файлик прочитать его с определенной строки, столько строк сколько попросят, однако понял что читать файлик придется весь, пока не найдется нужная строка.. Все бы ничего если бы не размер файлов от 1 Гб. Чем такое можно решить в питоне?
Офлайн
если я правильно понимаю эту жизнь, то конец строки это просто байтик с определенным кодом, чтобы посчитать количество строк нужно посчитать количество этих байтиков. Можете предварительно обработать все файлы, создав список номеров байтов с которых надо начинать читать новую строку, потом просто бегать до нужного места seek'ом или как он там в питоне называется (не знаю :) )
Хотя, я конечно могу безнадежно отставать от жизни, поэтому не стоит доверять моим словам :)
Офлайн
Zubchickв текстовом файлике посчитать количество переводов коретки? это метров 150 в оперативочку на запоминание позиций для каждой строки.. что то мне нашептывает, что придется изобретать еще один велосипед :mad:
если я правильно понимаю эту жизнь, то конец строки это просто байтик с определенным кодом, чтобы посчитать количество строк нужно посчитать количество этих байтиков. Можете предварительно обработать все файлы, создав список номеров байтов с которых надо начинать читать новую строку, потом просто бегать до нужного места seek'ом или как он там в питоне называется (не знаю :) )
Хотя, я конечно могу безнадежно отставать от жизни, поэтому не стоит доверять моим словам :)
Офлайн
exТемболее, что бы их посчитать опять же нужно читать весь файл, а в этом процессе то и вся загвоздка, долговато идет..Zubchickв текстовом файлике посчитать количество переводов коретки? это метров 150 в оперативочку на запоминание позиций для каждой строки.. что то мне нашептывает, что придется изобретать еще один велосипед :mad:
если я правильно понимаю эту жизнь, то конец строки это просто байтик с определенным кодом, чтобы посчитать количество строк нужно посчитать количество этих байтиков. Можете предварительно обработать все файлы, создав список номеров байтов с которых надо начинать читать новую строку, потом просто бегать до нужного места seek'ом или как он там в питоне называется (не знаю :) )
Хотя, я конечно могу безнадежно отставать от жизни, поэтому не стоит доверять моим словам :)
Офлайн
exНу это типа как индексирование. Один раз долго, зато потом быстро. Или файл ещё и менять планируется?
Темболее, что бы их посчитать опять же нужно читать весь файл, а в этом процессе то и вся загвоздка, долговато идет..
Офлайн
UsCrВ этом то и трабл… файл меняеться ежесекундно и на многоexНу это типа как индексирование. Один раз долго, зато потом быстро. Или файл ещё и менять планируется?
Темболее, что бы их посчитать опять же нужно читать весь файл, а в этом процессе то и вся загвоздка, долговато идет..
Офлайн
Ты хочешь ежесекундно гиговый файл читать?
Вот так память будет в порядке. Если нужная строка близко к началу файла, то скорость будет приемлемая.
for i, line in enumerate(open("file.big")):
if i == 1000000:
print line
break
Отредактировано (Май 16, 2010 00:44:41)
Офлайн
Я так понимаю, блокировка файла не подходит изначально. Работайте с копией файла.
Офлайн