怎么写最后一行没有新行字符的csv文件?

时间:2013-10-11 03:32:30

标签: python csv python-2.7

我有这样的代码在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'])

output in image

输出显示在图像中。 现在输出(第3行)还有一行。如何在编写csv文件时删除最后一个空行。

3 个答案:

答案 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: