首页 > 解决方案 > 从 CSV 编写器写入的文件中删除最后一行(和空白行)

问题描述

我有一个由 CSV Writer 编写的 CSV 文件。我需要删除文件末尾的一个空行。我似乎无法摆脱它,并且我的搜索结果被人们淹没在询问为什么每行数据之间有一个空白行(这当然可以通过添加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)])

这是输出(实际上使最后一行为空不会出现在降价中,看起来:

0;479.9182863880229
1;397.35174552864135
2;390.33911360875913
3;243.78955947710557
4;171.04998742391697
<empty line here>

我不喜欢这个解决方案,这与对这个问题的回答是一样的

lines = file.readlines()
lines = lines[:-1]

因为它需要我再次读取整个文件,并且我预计这个文件可能会增长到一个非常大的大小,并且这个特定的代码块最终可能会被多次执行。

标签: python-3.x

解决方案


我终于找到了一个可行的解决方案,并且不需要再次读取整个文件:

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

推荐阅读