Pythonでテキストファイルを読み込んだり書き込んだりするとき、改行コードがどうなるか気になったことはありませんか?この記事では、Pythonでテキストファイルを読み込むとき、あるいはPythonからテキストファイルに書き込むときに、改行コードがどうなるかについて詳しく解説します。
改行コードとは
プログラムを書く方はご存知だろうが、OSによってデフォルトで使用される改行コードは異なります。現在使われている改行コードには次の3つがあります。
- LF(ラインフィード): Unix、Linux、Macで改行コードとして使われています。エスケープシーケンスで表すと「\n」。
- CR(キャリッジリターン): 古いMacで改行コードとして使われていました。エスケープシーケンスで表すと「\r」。最近のMacではLFが使われているので、もはやこの改行コードに出会う機会は少ない。
- CRLF: Windowsでは、CRの後にLFが続く2文字を改行コードとして扱います。エスケープシーケンスで表すと「\r\n」。
Pythonでの改行コード制御
Pythonのopen()
関数には改行コードを制御するnewline
引数があります。ファイルの読み書き時に改行コードがどうなるかは、このnewline
引数に渡す値によって決まります。
例えば、Windows上でPythonからファイル書き込みを行った場合、デフォルトでは改行コードが強制的にCRLFに変更されます。しかし、改行コードを変更されないためには、ファイルを開く際に改行コードを指定する必要があります。
outputFile='./test.txt'
with open(outputFile,'w',newline="\\n") as fo:
fo.write('hello world !\\n')
上記のプログラムでは改行に \\n
を使用し、プログラム中では紛れもなく改行コードはLFです。しかし、実行し書き出されたファイルはしっかりと改行コードがLFになっていることが確認できます。
まとめ
Pythonでファイルを読み書きするときの改行コードは、open()
関数のnewline
引数によって制御されます。OSや環境によらず一貫した改行コードを扱いたい場合は、この引数を適切に設定することが重要です。