2010-11-01 30 views
2

我正在嘗試將數據(主要是日期,布爾值和浮點數據類型)寫入CSV文件格式。這裏是我的代碼片段:Python:與csvwriter的問題

# Write data to file 
with open(OUTPUT_DIR + output_filename,'w') as outputfile: 
    wrtr = csv.writer(outputfile, delimiter=',', quotechar='"') 

    for x, y in datarows.items(): 
     a,b,c,d,e,f,g = (somedate.strft('%Y-%m-%d'),0,6058.7,False,1913736200,0,False)      
     rowstr = "{0},{1},{2},{3},{4},{5},{6}".format(a,b,c,d,e,f,g) 
     wrtr.writerow(rowstr) 

    outputfile.close() 

文件內容是這樣的:

2,0,0,7, - ,10, - ,03 「」 0」 , 「6,0,5,8,...,7」, 「F,A,L,S,E,」,「,1,9,1,3,7,3,6,2,0 ,0,「,」,0,「,」,F,a,l,s,e

我目前使用原始文件對象寫入文件 - 但我寧願使用csvwrite - 因爲這是它應該用於

+0

你能澄清你的問題是什麼? – Mike 2010-11-01 13:51:27

+0

這是什麼問題? – Michael 2010-11-01 13:53:36

+0

這是一個糟糕的代碼,爲什麼當你使用'with'語句時關閉'outputfile'?這個'datarows' for循環是爲了什麼? – SilentGhost 2010-11-01 13:56:26

回答

3

看看這個例子也許它可以幫助你:

import datetime 

with open('file.csv','w') as outputfile: 
    wrtr = csv.writer(outputfile, delimiter=',', quotechar='"') 
    a = (datetime.datetime.now().strftime('%Y-%m-%d'),0,6058.7,False,1913736200,0,False) 
    wrtr.writerow(a) # pass an iterable here 

    # outputfile.close() you don't have to call close() because you use with 

FILE.CSV

2010-11-01,0,6058.7,False,1913736200,0,False 

希望這可以幫助你

5

請改爲wrtr.writerow([a,b,c,d,e,f,g])

writerow()參數必須是值列表,而不是文本行。 csv.writer的想法是,它將根據CSV規則格式化行值。

您得到的結果是由於writerow()將您的rowstr字符串解釋爲字符列表。