RubyのCSVクラスは、ファイル末尾に改行文字(\n, \r\nなど)が付いていると、読み込み時に”Unquoted fields do not allow \r or \n”エラーとなり停止することがあります。
エラーメッセージと原因の対応を読み取りづらいため分かりにくいエラーの1つですが、テキストエディタなどでファイルを確認して最後に空行がついている場合はこの可能性を疑います。
末尾改行コードがつく原因が別のアプリケーションによるものである場合は、読み込み前に取り除く処理が必要になります。
また、このファイルが自分のRubyコードで生成したものである場合、書き込み時の処理部分を確認します。File.puts
で書き込んだ場合、改行コードつきで出力されます。
このケースでは、File.print
で書き込むよう変更することで改行コードなしで出力できます。
⁋ 2017/05/19↻ 2024/11/07
中馬崇尋
Chuma Takahiro
Chuma Takahiro