说当我有 0 个参数时有 2 个参数?尝试打开要写入的 CSV 文件

  • 本文关键字:参数 文件 CSV ruby file csv dir
  • 更新时间 :
  • 英文 :


我正在尝试从CSV文件中读取并使用等式将人们编纂成组。 我将他们所属的组的名称附加到他们的行创建的数组的末尾。 然后我把它写到一个新文件中,这样我就不会覆盖原始文件,以防出现问题。

此外,它会遍历目录并对多个 csv 文件执行此操作。

但是,当我尝试打开要写入的新文件时,它是这样说的:

Segmenter.rb:12:in `open': wrong number of arguments (0 for 1) (ArgumentError)
        from Segmenter.rb:12:in `foreach'
        from Segmenter.rb:12:in `<main>'

这是删除系数的脚本。系数数组中的所有 x 都是我的脚本中的数字。

require 'csv'
coefficients = [ 
[x, x, x, x, x, x, x, x, x, "Utilitarians"],
[x, x, x, x, x, x, x, x, x, "Hometown School/Social"],
[x, x, x, x, x, x, x, x, x, "State Pride"],
[x, x, x, x, x, x, x, x, x, "Hard-Wired Advocates"],
[x, x, x, x, x, x, x, x, x, "Game Hunters"]
]
Dir.foreach do |current_file|
    data_set = CSV.read(current_file)
    data_set.array.each do |row|
        segment_value = 0
        segment_name = ""
        coefficients.each do |segment|
            if (segment[0] *  row[1] + segment[1]*row[2] + segment[2]*row[3] + segment[3]*row[4] + segment[4]*row[5] + segment[5]*row[6] + segment[6]*row[7] + segment[7]*row[8]) > segment_value
                segment_value = segment[0] *  row[1] + segment[1]*row[2] + segment[2]*row[3] + segment[3]*row[4] + segment[4]*row[5] + segment[5]*row[6] + segment[6]*row[7] + segment[7]*row[8]
                segment_name = segment[8]
            end
        row << segment_name
    end
    CSV.open("#{current_file.basename} SEGMENTED.csv", "w") do |writer|
        data_set.array.each do |data|
            writer << data
        end
    end
    end 
end
我相信

问题出在Dir.foreach,而不是CSV.open

您需要提供一个目录作为参数。这就是您收到缺少参数错误的原因。

尝试:

Dir.foreach('/path/to_my/directory') do |current_file|

我认为错误消息中引用的open是当Dir尝试查找要打开的目录以获取foreach的文件列表时。

相关内容

  • 没有找到相关文章

最新更新