You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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!")

逻辑说明

  1. 导入os模块用于检查文件状态
  2. 通过os.path.exists(file_path)判断文件是否存在:
    • 如果文件不存在(首次运行),则需要写入表头
    • 如果文件存在但大小为0(空文件),也写入表头
  3. 仅在need_header为True时才执行表头写入操作,后续提交只追加数据行

内容的提问来源于stack exchange,提问作者red

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:15:40