Попытка работы с 'chunks' для объединения файлов.gz - Ошибка памяти
Я пытаюсь написать скрипт, который объединяет 2 сжатых файла на основе соответствия первого столбца. Я хотел бы сделать это частями, так как исходный код, с которым я работаю, является файлом CSV, и при использовании с этими файлами выдает ошибку памяти.
Код, который я использую с ошибкой памяти (но работает с небольшими файлами):
f1 = open('file1.csv', 'r')
f2 = open('file2.csv', 'r')
f3 = open('output.csv', 'w')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.writer(f3)
file2 = list(c2)
for file1_row in c1:
row = 1
found = False
results_row = file1_row #Moved out from nested loop
for file2_row in file2:
x = file2_row[1:]
if file1_row[0] == file2_row[0]:
results_row.append(x)
found = True
break
row += 1
if not found:
results_row.append('Not found')
c3.writerow(results_row)
f1.close()
f2.close()
f3.close()
Я пытался сделать эту работу, где я работаю с чанком, но думаю, что это в неправильном формате.
f1 = open('final1.gz', 'r')
f2 = open('final2.gz', 'r')
f3 = open('results.gz.DONE', 'w')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.writer(f3)
file2 = list(c2)
fileList = ['final_balance.gz', 'final_service.gz']
for fileName in fileList:
with open(fileName, 'rb') as sourceFile:
chunk = True
while chunk:
chunk = sourceFile.read(bufferSize)
#file2 = list(c2) # MemoryError occurs on this line.
for file1_row in c1:
row = 1
found = False
results_row = file1_row #Moved out from nested loop
for file2_row in file2:
x = file2_row[1:]
if file1_row[0] == file2_row[0]:
results_row.append(x)
found = True
break
row += 1
if not found:
results_row.append('Not found')
c3.writerow(results_row)
В этот момент я получаю сообщение об ошибке по адресу:
File "function.py", line 20, file2 = list(c2) MemoryError.
Я не могу использовать панду, потому что у меня нет доступа.