在文本模式下打开文件可能会导致Python中的数据丢失:为什么?

Eri*_*got 4 python 7-bit codec 8-bit

codecs.open()提到的文件

即使未指定二进制模式,文件也始终以二进制模式打开.这样做是为了避免因使用8位值进行编码而导致数据丢失.

如何在文件中使用文本模式导致"数据丢失"?听起来像在文本模式下打开文件可能会将字节截断为7位,但我在文档中找不到任何提及:文本模式仅被描述为转换换行符的方式,没有提及某些潜在的数据失利.那么,文档的内容codecs.open()是什么?

PS:虽然可以理解的是,依赖于平台的换行编码的自动换行需要一些小心,但问题是关于8位编码的具体内容.我猜想只有一些编码与自动换行转换兼容,无论它们是8位编码还是7位编码.那么,为什么在codecs.open()文档中挑出8位编码呢?

Igo*_*nko 5

我认为他们的意思是某些编码在至少一些字节中使用所有8位,因此所有256个值都是可能的(特别是,可能得到0x0A或0x0D并不意味着CR或LF).

相反,在UTF-8文件中,CR和LF字符(以及0x80以下的所有其他字符)总是转换为自身.它们不能作为其他角色编码的一部分出现.