2011-11-03 92 views
0

我打開一個CSV文件,用以下代碼編寫,如CSV文檔中所示(http://ruby-doc.org/stdlib- 1.9.2/libdoc/CSV /的RDoc/CSV.html):CSV.open(..)塊不會執行,並立即結束

CSV.open(csv_file_out, 'wb') { |csv_line_out| 

    #stuff happens here 

} 

的CSV.open命令調試程序直接轉到塊的結束後的塊不執行,即

思考 「以防萬一」,我嘗試用相同方式IO w+bwtw+taba+b。我也曾嘗試在打開文件之前創建文件。沒有什麼變化。

當我在CSV.open行停止調試器時,我能夠手動執行一個塊並自己創建一個csv文件。我也可以從控制檯創建文件frmo完全相同的命令。但在服務器中執行時不起作用。

關於發生什麼事情的任何想法都非常受歡迎。提前致謝!

+0

您的服務器是否具有對輸出文件和更重要的目錄的寫入權限? – diedthreetimes

+0

是的。但我運行這不是在我的常規機器上,但在我沒有配置的遠程機器上運行。將在我的普通機器上運行時更新。 – Kaya

+0

在由於編碼問題而引發異常時有類似的問題。寫入CSV突然停止,沒有任何信息打印到終端。我在周圍添加了一個開始/救援來確定哪裏出了問題。 –

回答

-1

您試圖迭代某物。 (文件內容)不存在,因此它的邏輯性就是它結束了!試試這個方法:

CSV.open(csv_file_out, "wb") do |csv| 
    csv << [column1, column2,...] 
end 
+0

這就是我目前所做的:我在你的代碼和我之間看到的差異是: 1.'| csv_line_out |'與'| csv |' 2.雙引號與單引號。 你看到'#stuff發生在這裏'我將元素添加到'| csv_line_out |'。這仍然不起作用。 :-( – Kaya

+0

這幾乎完全重複了op的問題,沒有任何解釋。 – diedthreetimes