1. open 的书写格式
open #打开
文件句柄 = open(文件名字(必须是字符串),mode(模式,操作方式),文件的编码集)
2. r模式
### r模式读内容
#f = open('t1',mode='r',encoding='utf-8') #r 只读
#f(文件句柄) = open('t1',mode='r',encoding='utf-8') #所有对文件的操作都是操作文件句柄
f = open('t1',mode='r',encoding='utf-8')
content = f.read()
print(content) #特点:一次性全部读取
content = f.read(3)
print(content) #mode = 'r',read里的内容就是表示读取的字符数量
content = f.readline()
print(content) #读取一行,但是有个
换行
content = f.readline(100)
print(content) #只读一行里的几个数字 如果超出数字就只读一行
content = f.readlines()
print(content) #读取一行 一行又一行,存放在一个列表里.
4. rb模式
#rb模式读取字节
#从磁盘开始查找的就是绝对路径
#如果直接写文件的格式叫做相对路径(qq.jpg):相对于pycharm来查找的一种路径
#推荐写法是相对路径:
f = open('t1',mode='rb')
#文件路径加入双斜杠 f = open('c:\Users\oldboy\qq.jpg',mode='rd')
f = open(r'c:Usersoldboyqq.jpg',mode='rd')
print(f.read())
5. w模式
#w模式
#覆盖写内容,在写之前先把文件清空
f = open('t1.txt',mode='w',encoding='utf-8')
f.write('你好,世界') #w模式如果文件不存在就新建一个
f.write('hello,world') #新内容覆盖以前的内容
#w只有写没有读的功能
f = open('t1.txt',mode='w',encoding='utf-8')
print(f.write('内容')) #返回写的数量
6. wb模式
#wb模式写字节
f = open('t1.txt',mode='rb')
f = open('t2.txt',mode='wb')
f1.write(f.read())
7. a模式
#a模式 追加
f = open('t1',mode='a',encoding='utf-8')
f.write('内容') #在文件最后添加内容
8. ab模式
ab
f = open("2.jpg","ab")
f.write("你好啊".encode("utf-8"))
9. 可读可写模式
#可读可写模式
r+ 读+写
w+ 写+读
a+ 追加+读
f = open('t1',mode='r+',encoding='utf-8')
print(f.read()) #读内容
f.write('内容') #写在后面
f = open('t1',mode='w+',encoding='utf-8')
f.write('内容')
f.seek(0) #移动文件光标
print(f.read())
f = open('t1',mode='a+',encoding='utf-8')
f.seek(o)
print(f.read()) #a模式默认光标在后面
f.write('内容')
#最常用的是r+
10. repr -- 显示数据的原生态
s = "[1,'2',3,4]"
print(s)
print(repr(s))
11. 解决大文件
#解决大文件:
for i in f:
print(i) # 本质就是一行一行进行读取
f = open(r'..day6 1.txt',mode='r',encoding='utf-8')
#... 返回上一级
f.write()
12. with open
#with open
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 os
os.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")
os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")
with open("萝莉小姐姐电话号","r",encoding="gbk")as f:
# pass # 缩进里操作文件
# print(f.read())
13. 总结
r : 只读,不能写
read() 读取全部 #模式是r的时候,read(3)就是读取三个字符; 模式是rb的时候,read(3)就是读取三个字节
readline() 读取一行 #返回的内容会有
readlines() 一行一行的读存放在一个列表中
w : 清空写,不能读
先清空文件的内容,再写
当文件不存在的时候会创建一个文件
a : 追加写.不能读
写的内容一直都在文件的末尾.
r+:读写
错误示范:先写后读
正确是:限度后写
w+:写读
写读的时候是读不到内容的,除非用seek(0)挪动光标
a+:追加写
追加写的时候是读不到内容的,除非用seek(0)挪动光标
rb,wb,ab(****)
rb:读字节
read() 全部读取
read(3) 看文件的操作方式 rb/wb/ab 字节
readline 读取一行(自带换行符)
readlines() 一行一行读取存放在列表中
wb:清空,写
open("xxx","wb") # 进行清空
write() 只能写字节
ab:追加
open("xxx","ab")
write() 只能写字节
其他操作:
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.改变文件名
#最常用的:r,w,a,r+,a+