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 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\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         break
11     offs *= 2
12 
13 f.close()