文件处理
使用方法
格式1:
f = open("文件名", "模式", encoding="utf-8") # encoding是指定编码格式的
格式2:
with open("文件名","模式",encoding="utf-8") as f
格式1和格式2的区别是格式1需要用.close方法来关闭文件,而格式2使用完后,会自动关闭。
常用方法
f.readable():看是否有读权限。
f.read():读全部,read(数字)里面加数字表示读取的字符数
f.readline():读一行
f.readlines():每一行成为一个字符串,放到列表中。
f.write():写内容
f.writelines():将列表中内容写入。文件内容只能是字符串。
f.encoding():查看文件打开的编码,这个不能修改。
f.flush():将内容写到硬盘中。
f.tell():显示光标所在位置
f.seek():设置光标所在位置,由于seek是以字节为单位,如果设置之后在一个中文中,操作会显示错误
f.seek(3,0):0模式,表示从文件开头开始算。默认
f.seek(3,1):1模式,b模式打开,相对于 光标位置。
f.seek(-10,2):2模式,倒着取第一个参数要是负数。
f.truncate(10):从开头开始算,将文件只保留0-10个字节。
注意:
1.read(3)代表读取三个字符,其余的文件内光标移动都是以字节为单位,比如:seek,tell,read,truncate
2.在不同编码中的换行有不用的格式,window是\r\n,Linux是\n,python会自动做一个操作,就是将换行都用\n来表示。如果要原来数据中的换行符号的话,在open参数中加入,newline=""
3.读文件的时候readlines()效率不高,要先将文件内容都读出来。for遍历的时候用文件名变量,比如for i in f。这个是要一行给一行。不浪费内存空间。
4.读取文件最后一行:

for i in f: offs = -10 while True: f.seek(offs, 2) data = f.readlines() if len(data) > 1: print("文件的最后一行是%s" % (data[-1].decode("utf-8"))) break offs *= 2
模式
w:表示可写,如果文件不存在先创建文件,再写入数据,如果文件已存在,清空在写入
r:表示只读,读取数据文件必须存在,否则文件崩溃
a:表示追加数据,如果文件不存在,先创建文件,如果文件存在,在原有数据的后面追加写入数据。不支持读操作
r+:读取和写入,文件必须存在,在光标所在位置写,新加内容会覆盖原有内容。
w+:写入和读取,如果没有该文件,则创建,如果有该文件,先把原有数据清空再加入新值。可以用变量.seek(位置)将文件指针放到指定位置
a+:追加写入和读取数据,在文件内容后添加新值。
注意:指针完成写入之后,指针在末尾,再read是读不出来东西的,需要用seek将指针放到开头
wb:以字节方式写入数据,同w,
rb:以字节方式读取数据,同r
ab:以字节方式追加写入数据,同a
用b模式操作的时候需要注意,不能用encoding指定编码