FasterCSV - 而不是让内容文件获取文件的路径

时间:2012-07-18 18:25:19

标签: ruby-on-rails ruby csv fastercsv

  def csv_parsing
    require 'csv'
    csv_file_path = File.join(File.dirname(__FILE__), "csv_data.csv")
    CSV.parse(csv_file_path) do |line|
      puts line[0]
    end
  end

这是一个简单的例子,我试图解析CSV文件。上面的操作放在控制器中,文件位于项目的根目录中。

但是我没有从CSV文件中获取数据,而是获取文件路径,例如:

/Users/my_mane/ruby_folder/my_project/app/controllers/csv_data.csv

注意:该文件包含真实数据。

为什么只打印出文件路径而不是自己的数据?

2 个答案:

答案 0 :(得分:2)

因为CSV#parse实际上会解析传递给它的字符串,而不是该字符串所包含的位置的文件。 您需要的是CSV#read:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html#method-c-read

答案 1 :(得分:1)

如果您使用文件路径而不是字符串中的数据,那么您可以逐行读取此文件:

CSV.foreach(csv_file_path) do |line|
  ...
end