一:python文件处理的基本流程
1.首先打开文件,得到一个文件句柄并将其赋给一个变量
2.通过句柄对文件进行操作
3.关闭文件
f=open('文件名/或绝对路径加文件名',encoding='utf-8')#获得句柄并赋值给一个变量,且编码方式会自动使用当前系统的编码方式,因此需要指定所需的编码方式data=f.read()#通过句柄进行操作print(data)f.close()#回收句柄
二:python文件读写的模式
f=open('文件名/或绝对路径加文件名','r')#指定文件以只读模式操作(默认模式)print(f.readable())#打印是否可读print(f.readline())#一次读一行,且有回车空行,加end=''参数即可取消回车空行print(f.readlines())#把所有行内容读取并放在一个列表里,例如['a\n','b\n']#如果先read,则readline无法再读出任何内容,因为read()后光标停在了最后一行后面f=open('文件名/或绝对路径加文件名','w')#指定文件以只写模式操作,如果文件存在,会把文件内容直接清空,如果不存在,会先新建一个文件#写入的内容必须全是字符串f.write('dsaddsa\n')#写入一行f.write('fasfa\n')f.writelines(['1234\n','rewr\n'])#写一个列表行f=open('文件名/或绝对路径加文件名','a')#以追加模式打开f.write()#写到文件的最后f=open('文件名/或绝对路径加文件名','x')#只写模式,但若文件存在则报错#用with关键字可不用close()with open("a","r") as f,\ open("dsa",'w') as f1: f.read()
# r+,w+,a+,x+可读可写
三:python文件处理b模式
用二进制的方式处理文件的好处:文件类型不同,用b模式都可以操作
f=open('文件名','rb')#以二进制方式处理文件不可以再指定编码方式data=f.read()#字符串---encode--》bytes#bytes---decode--'字符串'print(data.decode('utf-8'))#指定解码方式f.close()f=open('文件名','wb')f.write(bytes('dsf\n',encoding='utf-8'))f.write('fsd'.encode('utf-8'))#同上
四:python文件其他操作方法
f=open('文件名','r')#如果不知道源文件的编码方式,可以尝试使用latin-1编码print(f.closed)#判断文件是否关闭print(f.encoding)#读取文件时指定的编码f.flush()#把内容刷新到文件中f.seek(10)#指定光标开始的字节位置,默认从文件开头开始算,read方法是按照字符读取,seek等方法是按字节移动f.seek(10,1)#第二个参数为1时,指的是以相对位置移动,以光标所在当前位置为主,此时要求文件要以b模式读取f.seek(-10,2)#第二个参数为1时,以倒序的方式,以相对位置移动,此时要求文件要以b模式读取f.tell()#返回光标当前位置f.truncate(10)#从开始位置截取10个字节的内容保留,其余删除#案例:读取日志的最后一行#方式1:f.open('文件名','rb')data=f.readlines()print(data[-1].decode('utf-8'))#方式2:f.open('文件名','rb')for i in f: abc=-10 while True: f.seek(abc,2) data=f.readlines() if len(data)>1: print(data[-1].decode('utf-8')) break else: abc*=2