diff -r d7c31c73b1bd Doc/library/csv.rst --- a/Doc/library/csv.rst Sun Sep 04 12:31:47 2016 +0100 +++ b/Doc/library/csv.rst Mon Sep 05 20:45:46 2016 +0530 @@ -464,9 +464,13 @@ .. method:: DictWriter.writeheader() - Write a row with the field names (as specified in the constructor). + Write a row with the field names (as specified in the constructor) to + the writer's file object, formatted according to the current dialect. .. versionadded:: 3.2 + .. versionchanged:: 3.6 + :meth:`writeheader` now also *returns* the value returned by + the :meth:`csvwriter.writerow` method it uses internally. .. _csv-examples: diff -r d7c31c73b1bd Lib/csv.py --- a/Lib/csv.py Sun Sep 04 12:31:47 2016 +0100 +++ b/Lib/csv.py Mon Sep 05 20:45:46 2016 +0530 @@ -141,7 +141,7 @@ def writeheader(self): header = dict(zip(self.fieldnames, self.fieldnames)) - self.writerow(header) + return self.writerow(header) def _dict_to_list(self, rowdict): if self.extrasaction == "raise": diff -r d7c31c73b1bd Lib/test/test_csv.py --- a/Lib/test/test_csv.py Sun Sep 04 12:31:47 2016 +0100 +++ b/Lib/test/test_csv.py Mon Sep 05 20:45:46 2016 +0530 @@ -589,6 +589,15 @@ class TestDictFields(unittest.TestCase): ### "long" means the row is longer than the number of fieldnames ### "short" means there are fewer elements in the row than fieldnames + def test_writeheader_return_value(self): + with TemporaryFile("w+", newline='') as fileobj: + writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"]) + writeheader_return_value = writer.writeheader() + writerow_return_value = writer.writerow({"f1": 10, "f3": "abc"}) + self.assertIsNotNone(writeheader_return_value) + self.assertIsInstance(writeheader_return_value, + type(writerow_return_value)) + def test_write_simple_dict(self): with TemporaryFile("w+", newline='') as fileobj: writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])