文件操作
open() # 打开
file # 文件的位置(路径)
mode # 操作文件的模式
encoding() # 文件编码方式
f # 文件句柄
# 操作文件:
# 1.打开文件
# 2.操作文件
# 3.关闭文件
# 文件操作的方式
# r,w,a(重要)
# rb,wb,rb(次要)
# r+,w+,a+(不怎么重要)
f = open("文件的路径(文件放的位置)",mode="操作文件的模式",encoding="文件的编码")
f(文件句柄)
r w a 重要
f = open("log",mode="r",encoding="utf-8")
print(f.read())
# f.readline() 读取一行
# f.readlines() 一行一行读取存放在列表
f.close() # 关闭文件
f = open("log",mode="w",encoding="utf-8")
f.write("test") # 覆盖写,如果没有文件会新创建一个文件,只能写字符串
f.close()
f = open("log",mode="a",encoding="utf-8")
f.read() # 追加写,在文本的末尾写入
f.close()
rb wb ab 次要
# rb 读字节
f1 = open("1.png","rb") # 不能使用encoding
print(f1.read()) # 全部读取
print(f1.read(3)) # 按照字节读取
f1.close()
# wb
f = open("3.jpg","wb")
f.write(f1.read()) # 覆盖写
f.close()
# ab
f = open("2.jpg","ab")
f.write("你好啊".encode("utf-8"))
f1 = open("2.jpg","rb")
print(f1.read().decode("utf-8"))
f.close()
f1.close()
r+ w+ a+ 一般
# r+ 读写 先读后写
# 错误的操作(坑)
f = open("log","r+",encoding="utf-8")
f.write("test") # 先写后读会写到文件最前面,必须先读后写
print(f.read())
f.close()
# 正确的操作:
f = open("log","r+",encoding="utf-8")
print(f.read())
f.write("test12345")
f.close()
# w+ 清空写 读
f = open("log","w+",encoding="utf-8")
f.write("test")
print(f.tell())
f.seek(15)
print(f.tell())
print(f.read())
f.close()
# a+ 追加写,读
f = open("log","a+",encoding="utf-8")
f.write("test23")
print(f.tell()) # 字节数
print(f.seek(0,0)) # 0将光标移动到文件头部
print(f.read())
f.close()
其它操作
# tell 查看光标 -- 返回的是字节数
# seek 移动光标
# 1.seek(0,0) -- 移动到文件的头部
# 2.seek(0,1) -- 当前位置
# 3.seek(0,2) -- 移动到文件的末尾
# 4.seek(3) -- 按照字节进行移动(按照编码集,自己进行计算)
f = open("log","r",encoding="gbk")
print(f.read(3)) # 字符
f = open("log","rb")
print(f.read(3)) # 字节
# 错误操作
f = open("log","r",encoding="gbk")
f.seek(-1)
print(f.read())
# 文件修改
f = open("log","r",encoding="gbk")
s = f.read()
s1 = s.replace("test","txt")
f1 = open("log","w",encoding="gbk")
f1.write(s1)
f.close()
f1.close()
with 关键字 open("log","r",encoding="gbk") as f:
文件操作的具体内容
with open('log','r',encoding='gbk') as f,
open('log.txt','w',encoding="gbk") as f1:
for i in f:
s1 = i.replace("test",'txt')
f1.write(s1)
import os
os.rename('log','log.bak')
os.rename('log.txt','log')
with open("log",'r',encoding="gbk") as f: # 自动关闭 f.close()
pass # 缩进里操作文件
print(f.read()) # 文件已经关闭
with open 的好处
1.可以同时打开多个文件
2.能够自动关闭文件