2016-07-14 57 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是冗餘的)