1. ホーム
  2. python

[解決済み] WindowsでUnixの行末文字を書き込むには?

2023-06-01 09:23:25

質問

WindowsでPythonを使ってファイルに書き込み、Unixの行末文字を使うにはどうしたらよいでしょうか?

例:するとき。

f = open('file.txt', 'w')
f.write('hellon')
f.close()

Pythonは自動的に \n\r\n .

どのように解決するのですか?

Python 2 & 3 の場合

参照してください。 現代的な方法: newline='' を使う。 の答えは、まさにこのページにあります。

Python 2 のみ (オリジナルの回答)

行末文字の変換を防ぐために、ファイルをバイナリで開きます。

f = open('file.txt', 'wb')

Pythonのマニュアルを引用しています。

Windowsでは、モードに 'b' を付加するとバイナリモードでファイルを開くので、'rb', 'wb', 'r+b' といったモードも存在します。Windows上のPythonは、テキストファイルとバイナリファイルを区別しています。テキストファイルの行末文字は、データの読み書きの際に自動的に少し変更されます。このファイルデータに対する舞台裏での変更は、ASCIIテキストファイルでは問題ありませんが、JPEGやEXEファイルのようなバイナリデータを破損させます。このようなファイルを読み書きするときは、バイナリモードを使用するように十分注意してください。Unix では、モードに 'b' を追加しても問題ないので、すべてのバイナリ ファイルに対してプラットフォームに依存せずに使用することができます。