Line break code in CSV file
1.CSVファイルの改行コード
ボウリングのスコア管理プログラムで、CSVファイルを読み込むようにしていますが、
先日、その改行コードの違いにより、プログラムが正しく動作しないことがありました。
2.Excelで保存のCSVファイル
テスト用として、下記のようなデータをCSVファイルとして保存しました。

このファイルをバイナリエディタで開くと、下記のようなデータとなっています。

上記の通り、改行コードとしては、「0D,0A」(CRLF)となっています。
しかし、最後の改行コードがありません。
この点は留意しないといけません。
このCSVファイルをプログラム上で開いた後、データを追加して保存するような場合、
最後の改行コードが抜けてしまうことになるので、データ追加前に改行コードを挿入するなどの処理が必要になります。
3.テキストエディタで保存
テキストエディタで簡単に改行コードを入れようと、テキストエディタで開くと下記のようになっていました。
カーソルを動かしていくと、最終行の右端までしかいかず、最終行が改行されていないことがわかります。

そして、最終行に改行を入れると下記のようになり、テキストエディタ上は改行されます。

それをそのまま保存し、バイナリエディタで開くとどうなるかというと、下記のようになります。
最終行の改行コードが「0A」(LF)しかないことがわかります。

4.プログラム修正
改行コードを自動処理するためのファイルオープン処理のオプションがあり、
プログラム修正を行い対処しました。
下記のような「newline」オプションを指定することで、改行コードを自動認識してくれるようになります。(書き込み時のOPENでも同様に指定すればOKです)
fr = open(“bs2025.csv”, newline=”)