python之路文件操作(open)
Posted 树之下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之路文件操作(open)相关的知识,希望对你有一定的参考价值。
目录
- 前言
- 文件的打开模式
- 文件句柄的方法
- seek()方法介绍
前言
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
f = open(‘demo.txt‘,‘r‘,encoding=‘utf-8‘)#获得文件句柄,指定编码格式,以可读的形式打开 data = f.read() print(data) f.close()#关闭文件
注:open()默认根据系统编码,默认以‘可读’(r)的形式打开文件
文件的打开模式
- 文件模式
- r,只读模式(文件必须存在,不然报错)
- w,只写模式(以这种模式打开,会清空文件的内容,文件不存在,则创建文件)
- x,只读模式(不存在创建,存在报错)
- a,追加模式
- “+”表示同时读写操作
- r+,读写
- w+,写读
- x+,写读
- a+,写读
- “b”表示以字节的方式操作(不能指定编码格式)
- rb
- wb
- xb
- ab
文件句柄的方法
readable():判断文件是否可读
writeable():判断文件是否可写
close():关闭文件句柄
tell():返回光标位置
flush():将内容存到硬盘中
read()
data = f.read()#返回得到文件内容
readline()
data = f.readline()#返回文件的一行内容
readlines()
data = f.readlines()#返回一个列表,每个元素为文件的每一行
write()
f.write(‘hello‘)#写入内容
writelines()
f.writelines([‘chen ‘,‘hua ‘,‘li ‘])#写入一列内容
truncate()
注:文件必须要有写的操作
f.truncate(10)#截取文件前10个字节
"b"模式下的写操作
f = open(‘demo.txt‘,‘wb‘)
#必须将将内容转换成二进制的形式存入文件中 f.write(bytes(‘chen‘,encoding=‘utf-8‘)) f.write(‘chen‘.encode(‘utf-8‘))
seek()方法介绍
注:只有read()的光标是以字符为单位,其他seek,tell,truncate都是以字节为单位移动;window下的换行符是( )
seek的三种模式(除了默认模式,文件要以‘b’的模式打开)
- 0,以文件开头作为起始位置(默认模式)
- 1,以上一次光标停留的位置作为起始位置
- 2,以结尾作为起始位置(位置参数要以负数的形式)
使用seek()方法读取日志文件最近一天的内容
2016/2/3 xxx做了什么事 2016/2/4 xxx做了什么事 2016/2/5 xxx做了什么事 2016/2/6 xxx做了什么事 2016/2/7 xxx做了什么事 2016/2/8 xxx做了什么事 2016/2/9 xxx做了什么事 2016/2/10 xxx做了什么事 2016/2/11 xxx做了什么事 2016/2/12 xxx做了什么事 2016/2/13 xxx做了什么事 2016/2/14 xxx做了什么事 2016/2/15 chen做了厉害的事
方案一
f = open(‘日志文件‘,‘rb‘) data = f.readlines() print(data[-1].decode(‘utf-8‘))
f.close()
缺点:readlines()会将文件组成一个大列表,占用大量内存
方案二
f = open(‘日志文件‘,‘rb‘) offs = -5 while True: f.seek(offs, 2) data = f.readlines() if len(data) > 1: print(‘文件的最后一行是%s‘ % (data[-1].decode(‘utf-8‘))) break offs *=2
f.close()
以上是关于python之路文件操作(open)的主要内容,如果未能解决你的问题,请参考以下文章