Как мне перебрать большой файл, не исчерпывая память в python? - PullRequest
0 голосов
/ 11 мая 2019

Что я хочу сделать, это в основном напечатать, сколько раз строка появляется в файле, но файл настолько велик, что программа всегда вылетает, когда я пытаюсь выполнить итерацию:

import gzip
res = []
def fileopener(f):
    with gzip.open(f) as fhand:
        for line in fhand:
            res.append(line.count(b'NEU'))
        print(sum(res))

Ожидаемыми результатами будет общая сумма 'NEU', но вместо этого программа аварийно завершит работу, прежде чем сможет произвести какой-либо вывод. Могу ли я что-нибудь сделать, чтобы это не случилось?

1 Ответ

2 голосов
/ 11 мая 2019

Сохраняйте промежуточные итоги, пока вы повторяете, а не просто накапливаете вещи для добавления.Встроенная функция sum сделает это за вас.

with gzip.open(f) as fhand:
    result = sum(line.count(b'NEU') for line in fhand)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...