\

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や環境によらず一貫した改行コードを扱いたい場合は、この引数を適切に設定することが重要です。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です