質問: open(fileName, "a") f.write(data + os.linesep) f.close() ``` 一行分の改行を行うにはどうすればいいでしょうか。
回答: pythonは`\n`を自動的にOS固有の改行に変換するため、`os.linesep`をWindowsで使うと余分な改行が入る場合があります。 サンプルコード: ``` import os with open('hoge.txt', 'w') as f: f.write('hello' + os.linesep) f.write('world!') with open('hoge.txt', 'r') as f: #テキストモードで開く print(f.read()) with open('hoge.txt', 'br') as f: #バイナリモードで開く(改行コードなども表示できる) print(f.read()) ``` 出力結果: hello world! b'hello\r\r\nworld!' 上記のように2行分改行されたように見えます。(Windowsのメモ帳で開くと1行分の改行に見えるところが厄介ですが...) `os.linesep`は`\r\n`を出力しますが、自動変換で`\n`が`\r\n`になるのでバイナリモードで開くと`\r\r\n`になってしまうのが原因です。 テキストモード(openの第二引数が'b'でない場合)でデータを出力する時は、`os.linesep`ではなく`\n`を使用しましょう。