一.文件处理流程  

1 f= open('test', encoding='utf-8')#1.文件不指定处理模式,默认只读2.注意指定文件编码格式,不指定默认系统编码
2 data=f.read()
3 print(data)
4 f.close()              #打开文件一定要记得关闭
5 **注意以上两点

因为文件打开时,容易忘记关闭。有种不用自己写关闭的方法,可以自己关闭文件:

1 with open('test','r',encoding='utf-8') as f:
2     print(f.read())

 

二.文件处理模式

1.读操作

文件格式:

 

1 aaaa
2 bbbb
3 cccc

 

常用方法1:

 

1 f= open('test','r', encoding='utf-8')
2 print(f.readable())    #判断是否可读
3 print(f.readline())    #有一次读取一行
4 print(f.readline(),end='')  #取消换行
5 print(f.readline())

打印结果:

1 True
2 aaaa
3 
4 bbbb
5 cccc
6

常用方法2:

 readlines()方法,读取文件存放到列表里f= open('test','r', encoding='utf-8')

data=f.readlines()
print(data)

打印结果:
['aaaa\n', 'bbbb\n', 'cccc']


2.w写操作
文件存在,会清空文件
文件不存在,会新建文件
1 f= open('test','w', encoding='utf-8')
2 print(f.writable())              #判断是否可写
3 f.write('11111111\n')
4 f.write('333\n4444\n555\n')
5 f.writelines(['555\n','6666\n']) # 文件内容只能是字符串,只能写字符串
6 f.close()
文件效果:
1 11111111
2 333
3 4444
4 555
5 555
6 6666
7  

3.a 追加操作

 

f= open('test','a', encoding='utf-8')
f.write('这是最后一行')

 

4.其他文件处理操作

r+  可读可写

w+ 可写可读  #会清空文件

a+ 读和追加

文件在硬盘上储存,本质上没有修改,只有覆盖,修改是在内存中进行。

模拟修改文件的过程:

先取到内存里,在进行修改,最后覆盖到硬盘上。

 

 1 q_f=open('test','r',encoding='utf-8')   #取文件
 2 data=q_f.readlines()
 3 q_f.close()
 4 
 5 for i in data:                         #读取修改文件
 6     print(i)
 7 print(data)
 8 d_f=open('test','w',encoding='gbk')    #存文件
 9 d_f.write(data[0])
10 d_f.close()

 

 

 

三.文件处理b模式

1.rb读取,在进行解码

1 f=open('test','rb') #b的方式不能指定编码,b模式指定二进制字节
2 data=f.read()
3 print(data)
4 print(data.decode('utf-8'))
5 f.close()

打印结果:

b'ddddd\r\n'
ddddd

2.wb以及ab写入,通过指定编码方式写入字节对象


1 f=open('test2.py','wb')
2 f.write(bytes('1111\n',encoding='utf-8'))  #写入方式一
3 f.write('技艺'.encode('utf-8'))            #写入方式二
4 
5 f=open('test2.py','ab')
6 f.write('坏蛋'.encode('utf-8'))

四。其它操作方法

 1 f=open('test2.py','r+',encoding='utf-8',newline='') #默认把\r\n读取成\n.读取文件中真正的换行符号
 2 f.closed   #判断是否关闭
 3 f.encoding #文件打开的解码方式
 4 f.flush()  #保存(刷新)
 5 f.tell()   #按照字节判断光标移动位置
 6 f.read(3)  #按照字符读取
 7 f.truncate(4) #按照字节截取文件,如果字节数不恰好是断点处,文件会显示乱码
 8 f.seek()  #设置光标位置,从零开始
 9 f.seek(10,1)#1为正向读取,接着当前位置向下
10 f.seek(-10,2)  #2为倒着读,而且只能在rb模式下进行

五。读取最后一行日志方法

 1 f=open('日志文件','rb')
 2 for i in f:
 3     offs=-10
 4     while True:
 5         f.seek(offs,2)
 6         data=f.readlines()
 7         if len(data) > 1:
 8             print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
 9             break
10         offs*=2

 

 

 
posted on 2019-11-04 22:52  白雪零封  阅读(172)  评论(0编辑  收藏  举报