如何检测CSV是空还是没有行?

时间:2016-10-06 19:28:49

标签: ruby csv

我有一个数组info,我正在阅读每个项目并将其添加到CSV文件中,如下所示:

  info.each do |listing|
    CSV.open(csvfile, "a+") do |csv|
      csv << listing
    end
  end

但是,我想要做的是当CSV为空时(即这是添加到此特定CSV的第一行)我将在添加任何数据之前添加标头。标题是一行只有数据类别:名字,姓氏,地址等

如果我将它添加到该循环中,它将在每个记录之后添加它。

此外,无法保证数组中的第一项将成为CSV中的第一项。例如,迭代器处于i[10]时,CSV可能为空。

我该如何处理?

1 个答案:

答案 0 :(得分:1)

您可以检查CSV::Table是否包含任何行:

require 'csv'
filepath  = File.join('.', 'test')
csv       = CSV.open(filepath, 'wb', col_sep: ';', quote_char: "\x00")
csv_table = CSV.table(filepath)
csv_table.count
#=> 0