猿问

在r和rb模式下解析文本文件之间的区别

是什么让在“ r”模式下解析文本文件比在“ rb”模式下解析文本文件更方便?特别是当有问题的文本文件可能包含非ASCII字符时。



慕雪6442864
浏览 553回答 3
3回答

SMILET

这一点取决于您所使用的Python版本。在Python 2中,Chris Drappier的答案适用。在Python 3中,它是一个不同的(并且更加一致)的故事:在文本模式('r')中,Python将根据您提供的文本编码来解析文件(或者,如果不提供,则取决于平台的默认值) ,并read()会给您一个str。在二进制('rb')模式,Python不认为该文件中包含的东西,可以合理地解析为字符,并read()给你一个bytes对象。同样,在Python 3中,通用换行符(在'\n'和特定于平台的换行符之间进行转换,因此您不必关心它们)在任何平台上均适用于文本模式文件,而不仅仅是Windows。

FFIVE

区别在于行尾(EOL)的处理方式。不同的操作系统使用不同的字符标记EOL- \n在Unix中(\r在OS X之前的Mac版本中)\r\n在Windows中。在文本模式下打开文件时,在读取文件时,Python会使用just替换从文件读取的特定于操作系统的行尾字符\n。反之亦然,即,当您尝试写入\n以文本模式打开的文件时,它将写入操作系统特定的EOL字符。您可以通过选中查找OS默认的EOL os.linesep。以二进制模式打开文件时,不会发生映射。您所读的就是您所得到的。请记住,文本模式是默认模式。因此,如果要处理非文本文件(图像,视频等),请确保以二进制模式打开文件,否则最终会由于引入(或删除)一些字节而弄乱了文件。Python还具有通用的换行模式。当文件在此模式下被打开,Python的映射所有的字符\r,\n并\r\n以\n。
随时随地看视频慕课网APP

相关分类

Python
我要回答