Patch #1635454: the csv.DictWriter class now includes the offending

field names in its exception message if you try to write a record with
a dictionary containing fields not in the CSV field names list.
This commit is contained in:
Georg Brandl 2007-03-13 09:32:11 +00:00
parent ceede5c359
commit 94fe3f58d0
2 changed files with 8 additions and 3 deletions

View File

@ -115,9 +115,10 @@ class DictWriter:
def _dict_to_list(self, rowdict):
if self.extrasaction == "raise":
for k in rowdict.keys():
if k not in self.fieldnames:
raise ValueError, "dict contains fields not in fieldnames"
wrong_fields = [k for k in rowdict if k not in self.fieldnames]
if wrong_fields:
raise ValueError("dict contains fields not in fieldnames: " +
", ".join(wrong_fields))
return [rowdict.get(key, self.restval) for key in self.fieldnames]
def writerow(self, rowdict):

View File

@ -168,6 +168,10 @@ Core and builtins
Library
-------
- Patch #1635454: the csv.DictWriter class now includes the offending
field names in its exception message if you try to write a record with
a dictionary containing fields not in the CSV field names list.
- Patch #1668100: urllib2 now correctly raises URLError instead of
OSError if accessing a local file via the file:// protocol fails.