Python(Windows))を使用してファイルに書き込み、Unixの行末文字を使用するにはどうすればよいですか?
例えば行うとき:
f = open( 'file.txt'、 'w') f.write( 'hello\n') f.close()
Pythonは、\ nを\ r\nに自動的に置き換えます。
参照: 最新の方法:newline = ''を使用 このページで答えてください。
ファイルをバイナリとして開き、行末文字の翻訳を防ぎます。
f = open('file.txt', 'wb')
Pythonマニュアル:
Windowsでは、モードに「b」を追加すると、ファイルがバイナリモードで開かれるため、「rb」、「wb」、「r + b」などのモードもあります。 Pythonは、テキストファイルとバイナリファイルを区別します。テキストファイルの行末文字は、データの読み取りまたは書き込み時に自動的にわずかに変更されます。 ASCIIテキストファイルのファイルデータは問題ありませんが、JPEGまたはEXEファイルのようなバイナリデータは破損します。このようなファイルの読み取りと書き込みを行うときは、バイナリモードを使用してください。モードに「b」を追加しても問題はないため、すべてのバイナリファイルに対してプラットフォームに依存せずに使用できます。
__ io.open() に_newline=
_キーワードパラメータを使用して、UnixスタイルLF行末ターミネータを使用します。
_import io
f = io.open('file.txt', 'w', newline='\n')
_
これはPython 2.6+で動作します。Python 3では、組み込みのopen()
関数の_newline=
_パラメータを使用することもできますio.open()
。
Python 3では機能しない改行の変換を防ぐ古い方法は、binaryでファイルを開くことです。行末文字の翻訳を防ぐモード:
_f = open('file.txt', 'wb') # note the 'b' meaning binary
_
しかしPython 3では、バイナリモードはbytesを読み取り、characters必要な処理を行いません。ストリームで文字列I/Oを実行しようとすると、おそらく例外が発生します(たとえば、「TypeError: 'str'はバッファをサポートしません」インタフェース")。
ファイルを開くときは、バイナリ擬似モードを使用する必要があります。
f = open('file.txt', 'wb')