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

Python改写CSV指定行时遇模式错误及行间距问题求解

解决Python CSV模块修改指定行时的模式错误与Windows空行问题

问题根源梳理

  • 用rb二进制模式读取CSV:CSV模块需要处理字符串,二进制模式返回字节,触发_csv.Error
  • 读用rt但写用wb:写入字符串到二进制文件,触发TypeError
  • 读写都用文本模式但Windows下出现空行:Windows文本模式自动将\n转成\r\n,而CSV Writer本身也会写入\r\n,导致双重换行,出现空行

解决方案

核心是统一用文本模式打开文件,并指定newline=''参数,让CSV模块自行处理换行符,避免系统和模块的双重转换。

完整示例代码

import csv
import os

# 配置参数
csv_path = "your_file.csv"
temp_path = "temp_file.csv"
modify_row_num = 3  # 要修改的行号(从1开始计数)
updated_row = ["修改后的列1", "修改后的列2", "修改后的列3"]

# 读取并修改指定行
with open(csv_path, 'r', newline='') as in_file, open(temp_path, 'w', newline='') as out_file:
    csv_reader = csv.reader(in_file)
    csv_writer = csv.writer(out_file)
    
    for row_idx, row_data in enumerate(csv_reader, start=1):
        if row_idx == modify_row_num:
            csv_writer.writerow(updated_row)
        else:
            csv_writer.writerow(row_data)

# 替换原文件
os.replace(temp_path, csv_path)

关键说明

  • newline=''的作用:在文本模式下,禁止Python自动转换换行符,CSV模块会根据当前操作系统写入合适的换行符(Windows为\r\n,类Unix为\n),避免双重换行导致的空行
  • 始终保持读写模式一致:全部使用文本模式(r/w,rt/wt中的t可省略,默认就是文本模式),不要混合二进制与文本模式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:30:57