Ошибка памяти при открытии файла с помощью read () - PullRequest
0 голосов
/ 14 мая 2018

Я новичок в python, и я редактирую программу, в которой мне нужно открыть файл, но это больше, чем 1,5 ГБ, поэтому я получаю ошибку памяти. Код:

f=open('thumbdata3.dat','rb')
tdata = f.read()
f.close()

ss = '\xff\xd8'
se = '\xff\xd9'

count = 0
start = 0
while True:
    x1 = tdata.find(ss,start)
    if x1 < 0:
        break
    x2 = tdata.find(se,x1)
    jpg = tdata[x1:x2+1]
    count += 1
    fname = 'extracted%d03.jpg' % (count)
    fw = open(fname,'wb')
    fw.write(jpg)
    fw.close()
    start = x2+2

Итак, я получаю

MemoryError

в

tdata = f.read()

раздел. Как изменить функцию для разделения файла во время чтения?

1 Ответ

0 голосов
/ 14 мая 2018

Из описания кажется, что проблема в памяти - проблема здесь.Таким образом, мы можем использовать генераторы, чтобы уменьшить объем памяти данных, так что он загружает часть данных, используемых один за другим.

from itertools import chain, islice

def piecewise(iterable, n):
    "piecewise(Python,2) => Py th on"
    iterable = iter(iterable)
    while True:
        yield chain([next(iterable)], islice(iterable, n-1))

l = ...
file_large = 'large_file.txt'
with open(file_large) as bigfile:
   for i, lines in enumerate(piecewise(bigfile, l)):
      file_split = '{}.{}'.format(file_large, i)
      with open(file_split, 'w') as f:
         f.writelines(lines)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...