文件处理流程
- 打开文件,获得文件句柄并赋值给一个变量(open函数会自动检索该系统将数据存入硬盘的编码方式(gbk),所以默认是以bgk的方式解码,而python3存数据是以utf-8编码方式)
- 通过文件句柄进行操作
- 关闭文件
文件操作模式
- 只读模式
1 f = open('test', encoding='utf-8') # 默认为只读模式 2 data = f.read() #读取文件的全部内容 3 print(data) 4 print(f.readable()) # True # 判断文件是否可读 5 print(f.readline()) # 读取文件的一行内容 6 print(f.readlines()) # ['我 ', '你 ', '他'] 7 f.close()
- 只写模式
1 # 会先将对应文件内容清空,然后写入自己设定的内容,如果文件名不存在,会先新建对应文件名的空文件 2 f = open('test', 'w', encoding='utf-8') #只写模式 3 print(f.writable()) #True 4 f.write('123') 5 f.write('456') #多个write会写在同一行,即默认没有换行功能 6 f.writelines(['abc ', 'def ']) #将要写的多行内容放在一个列表中
- 追加模式
1 f = open('test', 'a', encoding='utf-8') 2 f.write('追加的方式ad') 3 f.close()
- +模式
1 f = open('test', 'r+', encoding='utf-8') 2 f.write('520')
- b模式
1 #b模式:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 2 f = open('test', 'rb') 3 data = f.read() 4 print(data) 5 print(data.decode()) 6 f.close() 7 8 f = open('test', 'wb') 9 f.write(bytes('陈媛媛', encoding='utf-8')) 10 f.close() 11 12 f = open('test', 'ab') 13 f.write('好美呀'.encode('utf-8')) 14 f.close()
小例子:
读取文件1的内容,稍作修改后写入到文件2中
- 方法1
1 f_old = open('test', encoding='utf-8') 2 data = f_old.readlines() 3 f_old.close() 4 5 f_new = open('test2', 'w', encoding='utf-8') 6 f_new.writelines(data[0].replace('520', '陈')) 7 f_new.close()
- 方法2
1 #文件操作的另外一种方式with-as,这种方式的好处在于不用写close操作 2 with open('test', encoding='utf-8')as f_old, 3 open('test2', 'w', encoding='utf-8') as f_new: 4 data = f_old.read() 5 f_new.write(data)