Я пытаюсь читать из огромного файла (1 ГБ) и пытаюсь сэкономить при этом использование памяти.Это мой код:
with open('abitmorelinesdec.dat') as data_f:
i=0
line=[]
for lines in data_f:
i=i+1
line = np.array(list(filter(None,lines.strip().split(' ')))[4:],dtype=int)
if line[4] == 0:
print('ok')
Он выводит следующее:
if line[4] == 0:
IndexError: index 4 is out of bounds for axis 0 with size 0
Если я попытаюсь вместо этого запустить это:
with open('abitmorelinesdec.dat') as data_f:
i=0
line=[]
for lines in data_f:
i=i+1
line = np.array(list(filter(None,lines.strip().split(' ')))[4:],dtype=int)
if i==100:
print(line)
print(len(line))
Spyder выводит:
[3459 3458 3457 ... 3464 3460 3464]
1024
Это показывает, что python корректно обрабатывает строку как список с 1024 элементами всего за мгновение до объявления оператора if.Что мне здесь не хватает?
Вы можете найти часть файла здесь: https://pastebin.com/FPFWAsxP
Заранее большое спасибо