I';我试图理解Python中的二进制文件模式

I';我试图理解Python中的二进制文件模式,python,python-3.x,binaryfiles,Python,Python 3.x,Binaryfiles,我已经创建了一个名为nameFile.txt的文本文件。全文如下 This is a file. It will be read from program. 当我在正常模式下打开一个文件时,它会显示“nameFile.txt”中的文本 输出: This is a file. It will be read from program. b'This is a file.\r\nIt will be read from program.' 当我以二进制模式打开文件时,它会显示如下内容: nam

我已经创建了一个名为
nameFile.txt
的文本文件。全文如下

This is a file.
It will be read from program.
当我在正常模式下打开一个文件时,它会显示“nameFile.txt”中的文本

输出:

This is a file.
It will be read from program.
b'This is a file.\r\nIt will be read from program.'
当我以二进制模式打开文件时,它会显示如下内容:

nameFile = open("nameFile.txt", "rb")
输出:

This is a file.
It will be read from program.
b'This is a file.\r\nIt will be read from program.'

为什么我的输出包含一些额外的转义序列,如文本模式中的b,\r\n?

,重要的是。。。文本。有“普通”字符(字母、数字、标点符号等),也有特殊字符。后者中的许多,例如新行字符(
\n
)、回车符(
\r
)和制表符(
\t
)在影响文本显示方面具有特定的作用

这就是为什么在文本模式下
\r\n
显示为新行,而不是显式显示

在二进制模式下是不同的:所有字符都应该是字节,而不是为了更好地呈现文本而进行的解释。这就是为什么在打印以二进制模式打开的文件内容时会显示所有字符的原因


注意:开始显示的
b
就在实际文件之前,只是表示“这里它是以二进制模式显示的文件”。

因为在二进制模式下,
.read
返回的是
字节
对象,而不是
str
对象,这就是打印时字节对象的表示方式。
b
不在文件的开头。这就是在Python中打印
字节
对象时如何表示它们的方法。@juanpa这不是我写的吗?我不是说它是文件的开头,而是“转储”的开头。请参阅我的编辑,以查看我是否使其更清晰