【发布时间】:2011-05-17 20:25:59
【问题描述】:
codecs.open() 的文档提到
文件总是以二进制模式打开,即使没有指定二进制模式。这样做是为了避免由于使用 8 位值进行编码而导致数据丢失。
对文件使用文本模式如何导致“数据丢失”?听起来在文本模式下打开文件可能会将字节截断为 7 位,但我在文档中找不到任何提及这一点:文本模式是 described 仅作为转换换行符的一种方式,没有提及一些潜在的数据丢失。那么,codecs.open() 的文档是指什么?
PS:虽然可以理解将换行符自动转换为依赖于平台的换行符编码需要一些小心,但问题是关于 8 位编码的具体内容。我猜想只有 some 编码与自动换行符转换兼容,无论它们是 8 位还是 7 位编码。那么,为什么在codecs.open() 的文档中单独列出了 8 位编码?
【问题讨论】:
-
我猜转换换行符可能会对文件中的数据产生影响。数据的含义相同,但例如,\r\n 可能仅转换为 \n。我真的不确定,但现在同样好奇。 +1 希望有人能解答。
-
@Endophage:是的,文本模式在写入时肯定会正确转换
\n(这是有据可查的)。反向操作由U模式(通用换行符)给出。