with open("D:\deskwin10\data.csv", "a+") as csvfile: writer = csv.writer(csvfile) # 先写入columns_name writer.writerow(list) print("保存成功")为什么前面这段代码执行以后的结果,csv中的数据是一行有数据一行是空白又一行有数据一行是空白这样交替的?有什么办法不让他出现一整行的空白行
时间: 2024-02-14 11:25:08 浏览: 106
解决csv.writer写入文件有多余的空行问题
根据你提供的代码,每次执行`writer.writerow(list)`时,会往CSV文件中写入一行数据。而每次打开CSV文件时,使用的是"a+"模式,表示追加模式,并且光标定位在文件末尾。因此,在每次写入数据后,文件指针会停留在当前行的末尾,下一次写入数据时会从下一行开始。
如果你想要避免出现空白行,可以考虑以下两种方法:
1. 使用"w"模式打开文件:这样每次打开文件时会清空原有内容,并从头开始写入数据,不会出现交替的空白行。
```python
with open("D:\deskwin10\data.csv", "w") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(list)
```
2. 在每次写入数据前检查文件是否为空:可以使用`os.path.getsize()`方法来判断文件大小,如果文件为空,则先写入列名,再写入数据。
```python
import os
file_path = "D:\deskwin10\data.csv"
if os.path.getsize(file_path) == 0:
with open(file_path, "a+") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(column_names)
with open(file_path, "a+") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(data_row)
```
这样做的目的是确保第一次写入时先写入列名,然后再写入数据,避免出现空白行。
注意:在使用`"a+"`模式打开文件时,可能会出现一些操作系统相关的问题。如果以上方法无法解决问题,可以尝试使用其他模式,如`"w+"`或者在写入数据前使用`csvfile.seek(0)`将文件指针移动到文件开头。
阅读全文