[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