Python基础(文件操作)

文件读取:

 1 #文件读取方式一
 2 f=open("a.txt","r+",encoding="utf8")
 3 data=f.read()
 4 print(data)
 5 f.close()
 6 
 7 #文件读取方式二
 8 with open("a.txt","r+",encoding="utf8") as f:
 9     data=f.read()
10     print(data)

 

文件写入:

1 #文件写入方式一
2 f=open("b.txt","w",encoding="utf8")
3 f.write("今天天气很好!")
4 f.close()
5 
6 #文件写入方式二
7 with open("a.txt","r+",encoding="utf8") as f:
8     data=f.write()
9     print(data)

标注**:使用with open() as f 方式读数据时简化了f.close()的步骤

文件刷新(flush):

1 with open("c.txt","r+",encoding="utf8") as f:
2     f.write("今夜难以入睡!")
3     f.flush()#将写在内存中的内容刷新到硬盘中

文件tell方法:

  描述:此方法返回该文件中读出的文件/写指针的当前位置。

1 with open("d.txt","r+",encoding="utf8") as f:
2     data=f.readline()
3     print(data)
4     print(f.tell()) #显示当前光标所在的位置
扫描二维码关注公众号,回复: 4774819 查看本文章

文件seek方法:

  描述:seek()用于移动文件读取指针到指定位置。

  格式:file.seek(offset,whence)

    offset:开始的偏移量,也就是代表需要移动偏移的字节数

    whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。whence值为空没设置时会默        认为0。

 1 >>> f=open("aaa.txt","w")     #以只写的形式打开一个叫做aaa.txt的文件
 2 >>> f.write("my name is liuxiang,i am come frome china")   #写入内容
 3 >>> f.close()     #关闭文件
 4 >>> f=open("aaa.txt","r")     #以只读打开文件
 5 >>> f.read()   #读取内容
 6 'my name is liuxiang,i am come frome china'      
 7 >>> f.seek(3,0)      #“0”代表从文件开头开始偏移,偏移3个单位
 8 >>> f.read(5)     #从偏移之后的指针所指的位置(即“n”)开始读取5个字符
 9 'name '
10 >>> f.tell()     #显示现在指针指在哪个位置(即“i”的位置)
11 >>> f.readline()       #读取这一行剩下的内容
12 'is liuxiang,i am come frome china'     
13 
14 
15 
16 >>> f.seek(0,2)      #“2”代表从末尾算起,“0”代表偏移0个单位
17 >>> f.read()
18 ''         #因为是从末尾算起,内容已结束。所以读取内容为空

 

**seek方法读取日志文件最后一行:

1 #日志文件
2 2018/12/23   kelvin   login   登录淘宝
3 2018/12/25   Alex   buy   购买商品
4 2018/12/28   kelvin   buy   购买商品
5 2018/12/29   elvin   login   登录网站
6 2018/12/29   kelvin   nologin   退出登录
7 2018/12/31   bob   foot   逛商城
8 2019/01/01   kelvin   order   下单
1 with open("日志文件","rb") as f:
2     offset=-20    #定义一个偏移量用于在第一次倒序移动光标长度
3     while True:
4         f.seek(offset,2)   #第一次倒序移动光标,移动长度为20个字节
5         data=f.readlines()  #读取从移动后的光标到日志结尾的每一行组成一个列表
6         if len(data)>1:    #如果取出的文件列表行数大于1,则说明肯定取到了最后一行
7             print(data[-1].decode("utf8"))   #取出列表中的最后一行,即为日志的最后一行
8             break
9         offset*=2     #如果取出的文件列表小于等于1,则说明取出的最后一行日志可能不完整,说明偏移量太小,因此扩大偏移量

遍历文件:

 1 #Author : Kelvin
 2 #Date : 2019/1/4 12:59
 3 
 4 #第一种(不推荐使用,因为会将文件所有内容加载到内存)
 5 f=open("日志文件","r+",encoding="utf8")
 6 for i in f.readlines():
 7     print(i)
 8 
 9 #第二种(推荐使用,只会一行一行读取,不会首先将所有文件内容加载到内存中)
10 f=open("日志文件","r+",encoding="utf8")
11 for i in f:
12     print(i)

 

猜你喜欢

转载自www.cnblogs.com/sun-10387834/p/10219260.html
今日推荐