为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕雪6442864 2019-11-30 14:36:30
是什么让在“ r”模式下解析文本文件比在“ rb”模式下解析文本文件更方便?特别是当有问题的文本文件可能包含非ASCII字符时。
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

这一点取决于您所使用的Python版本。在Python 2中,Chris Drappier的答案适用。


在Python 3中,它是一个不同的(并且更加一致)的故事:在文本模式('r')中,Python将根据您提供的文本编码来解析文件(或者,如果不提供,则取决于平台的默认值) ,并read()会给您一个str。在二进制('rb')模式,Python不认为该文件中包含的东西,可以合理地解析为字符,并read()给你一个bytes对象。


同样,在Python 3中,通用换行符(在'\n'和特定于平台的换行符之间进行转换,因此您不必关心它们)在任何平台上均适用于文本模式文件,而不仅仅是Windows。


查看完整回答
反对 回复 2019-11-30
?
FFIVE

TA贡献1797条经验 获得超6个赞

区别在于行尾(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


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 552 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信