Найти - Пользователи
Полная версия: Работа с файлами
Начало » Python для новичков » Работа с файлами
1
ex
Доброго времени суток,
то ли я гуглом разучился пользоваться, то ли питон действительно не умеет говорить сколько строк в файле, да и начать чтение файла с определенной строки тоже не может.

Мне по задаче нужно взять файлик прочитать его с определенной строки, столько строк сколько попросят, однако понял что читать файлик придется весь, пока не найдется нужная строка.. Все бы ничего если бы не размер файлов от 1 Гб. Чем такое можно решить в питоне?
Zubchick
если я правильно понимаю эту жизнь, то конец строки это просто байтик с определенным кодом, чтобы посчитать количество строк нужно посчитать количество этих байтиков. Можете предварительно обработать все файлы, создав список номеров байтов с которых надо начинать читать новую строку, потом просто бегать до нужного места seek'ом или как он там в питоне называется (не знаю :) )

Хотя, я конечно могу безнадежно отставать от жизни, поэтому не стоит доверять моим словам :)
ex
Zubchick
если я правильно понимаю эту жизнь, то конец строки это просто байтик с определенным кодом, чтобы посчитать количество строк нужно посчитать количество этих байтиков. Можете предварительно обработать все файлы, создав список номеров байтов с которых надо начинать читать новую строку, потом просто бегать до нужного места seek'ом или как он там в питоне называется (не знаю :) )

Хотя, я конечно могу безнадежно отставать от жизни, поэтому не стоит доверять моим словам :)
в текстовом файлике посчитать количество переводов коретки? это метров 150 в оперативочку на запоминание позиций для каждой строки.. что то мне нашептывает, что придется изобретать еще один велосипед :mad:
ex
ex
Zubchick
если я правильно понимаю эту жизнь, то конец строки это просто байтик с определенным кодом, чтобы посчитать количество строк нужно посчитать количество этих байтиков. Можете предварительно обработать все файлы, создав список номеров байтов с которых надо начинать читать новую строку, потом просто бегать до нужного места seek'ом или как он там в питоне называется (не знаю :) )

Хотя, я конечно могу безнадежно отставать от жизни, поэтому не стоит доверять моим словам :)
в текстовом файлике посчитать количество переводов коретки? это метров 150 в оперативочку на запоминание позиций для каждой строки.. что то мне нашептывает, что придется изобретать еще один велосипед :mad:
Темболее, что бы их посчитать опять же нужно читать весь файл, а в этом процессе то и вся загвоздка, долговато идет..
UsCr
ex
Темболее, что бы их посчитать опять же нужно читать весь файл, а в этом процессе то и вся загвоздка, долговато идет..
Ну это типа как индексирование. Один раз долго, зато потом быстро. Или файл ещё и менять планируется?
ex
UsCr
ex
Темболее, что бы их посчитать опять же нужно читать весь файл, а в этом процессе то и вся загвоздка, долговато идет..
Ну это типа как индексирование. Один раз долго, зато потом быстро. Или файл ещё и менять планируется?
В этом то и трабл… файл меняеться ежесекундно и на много
pasaranax
Ты хочешь ежесекундно гиговый файл читать?
Вот так память будет в порядке. Если нужная строка близко к началу файла, то скорость будет приемлемая.
for i, line in enumerate(open("file.big")):
if i == 1000000:
print line
break
В любом случае, чтобы посчитать количество строк, нужно читать весь файл. Либо читать с определенной позиции с помощью метода .seek(), но тогда ты не узнаешь сколько строк было до указанной позиции.
Lexander
Я так понимаю, блокировка файла не подходит изначально. Работайте с копией файла.
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