控制文本读写内容的模式

发布时间 2023-12-05 19:41:31作者: 苏苏!!

控制文本读写格式

  • t(默认的):文本模式
    • 读写都是以字符串的为单位的
    • 只能针对文本文件
    • 必须加入encoding参数
  • b:二进制模式
    • 读写文件都是以bytes/二进制为单位
    • 可以针对所有的文件
    • 不可以加入encoding参数
  • 前提:
    • b / t模式都不能单独使用,必须与r / w / a之一结合使用。

(1)t模式

  • t 模式:默认方式,我们指定的文件的打开模式就是r / w / a,默认的就是rt / wt / at。
# t模式
#  r    w   a 默认的就是rt   wt  at
# with open('01.txt','rt',encoding='utf-8') as  f:
#     res=f.read()
#     print(res)#syh
#     print(type(res))#<class 'str'>

# with open('01.txt','wt',encoding='utf-8') as  f:
#     res='hello world'
#     f.write(res)#写入的也必须为字符串类型
  • 强调:t 模式只能用于操作文本文件,无论读写,都应该以字符串为单位,而存取硬盘本质都是二进制的形式,当指定 t 模式时,内部帮我们做了编码与解码。

(2)b模式

  • b 模式读写都是二进制单位。
# b模式
#
# with open('01.txt','rb') as  f:
#     res=f.read()
#     print(res)#b'hello world'
#     print(type(res))#读出时为bytes类型

# with open('01.txt','wb') as  f:
#     res='苏毅航'
#     res1=res.encode('utf-8')#将字符串转为bytes数据类型
#     f.write(res1)#在b 模式下写入文件时,必须是bytes类型
  • 强调:b模式对比t模式
    • 在操作纯文本文件方面t模式帮我们省去了编码与解码的环节,b模式则需要手动编码与解码,所以此时t模式更为方便。
    • 针对非文本文件(如图片、视频、音频等)只能使用b模式。

(3)练习

编写拷贝工具

#源文件路径为:D:\old boy\python\python28基础\day10\girl.jpg
#新文件路径为:D:\old boy\python\python28基础\day10\img\girl.jpg


#编写拷贝工具
#1.先写入源文件路径
old=input("源文件路径为:")
#2.再写入拷贝的新文件路径
new=input('新文件路径为:')
#3.先读取源文件的内容,再将源文件的内容写入新的文件中
with open(old,'rb')as read_f,open(new,'wb') as write_f:
    write_f.write(read_f.read())