2012-08-27 53 views
1

後,我有一個元組結果從MySQL這樣的:的Python:CSV文件仍是空白寫入數據

sqlResult=({'Count': 1L, 'gname': 'Anron may'}, {'Count': 1L, 'gname': 'Anchy de'}, {'Count': 1L, 'gname': 'abby ras'}, {'Count': 2L, 'gname': 'Akki nome'}, {'Count': 41L, 'gname': 'Archenemy'}, {'Count': 1L, 'gname': 'Antony papa'}, {'Count': 1L, 'gname': 'Dead zombie'}) 

我想保存這些數據到CSV文件中像這樣

import time 
csvName="Gnames-and-count-"+str(int(time.time())) 
csvPath="/home/sean/Desktop/"+str(csvName)+str(".csv") 
writer = csv.writer(open(csvPath, 'wt')) 
for results in sqlResult: 
    writer.writerow([results['gname'],int(results['Count'])]) 

的文件在以下路徑創建,但文件中沒有任何文件。 有什麼明顯的東西我失蹤?請引導我。

+1

如何存儲對文件句柄的引用,以及**明確地**稍後關閉它? – SuperSaiyan

+0

@Thrustmaster謝謝你指出。我沒有關閉文件。 –

回答

6

您需要關閉文件。讓with爲你做。

with open(csvPath, 'w') as f: 
    writer = csv.writer(f) 
    for results in sqlResult: 
     writer.writerow([results['gname'],int(results['Count'])]) 
0

而不是直接寫入csv文件寫入到標準輸出放,並將結果保存在file_name.csv

import csv 
import sys 
... 
... 

writer=csv.writer(sys.stdout) 

... 

然後採取輸出CSV

你可以寫命令是這樣的: -

$ program_name > my_spreadsheet.csv 

希望它會幫助你...

+0

@girijesh我可以完全做到這一點,但設置cronjob這將是一個痛苦,因爲然後我不能根據當前時間戳自動更改文件名。 –

+0

@saunjean用於在cronjob中安裝此腳本,您可以編寫一個shell腳本,您可以使用這樣的命令program_name> my_spreadshet'date'+%Y%m%d''.csv – Hunter

+0

謝謝grijesh,但我不想使它更復雜。在需要的時候保存單個文件會更好。 –