我在用Ruby将列写入csv文件时遇到了麻烦。下面是我的代码片段。
calc = numerator/denominator.to_f
data_out = "#{numerator}, #{denominator}, #{calc}"
File.open('cdhu3_X.csv','a+') do|hdr|
hdr << ["numerator","denominator","calculation\n"] #< column header
hdr << "#{data_out}\n"
end
这段代码在每一行都添加了列标题,我只需要在每一列数据的顶部添加它。我在这里和其他地方都搜索过了,但没有找到一个明确的答案。如果有任何帮助,我将不胜感激。
4条答案
按热度按时间cgfeq70w1#
我建议使用CSV库:
如果您不能使用
w
选项,而您确实需要a+
(例如,数据不能同时全部可用),那么您可以尝试以下技巧:kadbb4592#
最简单的方法是在
'w'
模式下打开文件一次,写入文件头,然后写入数据。如果由于某种技术原因不能这样做(例如,数据不能一次全部获得),则可以对文件使用
IO#tell
方法返回当前文件位置。当打开文件进行追加时,位置被设置为文件的末尾,因此如果当前文件位置为零,则该文件是新创建的,并且没有头文件:bnl4lu3b3#
处理csv文件的最佳方法是使用Ruby的
CSV
模块。我有同样的问题后,阅读
CSV
代码,我遇到了这个解决方案,我发现最有效的。vhipe2zx4#
这对我有用