4
CSV.open
CSV.open
將數據存儲在內存中並在塊退出時寫入文件一次,否則它會自動寫入很多批次?Ruby的CSV.open緩衝區是否可以一次寫入內存?
require 'csv'
CSV.open('result.csv', 'wb') do |csv|
while row = next_row
csv << row
end
end
CSV.open
CSV.open
將數據存儲在內存中並在塊退出時寫入文件一次,否則它會自動寫入很多批次?Ruby的CSV.open緩衝區是否可以一次寫入內存?
require 'csv'
CSV.open('result.csv', 'wb') do |csv|
while row = next_row
csv << row
end
end
CSV.open
將寫入基礎OS當塊關閉,並且它也將每寫緩衝區滿和刷新的時間,這會自動發生。 (在我的Ruby安裝中,它發生在8196字節處)。您還可以將csv.flush
添加到您的塊,以強制它按順序寫入。
require 'csv'
CSV.open('result.csv', 'wb') do |csv|
while row = next_row
csv << row # Writes to underlying OS only when buffer fills
csv.flush # Forces write to underlying OS
end
end # Writes to underlying OS and closes file handle
(請注意,寫入是到底層操作系統,其可以實際寫入磁盤之前再次緩衝流。)
我通過運行'CSV.open(「富」測試此,「WB '){| x |循環{x << [1,2,3]; sleep 0.001}}'並在另一個shell中觀看'foo'的文件大小。每〜3秒緩衝區填滿8196字節並寫入磁盤。 –