2017-03-18 158 views
1

我有一個簡單的程序,它在數據框的for循環中執行一些計算。將變量寫入CSV行python

該程序打印5個變量的結果,例如, a,b,c,d,e每次迭代後

我只是想將這5個值在新行中追加到CSV每次循環運行,但我無法弄清楚如何做到這一點!我試過一個基本的CSV寫,但他們總是出現在同一列中,而不是在一排一起

任何幫助,將不勝感激

csvRow = [x, ctr, clicks, spend, bidTotal, cpm, cpc] 
    csvfile = "data.csv" 
    with open(csvfile, "a") as fp: 
    wr = csv.writer(fp, dialect='excel') 
    wr.writerow(csvRow) 
+2

告訴我們你的至少失敗的嘗試。 –

+0

謝謝,已經更新了,現在先通過存儲在列表中把它們逐行追加,但總是有一條線留在 – Coder

回答

2

您的代碼似乎正常工作,如果正常列:

import csv 
x, ctr, clicks, spend, bidTotal, cpm, cpc = 1, 2, 3, 4, 5, 6, 7 
csvRow = [x, ctr, clicks, spend, bidTotal, cpm, cpc] 
csvfile = "data.csv" 
with open(csvfile, "a") as fp: 
    wr = csv.writer(fp, dialect='excel') 
    wr.writerow(csvRow) 
    wr.writerow(['a', 'b', 'c', 'd', 'e', 'f', 'g']) 

open(csvfile, 'r').read()然後返回:

'1,2,3,4,5,6,7 \ r \ na,b,c,d,e,f,g \ r \ n'

- 與預期的一樣。

如果它仍然不能爲您工作,嘗試提供一個重現問題的最小示例。請記住(使用open(... "a"))您將追加到現有文件,因此如果看起來不正確,這可能是該程序以前版本中的剩餘問題。

的Python 3::

with open(csvfile, "a", newline='') as fp: 

的Python 2:

with open(csvfile, "ab") as fp: 

讀取相關Q &甲

+0

感謝您的回覆,我在第一個答案中使用了該行,並且我的格式問題消失了 – Coder

+1

@Jason可以在您的情況下工作,但通常不是一個好的解決方案。您的原始代碼是可取的。 'CSV。作家'會爲你做格式化,並且處理包含逗號的字符串等任何難題。 – Stuart

0

將值寫入一個文件,你首先需要打開文件把值:

file = open('filename.csv', 'a') #opens a file for appending

然後,你必須寫文件,您的循環的每一次迭代:

file.write('{}, {}, {}, {}, {}\n'.format(a, b, c, d, e)) #writes a formatted string to the file 

並關閉文件,當你用它做:

file.close()

+0

之間謝謝,我用這個替換了它,新的一行問題消失了 – Coder

+0

我沒有認爲完全跳過csv模塊是一個很好的建議:所有引用/轉義都沒有妥善管理。 –