通用换行模式是否应该是Python 2.7中open()的默认行为?

0cd*_*0cd 4 python python-2.7

我在Windows 7上运行Python 2.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'
Run Code Online (Sandbox Code Playgroud)

似乎"r","rt","rU"都有相同的行为?

geo*_*org 6

您正在观察这个因为\r\n是Windows上的行终止符,因此t模式将其转换为\n.在Unix(MacOS这里),t不影响\r\n,没有转换.之间的区别tUU转换\r\n\r\n每一个平台上,而t依赖于平台,只转换LT对于给定的平台.

替换您的测试字符串以"One\r\nTwo\nThree\rFour"查看效果U.