def fetch_from_datapackage(self, **kwargs):
if not self._skip_resource(**kwargs):
# IMPORTANT!
# after this point - kwargs are ignored as we are fetching from previously prepared csv data
if self.csv_path and os.path.exists(self.csv_path):
with open(self.csv_path, 'rb') as csv_file:
csv_reader = unicodecsv.reader(csv_file)
header_row = None
for row in csv_reader:
if not header_row:
header_row = row
else:
csv_row = OrderedDict(zip(header_row, row))
parsed_row = []
for field in self.descriptor["schema"]["fields"]:
try:
parsed_row.append((field["name"], self._get_field_original_value(csv_row[field["name"]], field)))
except Exception as e:
import logging
message = "error parsing field %s in file %s : %s" % (field["name"],self.csv_path, str(e))
logging.exception(message)
raise Exception(message)
yield OrderedDict(parsed_row)
评论列表
文章目录