2013-11-24 65 views
-1

我有一個包含ruby程序中銷售數據的散列數組,並且希望編寫將這些數據保存到csv文件的代碼,以便以後訪問或更新。有關如何完成此任務的任何建議?感謝您的幫助!如何使用ruby程序將散列數組保存到csv文件?

+1

你有想要使用CSV格式(例如,讀取到電子表格)的理由,或者你只是想將數組保存的內容,這樣你就可以在以後檢索用於進一步處理紅寶石?如果是後者,請考慮使用[Marshall](http://ruby-doc.org/core-2.0.0/Marshal.html)。馬歇爾是一個簡單的方法來拍攝一個Ruby對象的快照,你可以選擇保存到一個文件中。 –

+0

@CarySwoveland感謝您的評論。我需要保存數組的內容,以便以後可以檢索它以便進一步處理。我需要能夠在特定日期範圍內查詢csv中銷售數據的數組 – John

+0

如果您確定要將數據保存爲CSV格式,則有一個答案指向您的CSV類。 CSV通常用於在不共享更方便格式的程序之間進行傳輸。如果您沒有使用CSV,您可能希望編輯您的問題以提供有關您想要執行的操作的更多信息。例如,如果您打算定期將銷售數據保存爲單獨的文件,然後讀取這些文件進行處理,請考慮將數據保存到數據庫中(例如[SQLite](http://viewsourcecode.org/why/hacking/) aQuickGuideToSQLite.html))。 –

回答

0

您可以使用Ruby Marshal內置類進行序列化。

# load array from array.bin or initialize new array 
array = if File.exists?('array.bin') 
      File.open('array.bin') do|file| 
      Marshal.load(file) 
      end 
     else 
      [] 
     end 

# see what's in array 
puts array.inspect 

# modify array 
array << ["test"] 

# save into array.bin file 
File.open('array.bin','w') do|file| 
    Marshal.dump(array, file) 
end 
+0

謝謝@retro。在這種情況下是否可以使用.csv擴展名?我需要將其保存到csv文件,以便日後可以按日期範圍查詢信息。 – John

+0

不,你需要編寫你自己的從ruby數組到CSV的轉換。這會將您的數組序列化爲二進制文件。再次加載後,你會得到相同的數組。 – retro