如何访问刚刚打开的CSV文件的文件名?

时间:2016-10-23 00:14:53

标签: ruby csv

我有一个看起来像这样的方法:

def extract_websites
  websites = []
  csvs = Dir["#{@dir_name}/#{@state}/*.csv"]

  csvs.each do |csv|
    CSV.foreach(csv, headers: true) do |row|
      websites << row['Website']
    end
  end
  websites.uniq!
end

但我需要做的是打开每个CSV文件,我想检测该文件的名称。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

在您的示例中,变量csv包含CSV文件的路径。 该子变量在其子节点中可用,它与其范围相同但不向上。

所以:

def extract_websites
  websites = []
  csvs = Dir["#{@dir_name}/#{@state}/*.csv"]

  csvs.each do |csv|
    puts File.expand_path(csv) # show the full path for each csv file
    CSV.foreach(csv, headers: true) do |row|
      puts csv # shows unexpanded path for each row of a csv
      websites << row['Website']
    end
  end
  websites.uniq!
end

应该打印出每个CSV文件和每个row的路径。