2012-07-11 86 views
1

我想將數據追加到csv文件。我從使用html表單的用戶那裏獲得這些數據。我目前的代碼將數據添加到csv文件,但它不會追加。因此,當用戶輸入詳細的命中註冊按鈕時,它將刪除之前添加的數據,並在該位置插入新數據。那麼,如何添加新數據以便將其保存到下一行並保持其他數據的位置?如何將數據追加到csv文件

這是我在做什麼。

full_name = params["full_name"] 
email = params["email"] 
phone = params["phone"] 
organization = params["organization"] 
job = params["job"] 
diet = params["diet"] 
address = params["address"] 
code = params["code"] 
city = params["city"] 
cost_pool = params["cost_pool"] 

CSV.open("participants_info.csv", "wb") do |csv| 
    csv << [full_name, email, phone, organization, job, diet, address, code, city, cost_pool] 
end 
+2

您使用的是哪個版本的Ruby?如果1.9.x和FasterCSV是內置的CSV庫,則可以執行'require'csv'',然後執行'CSV.open(「participants_info.csv」,「a」)''將其添加到文件中。 – 2012-07-11 06:36:26

回答

12

``a'' Write-only, starts at end of file if file exists, otherwise creates a new file for writing.

``a+'' Read-write, starts at end of file if file exists, otherwise creates a new file for reading and writing

使用CSV.open("participants_info.csv", "a+")

+0

只是'一個'更好。 'a +'是誤導性的,因爲你無法真正閱讀它。 – pguardiario 2012-07-11 07:00:48

+1

另外,如果OP使用的是Ruby 1.8.7,那麼「a」將不起作用,您將得到以下錯誤:「ArgumentError:'mode'必須是'r','rb','w'或'wb ' – 2012-07-11 07:09:33

+0

@Anand這些模式意味着什麼? – Andrei 2013-05-29 17:50:59

3
追加模式

打開文件(AB)

CSV.open("participants_info.csv", "ab") do |csv| 
#... 
end 
+3

二進制模式有意義?用csv? – pguardiario 2012-07-11 06:59:14

0
File.open('filename', 'a'){ |outfile| 
    CSV::Writer.generate(outfile) do |csv| 
    csv << ['c1', nil, '', '"', "\r\n", 'c2'] 
    end 
} 
0

要追加文件中使用以下代碼:

CSV.open("participants_info.csv", "ab") do |csv|

+0

已經有人建議 - http://stackoverflow.com/a/11426988/2864740 – user2864740 2014-06-26 05:20:58