# "通讯录"# open() # 打开# file # 文件的位置(路径)# mode # 操作文件的模式# encoding # 文件编码方式# f # 文件句柄#f = open("通讯录",mode="r",encoding="utf-8")print(f.read())f.close()## 操作文件:# 1. 打开文件# 2. 操作文件# 3. 关闭文件## 文件操作的模式:# r,w,a (重要)# rb,wb,ab (次要)# r+,w+,a+ (没啥用)## f = open("文件的路径(文件放的位置)",mode="操作文件的模式",encoding="文件的编码") # 内置函数# f(文件句柄)
rb,wb,ab
# rb# rb 读出来的数据是bytes类型,在rb模式下,不能encoding字符集f1 = open("1.jpeg","rb") # 打开图片print(f1.read()) # 全部读取print(f1.read(3)) # 按照字节读取# 输出字节# b''## wb 没有文件创建一个文件# wb模式下,不可以指定打开文件的编辑,但是写文件的时候必须将字符串转换成utf-8的bytes数据f = open("3.jpg","wb") # 没有文件创建一个文件f.write(f1.read())# ab 没有文件创建一个文件f = open("2.jpg","ab")f.write("你好啊".encode("utf-8"))f = open("2.jpg","rb")print(f.read())# +操作# r+: 读写 - 先读后写## 错误的操作 (坑,不能先写后读)f = open("萝莉小姐姐电话号","r+",encoding="utf-8")f.write("常鑫你太美")print(f.read())# 正确的操作:# 打开一个文件,写入"常鑫你太美"f = open("萝莉小姐姐电话号","r+",encoding="utf-8")print(f.read())f.write("常鑫你太美")# w+ 清空写,读f = open("萝莉小姐姐电话号","w+",encoding="utf-8")f.write("常鑫你太美")print(f.tell())# 使用utf-8 ,一共占用了15个字节f.seek(15) #print(f.tell())print(f.read())# a+ 追加写,读f = open("萝莉小姐姐电话号","a+",encoding="utf-8")f.write("常鑫你太美")print(f.tell()) # 字节数print(f.seek(0,0)) # 0将光标移动到文件的头部print(f.read()) # 常鑫你太美常鑫你太美# 输出# 30# 0# 常鑫你太美常鑫你太美# 其他操作:# tell 查看光标 --- 返回的是字节数# seek 移动光标# 1.seek(0,0) -- 移动到文件的头部# 2.seek(0,1) -- 当前位置# 3.seek(0,2) -- 移动到文件的末尾# 4.seek(3) -- 按照字节进行移动(按照编码集,自己进行计算)f = open("萝莉小姐姐电话号","r",encoding="gbk")print(f.read(3)) # 字符f = open("萝莉小姐姐电话号","rb")print(f.read(3)) # 字节f = open("萝莉小姐姐电话号","r",encoding="gbk")print(f.read(3)) # 字符# 错误操作f = open("萝莉小姐姐电话号","r",encoding="gbk")f.seek(-1)print(f.read())# 文件修改f = open("萝莉小姐姐电话号","r",encoding="gbk")s = f.read()s1 = s.replace("你太美","吃煎饼")f1 = open("萝莉小姐姐电话号","w",encoding="gbk")f1.write(s1)# with 关键字 open("萝莉小姐姐电话号","r",encoding="gbk") as f:# 文件操作的具体内容# w和a 检测有文件就操作,没文件就创建with open("萝莉小姐姐电话号","r",encoding="gbk")as f,\ open("萝莉小姐姐电话号.txt","w",encoding="gbk")as f1: for i in f: s1 = i.replace("大烧饼","井盖") f1.write(s1)import osos.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")with open("萝莉小姐姐电话号","r",encoding="gbk")as f: pass # 缩进里操作文件print(f.read()) # 文件及已经关闭了
总结
"""# 1.文件操作:open -- 打开文件file -- 文件路径mode -- 操作文件的模式encoding -- 文件的编码集打开文件操作文件关闭文件# r,w,a (******) # r: 读文本 read() 全部读取 read(3) 看文件的操作方式 r/w/a 字符 readline 读取一行(自带换行符) readlines() 一行一行读取存放在列表中 # w:清空,写 open("xxx","w",encoding="utf-8") # 进行清空 write() 只能写字符串 # a:追加 在文本的末尾进行写入 write()rb,wb,ab(****) #rb:读字节 read() 全部读取 read(3) 看文件的操作方式 rb/wb/ab 字节 readline 读取一行(自带换行符) readlines() 一行一行读取存放在列表中 wb:清空,写 open("xxx","wb") # 进行清空 write() 只能写字节 ab:追加 open("xxx","ab") write() 只能写字节r+,w+,a+ (r+) r+:读写 错误的方式是写读 先读后写 w+:清空写,读 1.清空文件 2.读取内容(默认读取的是空) 3.移动光标 a+:追加写,读 1.先写后读 2.读取内容(默认读取的是空) 3.移动光标 # 注意点: (a,ab,a+)将光标移动到某个位置进行,写入的时候还是在文件的末尾其他操作: tell() 查看光标返回的是字节 seek() 移动光标 seek(0,0) 移动文件头部 seek(0,1) 当前位置 seek(0,2) 移动文件末尾 seek(3) # 按照字节进行计算 (计算方式根据编码计算) with open("文件路径","操作模式",编码")as f: 操作文件 with open的好处: 1.可以同时打开多个文件 2.能够自动关闭文件 修改文件内容: 1.创建一个新的文件 2.将文件中的内容进行替换 3.替换后的内容写入新文件中 4.改变文件名 路径: 绝对路径: 从磁盘根部进行查找 相对路径: ../返回上一级 --推荐使用 转义: 1."C:\\user\\ner" 2. r"C:\user\ner" -- 推荐使用 """