在CSV Python中添加新行

时间:2016-07-14 14:28:50

标签: python csv

我正在为已存在的特定CSV添加新行,但由于未知原因,新行将与最后一行一起添加而不是新行。

所以,它在CSV中显示为:

11-07-2016,38361,9076,14487,292,741614-07-2016,38417,9767,15832,301,7416

什么时候显示为:

11-07-2016,38361,9076,14487,292,7416
14-07-2016,38417,9767,15832,301,7416

我的代码是:

import time
import csv


today = (time.strftime("%d-%m-%Y"))
newRow = """%s,%s,%s,%s,%s,%s""" % (today, yes, ok, war, leg, noag)
fd = open('data.csv','a')
fd.write(newRow)
fd.close()

知道为什么会这样吗?非常感谢。

3 个答案:

答案 0 :(得分:2)

看起来该文件最后没有换行符。在添加新行之前尝试添加一行:

newRow = "\n%s,%s,%s,%s,%s,%s\n" % (today, yes, ok, war, leg, noag)
with open("data.csv", "a") as f:
    f.write(newRow)

答案 1 :(得分:0)

import time
import csv


today = (time.strftime("%d-%m-%Y"))
newRow = """%s,%s,%s,%s,%s,%s""" % (today, yes, ok, war, leg, noag)
with open('data.csv','a',newline='') as fd:
    writer = csv.writer(fd)
    writer.writerow(newRow)

它的写作而不是写作,它会自动添加一个新行。和换行符=''防止你跳过一条线。

答案 2 :(得分:0)

现在你没有使用csv模块,只是常规写入文本文件。

将文件视为csv更改:

fd.write(newRow)

为:

csv_writer = csv.writer(fd)
csv_writer.writerow(newRow)

如果您想将文件编辑为文本文件,您应该手动添加“new line charecter”,所以:

fd.write('\n' + newRow)

将起作用(在这种情况下,import csv是多余的)