`rb`和`r`的区别是什么对于打开一个文件?

发布于 2022-09-11 22:36:20 字数 276 浏览 27 评论 0

使用open函数打开一个文件,有rb, r的参数:

clipboard.png

请问下:
使用rb打开就是得到二进制数据吗?还是字节数据?字节数据和二进制数据有何区别?
使用r打开就直接是字符串吗?字符串和字节的区别是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

窗影残 2022-09-18 22:36:20

使用r:
是推荐使用的打开文本文件的模式。因为使用此模式打开文本文件时,python默认为我们做了一些处理,比如:假设在windows下,将本来应该读入的换行符\r\n处理成\n,方便我们处理。(值得一提的是,当你将\n写入文件时,python也会默认将其替换成\r\n,如果你是win系统的话)
补充:其实是启用了通用换行符支持(UNS),它默认开启。
使用rb:
则python不会对文本文件预处理了,你读入的\r\n依然是\r\n.

音盲 2022-09-18 22:36:20

rb 是字节流(字节)
r 是string(字符串)

python中默认使用的字符编码是unicode。
字符str与字节bytes是两个概念。
字符串,用于显示。
字节流,用于传输,存储。

例如
s = 'yu123中午'
#s就是一个字符串
sbyte = s.encode()
#sbyte就编码成一个字节流了。  
print(sbyte)
>>> b'yu123\xe4\xb8\xad\xe5\x8d\x88

#字节流,中文显示的是16进制数
s =  sbyte.decode()
#sbyte又解码成字符了
print(s)
>>> 'yu123中午' 

总之,str是能显示的字符,bytes是不能直接显示的数值。 字符encode成字节 字节decode成字符
黯然#的苍凉 2022-09-18 22:36:20

python3 open

......, Python distinguishes between binary and text I/O. Files opened in binary mode (including 'b' in the mode argument) return contents as bytes objects without any decoding. In text mode (the default, or when 't' is included in the mode argument), the contents of the file are returned as str, the bytes having been first decoded using a platform-dependent encoding or using the specified encoding if given.

心凉 2022-09-18 22:36:20

字节数据就可以理解为二进制数据
二进制数据是用来存储和传输的,因为计算机只认识010101010

unicode是字符集,我们看到的字符串就是unicode对应的一个个字符

然后又有不同的编码方式 utf-8,gbk,utf-16等等

同一个字符使用不同的编码会得到不同的二进制数据,这就是常见的编码乱码

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文