\

Pythonでファイルを読み書きする際、改行コードの扱いは重要な要素となります。この記事では、Pythonでテキストファイルを読み込むとき、あるいはPythonからテキストファイルに書き込むときに、改行コードがどうなるかについて詳しく解説します。

改行コードとは

プログラムを書く方はご存知だろうが、OSによってデフォルトで使用される改行コードは異なります。現在使われている改行コードには次の3つがあります。

  • LF(ラインフィード): Unix、Linux、Macで改行コードとして使われている。エスケープシーケンスで表すと「\n」。
  • CR(キャリッジリターン): 古いMacで改行コードとして使われていた。エスケープシーケンスで表すと「\r」。
  • CRLF: Windowsでは、CRの後にLFが続く2文字を改行コードとして扱う。エスケープシーケンスで表すと「\r\n」。

Pythonでの改行コードの扱い

Pythonのopen()関数には改行コードを制御するnewline引数があります。ファイルの読み書き時に改行コードがどうなるかは、このnewline引数に渡す値によって決まります。

例えば、次のようにopen()関数を使用すると、ファイルから読み込んだテキストの改行コードはnewline引数によって制御されます。

with open('textfile.txt', newline=None) as f:
    text = f.read()

この場合、newline引数がNoneなので、ファイルで使われている改行コード(「\n」、「\r」、「\r\n」のいずれか)を自動的に認識し、認識された改行コードは呼び出し元へ返す前に「\n」に変換されます。

同様に、ファイルへの書き込み時もnewline引数で改行コードを制御できます。

with open('textfile.txt', 'w', newline=None) as f:
    f.write('Hello, Python!')

この場合、書き出す文字列の「\n」は、システムデフォルトの改行コード(os.linesepの値)へ変換されます。

まとめ

Pythonでファイルを読み書きする際の改行コードの扱いは、OSや状況によって異なるため、注意が必要です。しかし、Pythonのopen()関数のnewline引数を適切に使用することで、改行コードを柔軟に制御することが可能です。これにより、さまざまな環境でのファイル操作をスムーズに行うことができます。

投稿者 admin

コメントを残す

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