10

如何只解析 CSV 文件的第一行?我想确保文件中提供了所有适当的列,但不想处理整个文件。

4

3 回答 3

20

更好的方法是简单地使用Ruby 标准库 CSV 解析器中内置的Enumerable支持:

headers = CSV.open('file.csv', 'r') { |csv| csv.first }

该块将导致文件自动关闭,并且调用将返回已解析的标头数组。

于 2013-08-07T20:22:22.760 回答
2

我想通了,希望它可以帮助别人:

  # Return true if the headers match on file1 and file2
  def compare_csv_files(file1, file2)
    file1_first_line = CSV.parse File.open(file1) {|f| f.readline}
    file2_first_line = CSV.parse File.open(file2) {|f| f.readline}
    return file1_first_line == file2_first_line
  end
于 2013-08-07T20:06:57.090 回答
0

给定您计算机上的文件“foo.csv”:

# Return true if the headers match on file1 and file2
def compare_csv_files(file1, file2)
  CSV.parse( File.open(file1).first ) == CSV.parse( File.open(file2).first )
end
于 2013-08-07T20:07:59.870 回答