write csv

第一种: 把数据全部加载到内存

import csv

def write(filepath, data):
    with open(filepath, 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow([
            'header1',
            'header2',
        ])
        for item in data:
            writer.writerow([
                item[0],
                item[1],
            ])
    return filepath

第二种: 使用生成器

import csv
def write_with_generator(filepath):
    with open(filepath, 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow([
            'header1',
            'header2',
        ])
        while True:
            data = (yield)
            if data is None:  # stop generator
                yield filepath
                break
            else:
                for item in data:
                    writer.writerow([
                        item[0],
                        item[1],
                    ])

_write = write_with_generator(filepath)
_write.__next__()
for data in all_data:
    _write.send(data)
filepath = _write.__next__()