我有这样的代码在python中编写csv文件
import csv
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
输出显示在图像中。 现在输出(第3行)还有一行。如何在编写csv文件时删除最后一个空行。
答案 0 :(得分:2)
使用file.seek
在最后\r\n
之前移动文件指针,然后使用file.truncate
。
import os
import csv
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
csvfile.seek(-2, os.SEEK_END) # <---- 2 : len('\r\n')
csvfile.truncate() # <----
注意:如果您使用不同的lineterminator
,则应更改-2
。我使用-2
因为\r\n
是默认的行终止符。
答案 1 :(得分:1)
这是一种使用rstrip从csv的最后一行删除换行符的解决方案:
def remove_last_line_from_csv(filename):
with open(filename) as myFile:
lines = myFile.readlines()
last_line = lines[len(lines)-1]
lines[len(lines)-1] = last_line.rstrip()
with open(filename, 'w') as myFile:
myFile.writelines(lines)
答案 2 :(得分:1)
with open('eggs.csv', 'wb',newline='') as csvfile: