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\n")6 f.write("2222222222222222\n")7 f.writelines(["1","2","3","\n"])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\n")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 3tesla 100000 1mac 3000 2lenovo 30000 3chicken 10 3
1 f = open("a.txt", "w") 2 f.write("apple 10 3\ntesla 100000 1\nmac 3000 2\nlenovo 30000 3\nchicken 10 3\n") 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("\n")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中国\n".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 break11 offs *= 212 13 f.close()