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

Python中覆盖CSV列失败:执行代码后CSV数据被清空

解决CSV列覆盖失败且数据被清空的问题

我来帮你排查代码里的问题,然后给出能安全修改CSV指定列的实现方案:

你的代码里的核心问题

  • 直接用w模式打开文件导致数据清空:open('...', 'w')会立刻截断文件,把原有内容全部删除,这是你数据消失的根本原因。
  • 未读取原CSV数据:你只获取了文件的行数,但没有把原有行数据保存下来,后面的row变量根本没定义,运行时会直接报错。
  • write方法用法错误:write是文件对象的方法,不是字符串的方法,而且你拼接图片路径的方式也不符合Python语法。
  • 手动自增循环变量多余:for i in range(0,r)已经会自动让i从0递增到r-1,手动i=i+1会导致跳过一半的行。

正确的实现代码

下面是可以安全修改CSV指定列的代码,我会加上详细注释:

import csv

# 配置参数:修改你要覆盖的列索引(从0开始计数)和文件路径
target_column = 0  # 比如要修改第一列就写0,第二列写1,以此类推
csv_file_path = 'C:/Users/KaanPISI/Desktop/seyiresas.csv'

# 1. 先读取原CSV的所有数据到内存
all_rows = []
with open(csv_file_path, 'r', newline='', encoding='utf-8') as input_file:
    csv_reader = csv.reader(input_file)
    all_rows = list(csv_reader)  # 把每一行都存到列表里

# 2. 遍历修改目标列的内容
for row_index in range(len(all_rows)):
    # 格式化生成图片路径,用f-string更简洁清晰
    image_path = f'/home/nvidia/racecar-ws/src/racecar-controllers/deep_learning/data/057/{row_index:05d}.jpg'
    # 替换当前行的目标列内容
    all_rows[row_index][target_column] = image_path

# 3. 把修改后的数据写回CSV文件
with open(csv_file_path, 'w', newline='', encoding='utf-8') as output_file:
    csv_writer = csv.writer(output_file)
    csv_writer.writerows(all_rows)

关键注意事项

  • 如果你的CSV文件有表头,记得修改循环的起始索引(比如range(1, len(all_rows))),避免把表头也改成图片路径。
  • 使用with语句操作文件,Python会自动帮你关闭文件,避免资源泄漏和数据写入不完整的问题。
  • 加上encoding='utf-8'参数可以避免中文等非ASCII字符出现乱码问题(如果你的CSV里有这类字符的话)。

内容的提问来源于stack exchange,提问作者KAAN BOZOĞLU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:42:20