文件操作
-
找回文件的位置
-
进行一些操作
r------ read
w------write
a-------追加
rb----读字节
wb ab r+ w+ a+
-
关闭文件
open() 打开 open通过Python控制操作系统进行打开文件
file 文件的位置
mode 默认不写就是r
encoding 文件的编码
文件只能读取一次
读操作
打开一个文件的(存储地址)
f = open("D:Python_s25day08小姐姐电话号",mode="r",encoding="utf-8")
print (f.read()) 全部读取
print(f.read(3)) 按照字节读取
print(freadline()) 默认尾部有一个
print(f.readline().strip()) 读取一行 将 去除
print(f.readlines()) 一行一行的读 全部存储在列表中
绝对路径
open (r"r"D:Python_s25day08 1",mode="r",encoding="utf-8"))
print(f.read())
相对路经
f = open ("t1",mode = "r",encoding = "utf-8")
print (f.read())
路经转义:.
1."D:Python_s25day08 1"
2.r"D:Python_s25day08 1" -- 推荐使用
路经:
1.绝对路径:从磁盘开始查找
2.相对路径:相对某个文件进行查找
字节操作不能指定 encoding编码
f = open("timg.jpg",mode="rb")
r 和 rb 的区别:
1.r需要指定encoding,rb不需要
2.r模式中的read(3)) 按照字节读取,rb 模式中的read(3)) 按照字节读取
read 和readlines如果文件较大时,会出现内存外溢
解决方案: 用for循环
当文件较大时,使用for循环进行读取
f = open ('t1',mode = 'r',encoding= "utf-8")
For i in f :
print(i.strip())
写操作
w 操作: ========清空写(写的是文本))
- 先清空文件
- 写入内容
当模式为w和a时,有文件就用当前文件,没有文件就创建一个文件
ff = open("a",mode = "w", encoding="utf-8")
ff.write("123") 写的内容必须是字符串
ff = open("a1",mode="w",encoding="utf-8")
ff = open("a1",mode="w",encoding="utf-8")
ff.write("[1,2,3,4] ") # 写的内容必须是字符串
ff.write('1111 ') # 写的内容必须是字符串
ff.write('2222 ') # 写的内容必须是字符串
wb -- 清空写(写字节)
f = open('timg.jpg',mode="rb")
f1 = open("g1.jpg",mode="wb")
content = f.read()
f1.write(content)
a -- 追加写(文本)
f = open("b1",mode="a",encoding="utf-8")
f.write("你好啊 ")
f.write("我好啊 ")
f.write("他好啊 ")
f.write("大家好啊 ")
ab -- 追加写(字节)
读写 (有点用)
使用方式是错误的
f = open("b1",mode="r+",encoding="utf-8")
f.write("今天是周一")
print(f.read())
正确的操作:
f = open("b1",mode="r+",encoding="utf-8")
print(f.read())
f.write("今天是周一")
w+ 写读
f = open("b1",mode="w+",encoding="utf-8")
f.write("今天是周一")
f.seek(0) # 移动光标
print(f.read())
f = open("b1",mode="w+",encoding="utf-8")
f.write("今天是周一")
f.seek(0) # 移动光标
f.write("啊啊啊啊啊啊")
f.seek(0)
print(f.read())
a+ 追加读 # 坑
f = open("b1",mode="a+",encoding="utf-8")
f.write("今天是周一")
f.seek(0) # 移动光标
f.write("啊啊啊啊")
print(f.read())
其他操作:
seek() 移动光标
f.seek(0,0) # 移动光标到文件的头部
f.seek(0,1) # 移动光标到当前位置
f.seek(0,2) # 移动光标到文件末尾
.seek(6) # 光标是按照字节移动
f = open("a1","r",encoding="utf-8")
print(f.read(5))
f.seek(0,0) # 移动光标到文件的头部
f.seek(0,1) # 移动光标到当前位置
f.seek(0,2) # 移动光标到文件末尾
print(f.read())
f = open("c1","r",encoding="gbk")
f.seek(6) # 光标是按照字节移动
print(f.read(3))
查看光标:
tell 查光标
f = open("c1","r",encoding="gbk")
print(f.read(3))
print(f.tell()) # 按照字节进行计算
刷新: 自己感兴趣自己去了解一下
截取: 自己感兴趣自己去了解一下
修改文件:
import os # 操作系统交互的接口
f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
for i in f:
i = i.replace("日","天")
f1.write(i)
f.close()
f1.close()
os.remove("a2") # 删除不能找回
os.rename("a1","a2")
import os # 操作系统交互的接口
f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
for i in f:
i = i.replace("天","日")
f1.write(i)
f.close()
f1.close()
os.rename("a2","a3")
os.rename("a1","a2")
考点:
import os # 操作系统交互的接口
f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
i = f1.read().replace("天","日") # 将文件中部内容读取 容易导致内存溢出
f1.write(i)
f.close()
f1.close()
os.rename("a2","a3")
os.rename("a1","a2")
with open("a3","r",encoding="utf-8")as f,
open('a2',"r",encoding="utf-8")as f1:
print(f.read())
print(f1.read())
1.自动关闭文件
2.同一时间操作多个文件
文件操作的目的:
1.持久化: 永久存储