diff --git a/scrapy/contrib/exporter/__init__.py b/scrapy/contrib/exporter/__init__.py index 3dbeb235f..6b3d2bcda 100644 --- a/scrapy/contrib/exporter/__init__.py +++ b/scrapy/contrib/exporter/__init__.py @@ -105,24 +105,24 @@ class CsvItemExporter(BaseItemExporter): self._configure(kwargs, dont_fail=True) self.include_headers_line = include_headers_line self.csv_writer = csv.writer(file, **kwargs) - self._header_written = False + self._headers_written = False def export_item(self, item): - if not self._header_written: - self._write_header(item) - + self._write_headers_and_set_fields_to_export(item) fields = self._get_serialized_fields(item, default_value='', \ include_empty=True) - values = [x[1] for x in fields] self.csv_writer.writerow(values) - def _write_header(self, item): - self._header_written = True - if self.include_headers_line: - if not self.fields_to_export: - self.fields_to_export = item.fields.keys() - self.csv_writer.writerow(self.fields_to_export) + def _write_headers_and_set_fields_to_export(self, item): + if self._headers_written: + return + self._headers_written = True + if not self.include_headers_line: + return + if not self.fields_to_export: + self.fields_to_export = item.fields.keys() + self.csv_writer.writerow(self.fields_to_export) class PickleItemExporter(BaseItemExporter):