python里面文件w和wb区别_python打开文件时'w'与'wb'的区别,'r'与'rb'的区别

在windows中的换行符是\r\n

在python代码中, 如果以

如果以w方式写入:

f = open('./abcd', "w")

f.write('abc\nabcd')

f.close()

文本w方式写入时, 遇到\n自动替换成\r\n,

以二进制文本读:

>> > f = open('./abcd', 'rb')

>> > print(f.read())

结果:

b'abc\r\nabcd'

以文本读:

>> > f = open('./abcd', 'r')

>> > print(f.read())

结果:

abc

abcd

综上可知, 只文本w方式写入时, 遇到\n自动替换成\r\n,

所以用二进制读取时, 显示\r\n的格式, 自然以文本读时, 会自动换行

如果以wb方式写入:

f = open('./abcd', "wb")

f.write('abc\nabcd'.encode("utf-8"))

f.close()

以二进制文本读:

f = open('./abcd', "rb")

print(f.read())

结果: 'abc\nabcd'

以文本读:

f = open('./abcd', "r")

print(f.read())

结果(换行): abc

abcd

因为这种情况是二进制方式写入的, 所以只写入了一个\n, 而只有一个\n在windows中

并不会被识别为换行符,

所以当以rb的方式读取时, 结果是

'abc\nabcd'

当以r的方式读取时, 又自动将\n识别成换行符, 所以结果时

对于Python3环境:

r:Python

将会按照编码格式进行解析,read()

操作返回的是str

rb:也即

binary

mode,read()

操作返回的是bytes

也就是说, 如果以文本方式写入的文件, 无需制定编码.

而以二进制文本写入时, 由于写入的内容要求为bytes,所以通过str.encode('charset')来返回bytes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值