一日一万字の感謝の写経

一日一万字の感謝の写経をして強くなります。そのうち本を置き去りにして何かを作り始める予定です。

Pythonのcsvモジュールで出力されるファイルの改行コードをLFにする

目的

 Pythonの標準モジュールであるcsvモジュールで出力されるファイルの改行コードの変更方法をまとめます。

方法

 以下のようにして改行コードを指定します。writerの引数にlineterminator='\n'を指定すれば改行コードをLFに指定することができます。

with open('test.csv', 'at', newline='') as cout:
    writer = csv.writer(cout, lineterminator='\n') # lineterminatorを'\n'で上書きし、改行コードがLFになるようにした。
    writer.writerow([2, 2, 2])

 試しに、何も指定しない以下のコードも同時に実行して結果を見てみます。実際に改行コードの変更が確認できます。

with open('test.csv', 'at', newline='') as cout:
    writer = csv.writer(cout)
    writer.writerow([1, 1, 1])

f:id:koheitsutsumi223:20190213135934p:plain
実行結果

サクラエディタでの改行コードの表示がCRLFとLFの二つになっているということが確認できます。

 csvモジュールが使用する改行コードはデフォルトではCRLFを改行コードに使用することになっています。デフォルトのまま出力したファイルをLinux環境などで使用すると予期しないエラーに遭遇することもある(僕が昨日そうでした)ので、改行コードの指定は明示的に行っておいてもよいかもしれません。

入門 Python 3

入門 Python 3

みんなのPython 第4版

みんなのPython 第4版