それなりブログ

とあるWebエンジニアのそれなりのブログ、JavaScript/Node.js/Python/PHP/ゲーム作成 など

RubyでCSV行を追加書きする

素直な使い方はこうなんですけど

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"モードが無いのか」の理由は調べてません。
もしかしたら、やっちゃいけないのかもしれないス
【追記 2008-01-30】
以下のコードで、上書きモードで書き出したCSVファイルの末尾が切れることがありました。

outfile = File.open('/path/to/filename.csv', 'w') # 上書きモードに変えて行っていた
CSV::Writer.generate(outfile) do |writer|
    writer << ['aaa', 'bbb', 'ccc']
end

対処としては、CSV.generate にメソッドを変更したら治りました。
ソースは追いきれず、理由は不明のままです。


2 Responses to “RubyでCSV行を追加書きする”

  • Sho’SBLOG より:

    RubyでCSVに追記するには

    RubyでCSV行を追加書きする (それなりブログ)
    を参照する
    なんで簡単に出来ないのかな〜?

  • jun より:

    追加書きについて困っていたのですが、上記の方法で成功しました。
    非常に助かりました。ありがとうございます。


コメントを残す

メールアドレスが公開されることはありません。

Categories

Archives