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

如何在已有内容的CSV文件中追加写入新行(Python)

在Python中向CSV文件追加内容而不覆盖原有数据

你的问题很常见——默认情况下np.savetxt会以覆盖模式写入文件,所以每次运行都会清空原有内容。这里有两种解决思路,还顺便帮你修正了代码里的几个小问题:

方法1:修改numpy的savetxt参数实现追加

只需要给np.savetxt加上mode='a'参数(表示append追加模式),同时要注意表头只在第一次写入时添加,避免重复:

import numpy as np
import os

name = "name" 
email = "email" 
# 注意:原代码里naslov没有逗号,split会报错,这里补上示例逗号
naslov = "RONKOVA ULICA, 1000" 
telefonska = "02 832 07 60" 
# 分割后记得strip去除空格,并且要赋值给变量才会生效
ulica, postna = naslov.split(",")
ulica = ulica.strip()
postna = postna.strip()

rows = [[name, email, ulica, postna, telefonska]] 
fields = ["Ime", "Mail", "Ulica", "Poštna Številka", "Telefonska"] 

# 检查文件是否存在,不存在则先写入表头
if not os.path.exists("output.csv"):
    np.savetxt("output.csv", [fields], delimiter=", ", fmt='% s')
# 用mode='a'追加数据行
np.savetxt("output.csv", rows, delimiter=", ", fmt='% s', mode='a')

方法2:使用Python内置csv模块(更推荐)

numpy主要用于数值计算,处理CSV其实用Python标准库的csv模块更专业,能避免很多格式细节问题,比如换行符、编码等:

import csv
import os

name = "name" 
email = "email" 
naslov = "RONKOVA ULICA, 1000" 
telefonska = "02 832 07 60" 
ulica, postna = naslov.split(",")
ulica = ulica.strip()
postna = postna.strip()

row_data = [name, email, ulica, postna, telefonska] 
fields = ["Ime", "Mail", "Ulica", "Poštna Številka", "Telefonska"] 

# 以追加模式打开文件,newline=''避免Windows下出现多余空行
with open("output.csv", mode='a', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file, delimiter=', ')
    # 如果文件为空,写入表头
    if os.path.getsize("output.csv") == 0:
        writer.writerow(fields)
    # 写入新数据行
    writer.writerow(row_data)

顺便修正你原代码里的两个小问题:

  1. naslov.strip()没有赋值给变量,所以这个操作不会改变naslov的内容,需要改成naslov = naslov.strip()或者直接在分割后给ulica和postna做strip处理;
  2. 如果naslov字符串里没有逗号,split(",")会抛出ValueError,所以要确保你的地址格式是包含逗号的,或者可以加个异常处理避免崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:20:37