从CSV编写器写入的文件中删除最后一行(空白行)

时间:2018-10-31 15:10:09

标签: python-3.x

我有一个由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]

因为它要求我再次读取整个文件,并且我希望这个文件可能会变得非常大,并且这个特定的代码块可能最终会被执行很多次。

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()