У меня есть данные, которые мне нужны для чтения и извлечения определенных блоков из кода Python, но файлы могут иметь длину в десятки миллионов строк и слишком велики для хранения в памяти, поэтому я хочу получить только те данные, которые мне действительно нужныдля анализа.
Файлы отформатированы следующим образом:
4 # Number of lines per block
0 # Start of block 0
A line of data
A line of data
A line of data
A line of data
1 # Start of block 1
A line of data
A line of data
...
Проблема, с которой я сталкиваюсь, заключается в том, что как только я нахожу и считываю нужный блок в список, мой код продолжаетчтение и добавление данных до конца файла вместо конца этого конкретного блока.
Вот что у меня есть:
required_block = 5
ilepath = file.txt
data = []
with open(filepath, 'r') as f:
block_length = int(f.readline())
for line in f:
block = int(line)
if block != required_block:
for _ in range(block_length)
next(f)
else:
break
for line in f:
data.append(line)
Если я попытаюсь добавить диапазон кпоследний цикл 'for' будет просто читать текущую строку снова и снова.
Где я ошибаюсь?
РЕДАКТИРОВАТЬ: Для пояснения, я хочу, чтобы только последний цикл for выполнялся количество раз.