1、文件的操作
1 # -*- coding:utf-8 -*- 2 3 f=open("简历.txt") 4 5 date=f.read() 6 7 print(date) 8 9 f.close()
文件打开模式:读-r 写-w a--追加内容
⭐读一行,光标移动一行 readline() 读出来的内容是字符串
⭐write()
1 # -*- coding:utf-8 -*- 2 3 f = open("简历.txt", "w") 4 5 #f.write() 6 7 f.close()
若文件不存在,会创建一个文件,若文件存在,会清空文件内容,写的参数必须是字符串,
⭐追加操作-a
1 # -*- coding:utf-8 -*- 2 3 f = open("简历.txt", "a") 4 5 f.write("111111111111111 ") 6 f.write("2222222222222222 ") 7 f.writelines(["1","2","3"," "]) 8 f.close()
把需要写的内容追加的文件最后
文件r+模式,能读,能写
1 # -*- coding:utf-8 -*- 2 3 f = open("简历.txt", "r+") 4 data=f.read() 5 print(data) 6 f.write("qqqq ") 7 8 f.close()
文件写的位置从文件光标处开始写,读的时候从光标处开始读
文件的修改:
1 src_f = open("简历.txt", "r") 2 data=src_f.readlines() 3 src_f.close() 4 des_f=open("简历.txt","w",encoding="utf-8") 5 des_f.writelines(data[0:10]) 6 des_f.close()
with open( “简历”,“r”) as f
文件不用手动关闭,系统自动关闭
文件操作练习题目:
1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数 apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3
1 f = open("a.txt", "w") 2 f.write("apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 ") 3 f.close() 4 f=open("a.txt","r") 5 data=f.readlines() 6 f.close() 7 price=0 8 for i in data: 9 i=i.strip(" ") 10 i=i.split(" ") 11 price+=int(i[1])*int(i[2]) 12 print(price)
文件处理,以rb的模式处理
1 # -*- coding:utf-8 -*- 2 3 f=open("a.txt","rb") 4 5 data=f.read() 6 7 f.close() 8 9 print(data) 10 print(data.decode("utf-8"))
文件处理,以wb的模式处理
1 f=open("b.txt","wb") 2 f.write(bytes("111111111223中国 ".encode("utf-8"))) 3 f.close()
文件打开时不知道编码,可以用“latin-1”编码,不能写中文
用这种编码去打开文件,能尽可能多的保存数据
f.flush 文件的刷新,把内存的信息写到文件中去
f.tell 给出光标所在的位置 给出的位置的以字节为单位,一个中文字为3字节
f.open("a.txt","r+",encoding="UTF-8",newline=" ") newline=" "读取文件中真正的换行符。
f.seek(n,0) 从0 开始算,指定光标位置,字节的位置 f.seek(n,1),从光标前一次停留位置开始算
f.read(4) read读4个字符
f.truncate() 文件的截取,在输入模式
例子:查找日志最后一行
1 # -*- coding:utf-8 -*- 2 3 f = open("运行日志.txt", "rb") 4 offs = -10 5 while True: 6 f.seek(offs, 2) 7 date = f.readlines() 8 if len(date) > 1: 9 print(date[-1].decode("utf-8")) 10 break 11 offs *= 2 12 13 f.close()