Python打开文件时'w'与'wb','r'与'rb'的区别(2019年1月3日)

文件读写中后面的参数:w,r,wt,rt,wb,rb,都是python里面文件操作的模式。

1、w是写模式,r是读模式。

2、t是windows平台特有的所谓text mode(文本模式),区别在于会自动识别windows平台的换行符。类Unix平台的换行符是\n,而windows平台用的是\r\n两个ASCII字符来表示换行,python内部采用的是\n来表示换行符。rt模式下,python在读取文本时会自动把\r\n转换成\n.wt模式下,Python写文件时会用\r\n来表示换行。

3、w和wt是一们的,r和rt是一样的,t是默认参数,可以省略的,写入或读取时的模式,如rb就是以二进制形式读取。如下图:

 

 

字符串转二进制的办法

bytes(字符串,encoding='编码')

字符串.encode('编码')

主要通过这两种办法可以让字符串转为bytes类型

 

 

为什么要用二进制的读写?

因为图片视频不是字符串方式能显示的,所以只能用b的方式来.

另外二进制数据可以跨平台

 

在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识别成换行符, 所以结果时

对于
Python
3
环境:

r:Python
将会按照编码格式进行解析,read()
操作返回的是str
rb:也即
binary
mode,read()
操作返回的是bytes

也就是说, 如果以文本方式写入的文件, 无需制定编码.
而以二进制文本写入时, 由于写入的内容要求为bytes,所以通过str.encode('charset')来返回bytes
--------------------- 
作者:vitrovitro 
来源:CSDN 
原文:https://blog.csdn.net/yizhuanlu9607/article/details/78084266 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

0. EOL(End-Of-Line)

区别主要在 EOL 的处理方式不同。对于不同的操作系统而言,

  • Unix:\n
  • Mac:\r
  • Windows:\r\n

对于 Python 语言,通过如下语句进行查询:

>> import os
>> os.linesep
'\r\n

 

1. 不同的操作系统

对于 Windows 系统而言,含有 brbwbr+b) 表示以二进制形式打开文件。windows 下的 Python 对文本文件(text files)和二进制文件(binary files)的处理方式不同,

 

2. Python 2 vs Python 3

对于 Python 3 环境:

  • r:Python 将会按照编码格式进行解析,read() 操作返回的是str
  • rb:也即 binary mode,read()操作返回的是bytes

 

 

文本文件中的 回车 在不同操作系统中所用的字符表示有所不同。 

 

Windows: 
\r\n 

Linux/Unix: 
\n 

Mac OS: 
\r

 

python读写文件 open()中 r rb rt 

 

1、rt模式下,python在读取文本时会自动把\r\n转换成\n.

使用’r’一般情况下最常用的,但是在进行读取二进制文件时,可能会出现文档读取不全的现象。 

2、使用’rb’按照二进制位进行读取的,不会将读取的字节转换成字符 
二进制文件就用二进制方法读取’rb’ 

3、r为仅读取 w为仅写入 a为仅追加

r+为可读写两种操作 w+为可读写两种操作(会首先自动清空文件内容) a+为追加读写两种操作 
以上三种操作方式均不可同时进行读写操作
--------------------- 
 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值