近日在修改一段代码的时候遇到一个奇怪的问题,用 csv 这个库写入数据的时候居然每次写入都会多一行空行。因为之前也这么用一直都没问题,于是搜了一下解决方法,在此记录。
问题和解决方法
一般来说 Python 写入 csv 的代码如下:
with open(birth_weight_file,'w') as f:
writer=csv.writer(f)
writer.writerow(birth_header)
writer.writerows(birth_data)
f.close()
这种写法最终的结果就是生成的 csv 文件每两行中间都有一行空白行,解决办法就是写入后面加上 newline='' 即可。
修改后代码如下:
with open(birth_weight_file,'w',newline='') as f:
writer=csv.writer(f)
writer.writerow(birth_header)
writer.writerows(birth_data)
f.close()
原因分析
Python 3 里面对 str 和 bytes 类型做了严格的区分,不像 Python 2 里面某些函数里可以混用。所以用 Python 3 来写 wirterow 时,打开文件不要用 wb 模式,只需要使用 w 模式,然后带上 newline=''。
在 Windows 这种使用 /r/n 的系统里,不用 newline='' 的话,会自动在行尾多添加个 /r,导致多出一个空行,即行尾为 /r/r/n。
测评中国


![搬瓦工:香港[HK_8]CN2 GIA机房测评,1Gbps三网优化带宽,流媒体解锁优秀/支持TikTok,月付$89.99起-测评中国](https://www.veidc.com/wp-content/uploads/2026/08/20260804171951.png)
![搬瓦工:新加坡[SG_8]CN2 GIA机房测评,电信移动优化/联通绕行,1.5Gbps-5Gbps超大带宽,原生解锁本地流媒体/支持TikTok,月付$49.99起-测评中国](https://www.veidc.com/wp-content/uploads/2026/08/20260804204131.png)









