diff --git a/scrapy/contrib/exporter/__init__.py b/scrapy/contrib/exporter/__init__.py index 6b3d2bcda..c230e6822 100644 --- a/scrapy/contrib/exporter/__init__.py +++ b/scrapy/contrib/exporter/__init__.py @@ -105,24 +105,23 @@ class CsvItemExporter(BaseItemExporter): self._configure(kwargs, dont_fail=True) self.include_headers_line = include_headers_line self.csv_writer = csv.writer(file, **kwargs) - self._headers_written = False + self._headers_not_written = True def export_item(self, item): - self._write_headers_and_set_fields_to_export(item) + if self._headers_not_written: + self._headers_not_written = False + 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_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) + 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) class PickleItemExporter(BaseItemExporter):