如何向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
相关产品推荐
相关产品推荐

