一 文件处理流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄打开文件进行操作
- 关闭文件
二 基本操作
2.1 文件操作基本流程
1 f_read = open("text",encoding='utf8') 2 data=f_read.read() 3 print(data) 4 f_read.close()
2.2 文件编码
打开文件要用它存储的编码模式打开,否则会报错或者出现乱码。
2.3 文件的打开方式
打开文件时,需要指定文件路径以及打开的方式,打开后,即可获得文件句柄,用文件句柄对文件进行操作。
1 文件句柄 = open("文件路径", "模式")
打开文件的模式:
- r:只读模式【默认模式,文件必须存在,不存在会报错】
- w:只写模式【不可读;文件不存在则创建;存在则清空neir】
- x:只写模式【不可读;文件不存在则创建;存在则报错】
- a:追加模式【可读;不存在则创建;存在则以追加内容】
”+“表示可以同时读写某个文件
- r+:读写【可读,可写】
- w+:写读【可读,可写】
- x+:写读【可读,可写】
- a+:写读【可读,可写】
”b“表示以字节的方式操作
- rb或r+b
- wb或w+b
- xb或x+b
- ab或a+b
- 以b方式打开时,读取到的内容是字节型,写入时也需要提供字节类型,不能指定编码。
- 要查看实际内容要解码,用decode()函数
- 将字符串转换成二进制用bytes()函数
- 好处:可以处理不同的文件
with方式打开文件:
1 with open("text",encoding="utf8") as f_read: 2 data=f_read.read() 3 print(data) 4 f_read.close()
- 不需要自己关闭文件,操作系统自动帮忙完成
- with还可以同时打开多个文件
1 with open("text",encoding="utf8") as srcf, 2 open("text_new","w",encoding="utf8") as dst_f: 3 data=srcf.read() 4 dst_f.write(data)
2.4文件内置函数flush
- 文件操作通过软件将文件从硬盘读到内存
- 写文件的操作也都是存入内存缓冲区buffer
- flush,强制将写入的数据刷到硬盘
2.5 文件的其他函数
1 f = open("text","r+",encoding="utf8") 2 3 f.readline() # 读取一行 4 5 f.readlines() # 读取所有的内容放在列表中 6 7 f.seek()#控制光标的移动 8 9 f.tell()#光标当前所在位置 10 11 f.truncate()#文件截断(在写文件) 12 13 f.closed #判断文件是否关闭 14 15 f.encoding#取文件打开的编码 16 17 f.name #获取文件名 18 19 f.close()
2.6 文件光标移动
注意:
- reas(3)代表读取三个字符,其余的文件内光标移动都是以字节为单位如,seek, tell, read, truncate。
- 0模式不用指定文件打开方式;1,2模式要用rb的方式打开文件
f = open("text","rb") f.seek(6) #光标在第六个位置 f.seek(3,0)#0模式从头开始seek f.seek(10,1))#1模式从当前位置seek f.seek(-10,2))#2模式从最后位置seek,倒着seek前面参数用负数 f.close()