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

如何向CSV文件添加新行?解决表头与数据混排问题

CSV追加数据首行挤入表头的解决办法

问题根源:你的CSV文件表头行末尾缺少换行符,用追加模式(a)写入第一行数据时,文件指针直接接在表头最后一个字符后,导致数据和表头同行了。

快速修复现有文件

手动打开entries.csv,确认表头行末尾有换行(按下回车),保存后再运行代码即可。

代码层面的永久防护

修改代码,在写入数据前自动处理换行问题,同时避免重复写入表头:

import os
import csv

# 判断文件是否存在且非空
file_exists = os.path.isfile("entries.csv") and os.path.getsize("entries.csv") > 0

with open("entries.csv", "a", newline="") as entries:
    fieldnames = [
        "Username",
        "Password",
        "Email",
        "Address 1",
        "Address 2",
        "City",
        "ZIP",
        "State",
        "Country",
        "ETH Address",
        "ETH Private Key",
        "Login Token"
    ]
    data = {
        'Username': reg.username, 
        'Password': reg.password, 
        'Email': reg.email, 
        'Address 1': reg.ShipAddress, 
        'Address 2': reg.ShipAddressCompliment, 
        'City': reg.ShipCity, 
        'ZIP': reg.ShipZip, 
        'State': reg.ShipState, 
        'Country': reg.ShipCountry, 
        'ETH Address': reg.addy, 
        'ETH Private Key': reg.privkey, 
        'Login Token': reg.token
    }
    writer = csv.DictWriter(entries, fieldnames=fieldnames)
    
    # 首次写入时生成表头
    if not file_exists:
        writer.writeheader()
    else:
        # 检查文件末尾是否有换行,没有则补充
        entries.seek(0, os.SEEK_END)
        if entries.tell() > 0:
            entries.seek(entries.tell() - 1)
            last_char = entries.read(1)
            if last_char != "\n":
                entries.write("\n")
    
    writer.writerow(data)

代码说明

  • 用os.path判断文件状态,避免重复写入表头
  • 追加数据前检查文件最后一个字符,确保是换行符,强制新数据从新行开始
  • 保持newline=""参数,避免CSV写入时出现多余空行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:05:21