Перезаписывается одна и та же строка в CSV файле

Написал вот такой код

from csv import writer

with open('moscow.csv', 'r', encoding = 'utf-8') as source:
    for line in source.readlines():
        line = line.split(',')
        with open('all.csv', 'w', encoding = 'utf-8') as base:
            writer_obj = writer(base)
            writer_obj.writerow(line)

Вместо того, чтобы добавлять список с новой строки, перезаписывается одна и та же строка. Как это исправить?


Ответы (1 шт):

Автор решения: CrazyElf

Открывайте оба файла одновременно. Сейчас вы открываете файл на запись внутри цикла и он перезаписывается на каждой итерации. Ну и readlines тут излишне, только лишнюю память съест:

with open('moscow.csv', 'r', encoding = 'utf-8') as source,
     open('all.csv', 'w', encoding = 'utf-8') as base:
    writer_obj = writer(base)
    for line in source:
        line = line.split(',')
        writer_obj.writerow(line)
→ Ссылка