python r r+;w w+;a a+;以及加不加b区别

#以下内容均在正常打开文件的情况下运行

一、列表格

模式 可做操作 若文件不存在 是否覆盖
r 只能读 报错 ---
r+ 可读可写 报错
w 只能写 创建
w+ 可读可写 创建
a 只能写 创建 否,追加
a+ 可读可写 创建 否,追加
b -----(二进制读取方式) ---------(配合读写使用) -----

  其实这里的读写很好理解,但是对于a和a+,他们是文本追加(这里要注意覆盖并不是覆盖重复内容,而是覆盖全部内容)------也就是重写文件(回档,哈哈哈)

加不加b取决于文件的文本形式

2.1写文件加读取文件

#不追加,但是每次都会覆盖之前写的(任何字段都会覆盖,) 
# with open('name.txt','w',encoding='utf8')as f:
#     f.writelines("0001"+'
'+'小明'+'
'+'1701班')

# with open('name.txt','r',encoding='utf8')as f:
#     for line in f.readlines():
#         print(line,end='')
#readlines()读取多行,就是有s和没有s的区别
# with open('demo2.txt','r',encoding='utf8')as f:
#     for line in f.readlines():
#         print(line,end='')

2.2文件的追加写入

文件读取
# with open('demo.txt','r',encoding='utf8')as f:
#     for line in f.readlines():
#         print(line,end='')


# #文件追加写入
# with open('demo.txt','a+',encoding='utf8')as f:
#     f.write('
')
#     f.write('you are a boy!')

2.3二进制的读取(简单解释一下)

读文件 进行读文件操作时,直到读到文档结束符(EOF)才算读取到文件最后,Python会认为字节x1A(26)转换成的字符为文档结束符(EOF),

      故使用'r'进行读取二进制文件时,可能会出现文档读取不全的现象。 

示例:
     二进制文件中存在如下从低位向高位排列的数据:7F 32 1A 2F 3D 2C 12 2E 76
     如果使用'r'进行读取,则读到第三个字节,即认为文件结束。
     如果使用'rb'按照二进制位进行读取的,不会将读取的字节转换成字符,从而避免了上面的错误。