Python запись в CSV-файл

У меня есть точка Q (кортеж), которая создается каждый раз, когда я вызываю функцию. Как записать новую точку Q в CSV-файл так, чтобы первый столбец был координатой x, второй столбец - координатой y, а третий столбец - координатой z без перезаписи файла?. Спасибо

with open('points.csv', 'w') as csvfile:
    fieldnames = ['x', 'y','z']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for val in q:
        writer.writerow({'x':q[0] , 'y': q[1], 'z': q[2]})

1 ответ

Решение

Вы должны изменить способ открытия файла - режим "w" всегда означает создание / усечение файла. Просто используйте вместо этого "a" (для "добавления"):

with open('points.csv', 'a') as csvfile:
     ...

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

import os
file_exists = os.path.exists("points.csv")
with ... as csvfile:
    writer = ...
    if not file_exists:
        writer.writeheader()
    ...
Другие вопросы по тегам