mirror of
https://github.com/python/cpython.git
synced 2025-07-28 13:44:43 +00:00
accept issue 3436
This commit is contained in:
parent
b04d4853a7
commit
a032bf41f6
4 changed files with 67 additions and 4 deletions
22
Lib/csv.py
22
Lib/csv.py
|
@ -71,7 +71,7 @@ register_dialect("excel-tab", excel_tab)
|
|||
class DictReader:
|
||||
def __init__(self, f, fieldnames=None, restkey=None, restval=None,
|
||||
dialect="excel", *args, **kwds):
|
||||
self.fieldnames = fieldnames # list of keys for the dict
|
||||
self._fieldnames = fieldnames # list of keys for the dict
|
||||
self.restkey = restkey # key to catch long rows
|
||||
self.restval = restval # default value for short rows
|
||||
self.reader = reader(f, dialect, *args, **kwds)
|
||||
|
@ -81,11 +81,25 @@ class DictReader:
|
|||
def __iter__(self):
|
||||
return self
|
||||
|
||||
@property
|
||||
def fieldnames(self):
|
||||
if self._fieldnames is None:
|
||||
try:
|
||||
self._fieldnames = self.reader.next()
|
||||
except StopIteration:
|
||||
pass
|
||||
self.line_num = self.reader.line_num
|
||||
return self._fieldnames
|
||||
|
||||
@fieldnames.setter
|
||||
def fieldnames(self, value):
|
||||
self._fieldnames = value
|
||||
|
||||
def next(self):
|
||||
if self.line_num == 0:
|
||||
# Used only for its side effect.
|
||||
self.fieldnames
|
||||
row = self.reader.next()
|
||||
if self.fieldnames is None:
|
||||
self.fieldnames = row
|
||||
row = self.reader.next()
|
||||
self.line_num = self.reader.line_num
|
||||
|
||||
# unlike the basic reader, we prefer not to return blanks,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue