У меня есть следующий код, который я использую для создания и добавления новой строки в файл csv.

def calcPrice(data):


  fieldnames = ["ReferenceID","clientName","Date","From","To","Rate","Price"]
  with open('rec2.csv', 'a') as csvfile:

    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow(data)

  return

Однако это также заголовок как новая строка. Как я могу предотвратить это? введите здесь описание изображения

0
Christopher Kinyua 15 Апр 2020 в 16:56
Что произойдет, если вы опустите строку Writer.writeheader()?
 – 
whege
15 Апр 2020 в 16:59

1 ответ

Метод writeheader записывает строку заголовка, поэтому его следует использовать только для пустого файла.

Сначала вы должны проверить, был ли файл пустым или нет, и написать только строку заголовка в пустой файл:

import os
...
  with open('rec2.csv', 'a') as csvfile:

    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    if 0 == os.lseek(csvfile, 0, os.SEEK_END):
      writer.writeheader()
    writer.writerow(data)
2
Serge Ballesta 15 Апр 2020 в 17:08
Я получаю эту ошибку TypeError: требуется целое число (получил тип _io.TextIOWrapper)
 – 
Christopher Kinyua
15 Апр 2020 в 21:32