4

私はWindows7でPython2.7.2(64ビット)を実行しています。ここに記載されている「ユニバーサル改行モード」について少し混乱しています: http: //docs.python.org/library/functions.html#open

ドキュメントから、open()のmodeパラメータで「U」が指定されていない限り、「ユニバーサル改行モード」は有効になっていないようです。ただし、これがデフォルトの動作だと思います。それで、ドキュメントは本当に誤解を招くものですか、それとも私は何かを見逃していますか?

f = open("c:/Temp/test.txt", "wb")
f.write("One\r\nTwo\r\nThree\r\nFour"); f.close()

f = open("c:/Temp/test.txt", "rb")
f.read(); f.close()
'One\r\nTwo\r\nThree\r\nFour'

f = open("c:/Temp/test.txt", "r")
f.read(); f.close()
'One\nTwo\nThree\nFour'

f = open("c:/Temp/test.txt", "rt")
f.read(); f.close()
'One\nTwo\nThree\nFour'

f = open("c:/Temp/test.txt", "rU")
f.read(); f.close()
'One\nTwo\nThree\nFour'

「r」、「rt」、「rU」はすべて同じ動作をしているようですか?

4

2 に答える 2

6

\r\nはWindowsのラインターミネータであるため、これを観察しているので、tモードはそれをに変換し\nます。Unix(ここではMacOS)では、影響はなく、変換もありtません。\r\nとの違いは、すべてのプラットフォームでとtU変換Uすることですが、プラットフォームに依存し、特定のプラットフォームのLTのみを変換します。\r\n\r\nt

テスト文字列をに置き換えて"One\r\nTwo\nThree\rFour"、の効果を確認しますU

于 2012-08-30T08:54:00.400 に答える
0

このドキュメントではそれについて説明しています。

'b'基本的に、テキストファイル(なし)として開くと、データの読み取りまたは書き込み時に、テキストファイルの行末文字が自動的にわずかに変更されます。これが不要な場合は、バイナリモードを使用してください。

于 2012-08-30T08:49:21.440 に答える