Python GUI写入CSV重复表头:如何仅追加新数据
解决CSV重复写入表头问题
你的问题出在每次调用submit函数时都会执行writer.writerow(["Amount", "Time"]),导致每次追加数据时都重复写入表头。要实现仅首次写入表头,只需在写入前判断文件是否需要添加表头即可。
修改后的代码
def submit(): import csv import datetime import os file_path = "Data_amount.csv" # 判断是否需要写入表头:文件不存在 或 文件存在但为空 need_header = not os.path.exists(file_path) or os.path.getsize(file_path) == 0 with open(file_path, "a", newline="") as csvfile: writer = csv.writer(csvfile) if need_header: writer.writerow(["Amount", "Time"]) # 获取输入数据 input_amount = entry_listbox.get() # 获取当前时间字符串 now = datetime.datetime.now() now_str = now.time().strftime("%H:%M:%S") # 写入数据行 writer.writerow([input_amount, now_str]) timestamp = datetime.datetime.now() input_amount2 = entry_listbox.get() if input_amount2 != "": listbox_stuekzahlen.insert(tkinter.END, f'{timestamp:%H:%M:%S} - {input_amount2} Stk.') entry_listbox.delete(0, tkinter.END) else: tkinter.messagebox.showwarning(title="Warning!", message="INPUT!")
逻辑说明
- 导入
os模块用于检查文件状态 - 通过
os.path.exists(file_path)判断文件是否存在:- 如果文件不存在(首次运行),则需要写入表头
- 如果文件存在但大小为0(空文件),也写入表头
- 仅在
need_header为True时才执行表头写入操作,后续提交只追加数据行
内容的提问来源于stack exchange,提问作者red
相关产品推荐
相关产品推荐

