CSV第一行总是被覆盖(python)



我正在编程一个不和谐的机器人,让用户发送嵌入到一个频道。嵌入被分成多个部分,我希望将其保存到CSV文件中,因为我想添加需要保存数据的功能。
问题是,当用户执行命令时,CSV中的第一行被命令/嵌入的新内容覆盖。
我尝试使用不同的模式保存到下一行。"w"代表写作,这是我遇到的问题。模式'a'几乎可以工作,但它每次都会添加字段名。

CSV代码:

with open('homework.csv', 'a', newline='') as file:
fieldnames = ['user', 'fach', 'aufgabe', 'abgabedatum']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'user': str(message.author), 'fach': subject, 'aufgabe': task, 'abgabedatum': date})

使用模式a

的CSV输出
user,fach,aufgabe,abgabedatum
user,fach,aufgabe,abgabedatum
Akorian#0187,test,ja mddoiddn ,01.03.2021
user,fach,aufgabe,abgabedatum
Akorian#0187,testddd,ja mddoiddn ,01.03.2021

试试这个:

import csv
import os

if os.path.isfile('homework.csv'):
with open('homework.csv', 'a', newline='') as file:
fieldnames = ['user', 'fach', 'aufgabe', 'abgabedatum']
w = csv.DictWriter(file, fieldnames=fieldnames)
w.writerow({'user': str(message.author), 'fach': subject, 'aufgabe': task, 'abgabedatum': date})
else:
with open('homework.csv', 'w', newline='') as file:
fieldnames = ['user', 'fach', 'aufgabe', 'abgabedatum']
w = csv.DictWriter(file, fieldnames=fieldnames)
w.writeheader()
w.writerow({'user': str(message.author), 'fach': subject, 'aufgabe': task, 'abgabedatum': date})

最新更新