ΉΛDΣƧ
2021-01-29T17:09:21+00:00
我用 wb w 写入"NGA";
然后我分别 用 r rb 打开用 w wb 方式保存的文件 读取打印出来(2*2=4次)结果都是一样的
虽然没学过C语言,但是学过一点py,类比一下,如有错误肯定大佬指正。
r是只读模式,w是覆盖写模式,b是二进制文件模式。
Reply to [pid=489304512,25332306,1]Reply[/pid] Post by [uid=60108905]想吃泡馍的肥宅鱼[/uid] (2021-01-30 01:53)再看一下我的主题,我编辑过了
r 只是 读取。 所以你问保存问题 只和你w wb 有关 。你要是只是简单的英文字符串 w和 wb 没区别。
Reply to [pid=489305478,25332306,1]Reply[/pid] Post by [uid=35004501]改不了名[/uid] (2021-01-30 02:04)在什么情况下 w 和wb有区别,r和rb有区别?
[quote][pid=489305640,25332306,1]Reply[/pid] Post by [uid=62139656]我问你就答-AC娘[/uid] (2021-01-30 02:06):
在什么情况下 w 和wb有区别,r和rb有区别?[/quote]你对一个视频文件也就是二进制文件试试就知道了。你之前操作的都是文本文件
刚在csdn搜了一圈感觉都说的挺详细的了,两种处理方式,都可以。打开个txt测试,没意义。打开个非文本文件测试才有意义。
毕竟文本文件也是二进制文件,但是不一定所有二进制文件都是文本。
编码问题而已
对于0x0a,windows会转写成0x0d 0x0a,也就是一个换行符在windows下表现为一个回车和一个换行
对于同一系统下纯文本文件处理,以上所有方式都没有区别
对于非文本文件,windows在r和w的时候会相应地将0x0d 0x0a转写成0x0a或者0x0a转写成0x0d 0x0a,这将可能带来一些意料之外的错误。这种时候推荐也应该使用rb和wb
在跨系统使用时,rb和wb能确保结果正确。而r和w因为上述问题,可能会出现读取的字节数量不一致
简单来说,同一系统下严格使用rb和wb配对,或r和w配对能够确保任何时候都不会出错,交叉使用可能会带来错误
任何时候严格使用rb和wb确保不出错
w=write 只写
r=read只读
b=binary二进制格式
w和wb在linux没区别。
但是在win上面有区别,
w模式在win会把\n替换为\r\n存到硬盘中
计算机里面所有东西都是二进制,区别只是你怎么去解释它。
同一堆二进制数据,你觉得它是图片,用图片的方式去理解它的内容,那你拿到的就是张图片。
你觉得它是文字,试图把内容以特定编码转换成文字,那它就是文字。
只是用图片的方法去解释数据需要额外的库支持,需要你让编程语言把原始数据读出来塞给库来完成解读,而以文字方式解释的功能是编程语言内置的。
所以编程语言提供了两套逻辑,一个是直接读写原始二进制内容,另一个是自动给你做文本转译。
你觉得用wb写出来的东西,记事本什么的编辑器打开也是一样的,是因为编程语言里面这个文本对应的二进制内容刚好可以被编辑器按照文本识别出来。
你写个中文试试。