Это код python, который я использую. У меня есть файл 5gb, который мне нужно разделить примерно на 10-12 файлов в соответствии с номерами строк. Но этот код дает ошибку памяти. Пожалуйста, может кто-нибудь сказать мне, что не так с этим кодом?Разделение большого файла на файл меньшего размера, дающий ошибку памяти
from itertools import izip_longest
def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
n = 386972
with open('reviewsNew.txt','rb') as f:
for i, g in enumerate(grouper(n, f, fillvalue=''), 1):
with open('small_file_{0}'.format(i * n), 'w') as fout:
fout.writelines(g)
http://stackoverflow.com/questions/6475328/read-large-text-files-in- python-line-by-line-without-load-it-in-to-memory Аналогичный вопрос –
@be_good_do_good это не то же самое. В моем коде после 3-4 итераций, я получаю ошибку памяти. Я не знаю, почему. Я читаю файл строки за строкой :( –
, возможно, не проблема, но вы открываете входной файл как двоичный, но вы не сохраняете тот же путь. –