2016-07-14 56 views
0

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

所以,它显示在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() 

任何想法,为什么发生这种情况?非常感谢。

回答

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) 
+0

你解决了他的具体问题,但这是否有助于他理解哪里出了问题? –

+0

其实我想我明白了,加入\ n它迫使newRow进入一个新的行,对吧?谢谢。 – Gonzalo

+0

@Gonzalo如果您使用该文件作为文本文件,那就是对的。但是,如果您想将它作为csv文件与csv模块一起使用,则不需要添加'\ n'手册。 –

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) 

这是writerow而不是写,它会自动添加一个新的生产线。和newline =''会阻止你跳过一行。

0

现在你不使用csv模块,只是像文本文件那样使用常规写入。

要处理该文件为CSV变化:

fd.write(newRow) 

到:

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

如果你要编辑的文件,你应该添加“新行性格特征” manualy一个文本文件,所以:

fd.write('\n' + newRow) 

将工作(在这种情况下,import csv是冗余的)