2017-02-17 14 views
-1

У меня есть очень большой файл, отформатированный как это:Чтение в виде файла, один кусок в то время

(mydelimiter) 
line 
line 
(mydelimiter) 
line 
line 
(mydelimiter) 

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

Это код, который я до сих пор:

with open(infile,'r') as f: 
    chunk = [] 
    for line in f: 
     chunk.append(line) 

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

Примечание: это также невозможно прочитать в определенном количестве строк за раз, так как каждый кусок является переменной длиной.

+0

Просьба ссылаться на любые вопросы, которые, по вашему мнению, дублированы. Я тщательно исследовал stackoverflow, прежде чем публиковать этот вопрос и не нашел ответа. – Andrade

+0

Ссылка находится вверху страницы, под заголовком вашего вопроса. – TigerhawkT3

ответ

1

Разве вы не можете подумать об этом? Что-то простое, как в следующем коде может сделать трюк для вас

+0

Спасибо за ответ! Вы можете уточнить, что делает ваша функция call_something() здесь? – Andrade

+0

well call_something - это функция, которую вы определяете, которая работает с вашим куском данных. – e4c5

+0

Да, спасибо! Только что принял ваш ответ (извинения за это забыл!) – Andrade