文件读写中后面的参数: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 系统而言,含有 b
(rb
、wb
、r+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+为追加读写两种操作
以上三种操作方式均不可同时进行读写操作
---------------------