我有一个由CSV编写器编写的CSV文件。我需要删除的文件末尾有一个空行。我似乎无法摆脱它,而且我的搜索结果被很多人问,为什么每行数据之间都存在空白行(当然可以通过在文件open语句中添加newline=""
来解决。>
有没有办法做到这一点?这是代码:
with open(r"file.csv", "w", newline="") as f:
csv_writer = writer(f, delimiter=";")
for i in range(5):
csv_writer.writerow([i, uniform(0,500)])
这是输出(实际上使最后一行为空似乎不会在markdown中显示:
0;479.9182863880229
1;397.35174552864135
2;390.33911360875913
3;243.78955947710557
4;171.04998742391697
<empty line here>
我不喜欢这种解决方案,它与the responses to this question相同:
lines = file.readlines()
lines = lines[:-1]
因为它要求我再次读取整个文件,并且我希望这个文件可能会变得非常大,并且这个特定的代码块可能最终会被执行很多次。
答案 0 :(得分:0)
我终于找到了一种可行的解决方案,不需要再次读取整个文件:
with open(r"file.csv", "w", newline="") as f:
csv_writer = writer(f, delimiter=";")
for i in range(5):
csv_writer.writerow([i, uniform(0, 500)])
f.seek(0, os.SEEK_END)
f.seek(f.tell()-2, os.SEEK_SET)
f.truncate()