Попытка работы с '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.

Я не могу использовать панду, потому что у меня нет доступа.

0 ответов

Другие вопросы по тегам