IO文件操作-b模式详解及案例
t模式与b模式都是控制文件读写内容的模式
一、t模式与b模式对比
t(默认的):文本文件模式
1.读写都是以字符串(unicode)为单位
2.只针对类型为文本文件格式
3.必须指定encoding = ‘utf-8’
b:二进制模式
1.读写文件都是以bytes/二进制为单位
2.可以针对任何文件类型
3.一定不能指定encoding参数
总结:1.在操作文本文件方面,用t模式更方便,省去了编码和解码的环节,b模式则需要手动的去编码和解码
2.针对非文本文件时,只能用b模式,如:图片、视频、音频等,所有的文件类型都可以用b模式
二、b模式的使用
案例一:读写都是以二进制为单位(bytes)
with open(r'E:\py\文件IO操作-b模式\企业微信截图_20201209110959.png',mode='rb') as f:
res = f.read()
print(type(res)) # 输出结果为<class 'bytes'>
案例二:写入内容到文本文件中,需要手动编码与解码
with open(r'bytes.txt',mode='wb') as f:
# 写入文件的内容为str类型,但是b模式为二进制模式,这时需要手动的去指定写入的编码格式
# 这里指定为什么编码格式在打开文件时就要以什么编码格式打开,否则会出现乱码,通常编码格式指定为utf-8
f.write('写入文件的内容'.encode='utf-8')
案例三:拷贝文件
input1 = input("输入源文件路径:").strip() # 输入源文件路径,去掉前后空格
input2 = input("输入目标文件路径:").strip()
with open(r'%s' %input1,mode='rb') as f,\ # 读源文件内容
open(r'%s' %input2,mode='wb') as f1: # 写文件
for i in f: # 循环读取源文件内容
f1.write(i) # 把读取的源文件内容写入目标文件地址