This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author mishok13
Recipients mishok13
Date 2008-07-24.15:30:18
SpamBayes Score 0.022022434
Marked as misclassified No
Message-id <1216913436.18.0.507506716118.issue3436@psf.upfronthosting.co.za>
In-reply-to
Content
I had to use csv module recently and ran into a "problem" with
DictReader. I had to get headers of CSV file and only after that iterate
throgh each row. But AFAIU there is no way to do it, other then
subclassing. So, basically, right now we have this:

Python 3.0b2+ (unknown, Jul 24 2008, 12:15:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> r = csv.DictReader(open('test.csv'))
>>> r.fieldnames
>>> next(r)
{'baz': '13', 'foo': '42', 'bar': '27'}
>>> r.fieldnames
['foo', 'bar', 'baz']

I think it would be much more useful, if DictReader got 'fieldnames' on
calling __init__ method, so this would look like this:
>>> r = csv.DictReader(open('test.csv'))
>>> r.fieldnames
['foo', 'bar', 'baz']

The easy way to do this is to subclass csv.DictReader.
The hard way to do this is to apply the patches I'm attaching. :)
These patches also remove redundant check for self.fieldnames being None
for each next()/__next__() call
History
Date User Action Args
2008-07-24 15:30:36mishok13setspambayes_score: 0.0220224 -> 0.022022434
recipients: + mishok13
2008-07-24 15:30:36mishok13setspambayes_score: 0.0220224 -> 0.0220224
messageid: <1216913436.18.0.507506716118.issue3436@psf.upfronthosting.co.za>
2008-07-24 15:30:21mishok13linkissue3436 messages
2008-07-24 15:30:20mishok13create