RubyでCSV行を追加書きする
2007年6月20日
素直な使い方はこうなんですけど
require "csv"
CSV.open("/path/to/filename.csv", "w") do |writer|
writer << ['aaa', 'bbb', 'ccc']
end
これだと(理由はわかりませんが)ファイル末尾に追加書きするモードがありません。
なので、こうしたら
outfile = File.open('/path/to/filename.csv', 'a')
CSV::Writer.generate(outfile) do |writer|
writer << ['aaa', 'bbb', 'ccc']
end
上手くいきました。
動いてるのでよしとしてますが
「何故、通常の使い方で"a"モードが無いのか」の理由は調べてません。
もしかしたら、やっちゃいけないのかもしれないス
「何故、通常の使い方で"a"モードが無いのか」の理由は調べてません。
もしかしたら、やっちゃいけないのかもしれないス
【追記 2008-01-30】
以下のコードで、上書きモードで書き出したCSVファイルの末尾が切れることがありました。
以下のコードで、上書きモードで書き出したCSVファイルの末尾が切れることがありました。
outfile = File.open('/path/to/filename.csv', 'w') # 上書きモードに変えて行っていた
CSV::Writer.generate(outfile) do |writer|
writer << ['aaa', 'bbb', 'ccc']
end
対処としては、CSV.generate にメソッドを変更したら治りました。
ソースは追いきれず、理由は不明のままです。