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

Linux系统下Python3 csv.writerows()每行末尾多余\r回车符问题咨询

问题原因

Python 内置 csv 模块的写入器默认行终止符为符合 CSV 工业规范的 \r\n,该默认值与代码运行的操作系统无关。你在 Linux 环境下指定 newline='' 的作用是阻止操作系统对换行符做额外自动转换,并不会修改 csv 模块自身的行终止符输出逻辑,所以还是会输出 \r\n 换行。

解决方案

创建 csv.writer 实例时,手动指定 lineterminator 参数为 \n 即可,修改后的可运行代码如下:

#!/usr/bin/python3
  
import csv

with open("position.csv", 'w', newline='') as file:
  # 新增lineterminator参数指定换行符为纯LF
  writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC, lineterminator='\n')
  lat = 3.7
  long = 4.5
  writer.writerow(['coords', lat, long])

修改后执行代码,再用 od -cd 命令查看输出的csv文件,就能看到换行符已经改为你需要的 \n。

二进制模式报错的原因

csv.writer 是面向文本流设计的工具,输出内容为字符串类型,而用 wb 二进制模式打开的文件要求写入的数据必须是bytes类型,二者类型不匹配因此会触发报错。如果一定要用二进制模式写入,需要自行把csv生成的每行字符串编码为bytes后再写入,操作复杂度远高于直接修改lineterminator参数,不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:04