mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
bpo-27497: Add return value to csv.DictWriter.writeheader (GH-12306)
csv.DictWriter.writeheader() now returns the return value of the underlying csv.Writer.writerow() method. Patch contributed by Ashish Nitin Patil.
This commit is contained in:
parent
d237b3f0f6
commit
fce5ff1e18
4 changed files with 18 additions and 3 deletions
|
@ -443,7 +443,8 @@ read CSV files (assuming they support complex numbers at all).
|
||||||
.. method:: csvwriter.writerow(row)
|
.. method:: csvwriter.writerow(row)
|
||||||
|
|
||||||
Write the *row* parameter to the writer's file object, formatted according to
|
Write the *row* parameter to the writer's file object, formatted according to
|
||||||
the current dialect.
|
the current dialect. Return the return value of the call to the *write* method
|
||||||
|
of the underlying file object.
|
||||||
|
|
||||||
.. versionchanged:: 3.5
|
.. versionchanged:: 3.5
|
||||||
Added support of arbitrary iterables.
|
Added support of arbitrary iterables.
|
||||||
|
@ -467,9 +468,14 @@ DictWriter objects have the following public method:
|
||||||
|
|
||||||
.. method:: DictWriter.writeheader()
|
.. 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. Return
|
||||||
|
the return value of the :meth:`csvwriter.writerow` call used internally.
|
||||||
|
|
||||||
.. versionadded:: 3.2
|
.. versionadded:: 3.2
|
||||||
|
.. versionchanged:: 3.8
|
||||||
|
:meth:`writeheader` now also returns the value returned by
|
||||||
|
the :meth:`csvwriter.writerow` method it uses internally.
|
||||||
|
|
||||||
|
|
||||||
.. _csv-examples:
|
.. _csv-examples:
|
||||||
|
|
|
@ -140,7 +140,7 @@ class DictWriter:
|
||||||
|
|
||||||
def writeheader(self):
|
def writeheader(self):
|
||||||
header = dict(zip(self.fieldnames, self.fieldnames))
|
header = dict(zip(self.fieldnames, self.fieldnames))
|
||||||
self.writerow(header)
|
return self.writerow(header)
|
||||||
|
|
||||||
def _dict_to_list(self, rowdict):
|
def _dict_to_list(self, rowdict):
|
||||||
if self.extrasaction == "raise":
|
if self.extrasaction == "raise":
|
||||||
|
|
|
@ -608,6 +608,12 @@ class TestQuotedEscapedExcel(TestCsvBase):
|
||||||
class TestDictFields(unittest.TestCase):
|
class TestDictFields(unittest.TestCase):
|
||||||
### "long" means the row is longer than the number of fieldnames
|
### "long" means the row is longer than the number of fieldnames
|
||||||
### "short" means there are fewer elements in the row than 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()
|
||||||
|
self.assertEqual(writeheader_return_value, 10)
|
||||||
|
|
||||||
def test_write_simple_dict(self):
|
def test_write_simple_dict(self):
|
||||||
with TemporaryFile("w+", newline='') as fileobj:
|
with TemporaryFile("w+", newline='') as fileobj:
|
||||||
writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])
|
writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
:meth:`csv.DictWriter.writeheader` now returns the return value of the
|
||||||
|
underlying :meth:`csv.Writer.writerow` method. Patch contributed by Ashish
|
||||||
|
Nitin Patil.
|
Loading…
Add table
Add a link
Reference in a new issue