2014-02-28 98 views
1

由於某些原因,它不會寫入CSV。任何人都可以看到它爲什麼不寫?寫入CSV

def main(): 
    list_of_emails = read_email_csv() #read input file, create list of emails 
    master_list_writer = open_master_list() #open output file so we can write to it 
    ..... 
    write_to_csv(master_list_writer, list_of_url, linkedin_information, facebook_information, twitter_information) 

def open_master_list(): 
    final_csv = open('ruby_dev_final1.csv', 'wb') 
    output_writer = csv.writer(final_csv) 
    return output_writer 

def write_to_csv(master_list_writer, list_of_urls, linkedin_information, facebook_information, twitter_information): #add in linkedin_list 
master_list_writer.writerow(list_of_urls + linkedin_information + facebook_information + twitter_information) 
    print list_of_urls, linkedin_information, facebook_information, twitter_information 
    print 'is this working?' 
    return 

這是打印出來:

['[email protected]', u'Cincinnati Area', u'http://www.facebook.com/jimweirich', u'http://www.linkedin.com/in/jimweirich', u'http://twitter.com/jimweirich'] ['Jim', 'Weirich', 'Chief Scientist', 'Neo', 'Cincinnati Area', 'P1Y10M', 'Present'] ['', '', ''] ['', '', '', ''] 
is this working? 
+1

你的代碼肯定是寫CSV,但我猜你不知道*目錄*在哪裏寫的地方恩。在你的調試輸出中添加一個'print os.getcwd()',然後查看*那個*位置。 –

+0

在write_to_csv中,您需要調用master_list_writer.close() –

+1

@RyanG:closing是可選的;它在腳本退出時自動發生。 –

回答

2

你的代碼肯定是寫CSV,但我猜你不知道在哪裏目錄是它被寫入。

print os.getcwd()添加到您的調試輸出中,然後查看的位置。

或者更好的是,使用絕對路徑打開CSV文件,以確保將其寫入已知位置。您可以使用腳本的文件名作爲開始:

import os.path 

base = os.path.basename(os.path.abspath(__file__)) 

def open_master_list(): 
    final_csv = open(os.path.join(base, 'ruby_dev_final1.csv'), 'wb') 
    output_writer = csv.writer(final_csv) 
    return output_writer 

現在,CSV文件將永遠在同一個目錄腳本創建。

如果您的腳本從不退出,在Windows上您將不會看到數據寫入,直到您關閉文件;您需要在某處存儲對final_csv的引用,因此您可以在該對象上調用close()(不能從csv.writer()對象中檢索它)。

在大多數平臺上,還有一個緩衝區;如果只寫了幾行,在緩衝區被刷新之前(通常這發生在關閉狀態),您可能看不到數據,您需要仍然使用final_csv引用並調用final_csv.flush()將緩衝區刷新到磁盤。

+0

嘿馬丁,我可以找到該文件,但它總是空的。我的桌面上有腳本,這是創建文件的位置。 –

+0

@MorganAllen:你的腳本是否會退出? –

+0

啊哈!所以我不瘋狂! :P –