1,文件:操作系统提供给用户/应用程序操作硬盘的接口
控制文件读写操作模式:t模式(txt),b模式(bytes),但是t,b模式不能单独使用,必须跟r,w,a结合使用
t模式(txt):
- 读,写都是以字符串为单位
- 文本文件
- 必须指定encoding = "编码格式"
当文件打开读完后关闭就不能再读,否则会报错
没有指定encoding操作系统默认编码:
max,Linux系统默认:utf-8
Windows系统默认:gbk
2,
r模式:只读
-
- 当文件不存在时,读取文件则报错
- 当文件存在时指针跳到开始位置
read :一次性读取所有数据(但不适合读文件大的数据)
-
with open("r.txt","r",encoding= "utf-8") as flie: res = flie.read() print(res) res1 = flie.read()#当第二次读取时是空的 print(res1) #运行结果 hhgfghfsgjf
w模式 :只写
-
- 当文件不存在时,则创建文件
- 当文件存在时,则清空文件内容,指针跳到开始位置
强调:
- 在w模式中打开文件没有关闭的情况下,连续写入新的数据总跟在原来的数据后增加
- 如果以w模式打开文件则内容会被清空
-
with open("r.txt","w",encoding= "utf-8") as flie: print(flie.write("啦啦 ")) print(flie.write("丽丽 ")) #运行结果 啦啦 丽丽
w模式 :只追加
-
- 当文件不存在时,则创建文件
- 当文件存在时,指针跳会直接调到末尾
a模式与w模式的区别:
- 相同:都可以追加内容
- 不同:
- a模式重新打开不会清空内容,指针会停在内容末尾
- w模式重新打开则会清空内容,指针会停在开始位置
文件copy
with open("r.txt","rt",encoding= "utf-8") as flie1 , open("f.txt","wt",encoding="utf-8") as flie2 : res = flie1.read() flie2.write(res)
+ : + 不能单独使用,必须结合r,w,a使用
如果源文件中有内容则会会被覆盖
with open("f.txt","rt+",encoding= "utf-8") as flie1: flie1.write("认真完成作业")#可读可写 with open("f.txt","wt+",encoding= "utf-8") as flie1: flie1.write("认真完成作业")#可读可写,重新打开则数据清空 with open("f.txt","at+",encoding="utf-8") as flie1: flie1.write("认真完成作业")#可读可写可追加,在旧数据后添加新数据