Python3使用csv模块csv.writer().writerow()保存csv文件多一行空行的问题

博客介绍了写文件时newline参数的作用,若不设置,输入中的’\n’会被翻译成系统换行符;参数为’‘或’\n’则无翻译;其他合法值会将’\n’翻译成相应值。还指出不同操作系统换行符不同,且Python 2.7的open函数无newline参数,给出改写为’wb’模式的解决方法。

解决方法

file_write = open("positive_example.csv", "w",newline='')# 加上 newline 防止每行多一行空格
writer = csv.writer(file_write)
writer.writerow(fileHeader)# 写一行表头

解释

当写文件时,如果不设置newline参数,那么输入中的任何’\n’都会被翻译成当前系统的换行符line separator(也就是os.linesep);
如果参数为’‘或者’\n’,不会有任何翻译。
如果是任何其他的合法输入值,’\n’会被翻译成相应的值

When writing output to the stream, if newline is None, any ‘\n’ characters written are translated to the system default line separator, os.linesep. If newline is ‘’ or ‘\n’, no translation takes place. If newlineis any of the other legal values, any ‘\n’ characters written are translated to the given string.

ps:不同操作系统换行符不统一 linux:\n windows:\r\n mac:\r

python2.7

python 2.7 open函数中无newline参数。python 3以上版本中会有newline这个参数。

解决方法:open(‘xxx.csv’,‘w’) 改写为 open(‘xxx.csv’,‘wb’)

Python中,`csv_writer.writerow()` 是 `csv` 模块里用来将一行数据写入CSV文件的方法。 ### 使用方法 一般先借助 `csv.writer()` 函数创建一个 `csv_writer` 对象,再调用 `writerow()` 方法把一行数据写入文件。以下是示例代码: ```python import csv # 定义要写入的数据 data = ['Name', 'Age', 'City'] # 打开文件并创建csv_writer对象 with open('example.csv', 'w', newline='') as file: writer = csv.writer(file) # 写入一行数据 writer.writerow(data) ``` 在这个示例中,先定义了一行数据 `data`,接着打开 `example.csv` 文件,创建 `csv_writer` 对象,最后调用 `writerow()` 方法把 `data` 写入文件。 ### 功能 `csv_writer.writerow()` 方法的主要功能是把一个可迭代对象(像列表、元组等)里的数据作为一行写入CSV文件。每个元素会被当作一个字段,元素间用逗号分隔。 ### 相关注意事项 1. **空行问题**:在Windows系统中,若打开文件时没有指定 `newline=''`,使用 `writerow()` 方法写入数据时每行后可能会一个空行。解决办法是在打开文件时加上 `newline=''` 参数,示例如下: ```python import csv file_write = open("positive_example.csv", "w", newline='') writer = csv.writer(file_write) fileHeader = ['Column1', 'Column2'] writer.writerow(fileHeader) ``` 2. **文件缓冲问题**:`writerow()` 方法实际上会写行,但由于文件缓冲,可能无法立刻在文件里看到写入的内容。若想查看文件中的内容,可以关闭文件或者调用 `.flush()` 方法。如果使用 `with` 语句,即便出现错误,文件也会自动关闭: ```python import csv data = ['Name', 'Age'] with open('test.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(data) # 文件会在with语句结束时自动关闭 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值