[lang-ref] ( write_csv_from_dictionary ) ( python )

def test_write_csv_from_dictionary():
    # csv.DictWriter
    import csv
    rows = [
        {'A': '11', 'B': '12', 'C': '13', 'D': '14'},
        {'A': '21', 'B': '22', 'C': '23', 'D': '24'},
        {'A': '31', 'B': '32', 'C': '33', 'D': '34'},
    ]
    # on csv output, default line separator is CR+LF
    expected = '''\
A,B,C,D\r
11,12,13,14\r
21,22,23,24\r
31,32,33,34\r
'''
    # with open('a.csv', 'w') as f:
    with io.StringIO() as f:
        writer = csv.DictWriter(f, fieldnames=["A", "B", "C", "D"])

        writer.writeheader()
        for row in rows:
            writer.writerow(row)

        csv_text = f.getvalue()

    assert csv_text == expected

    # In this case, reading all rows at once is sufficient
    # with open('a.csv', 'w') as f:
    with io.StringIO() as f:
        writer = csv.DictWriter(f, fieldnames=["A", "B", "C", "D"])
        writer.writeheader()
        writer.writerows(rows)
        csv_text = f.getvalue()
    assert csv_text == expected