python与文件处理的相爱相杀
一 介绍
计算机系统=计算机硬件+操作系统+应用程序
你用word写好了一篇文章,如何将这篇文章给永久保存起来,答案很简单就是将其保存到硬盘中。但是我们都知道word这个应用程序是无法对硬件进行直接操作的,必须借助操作系统。
用一句话来说,应用程序使用操作系统对硬件进行操作,今天要来了解的文件就是操作系统为了应用程序能够更好的操作硬盘所虚拟出来的概念。
简而言之:用户或者应用程序通过使用文件,将自己的数据永久保存下来。
我们无需知道文件与操作系统之间那些事儿,只要关注操作文件的流程。
- 打开文件
- 操作文件
- 关闭文件
二.在python中文件处理流程
#1. 打开文件 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r #2.操作文件 data=f.read() #3. 关闭文件 f.close()
三.注意
1.操作完成后一定要关闭文件。(.close)
2.编码问题
f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。
简而言之:若要不乱码,文件以什么保存,以什么打开
四.文件打开模式
文件句柄=open('文件路径','模式',encoding=' ')
#1. 打开文件的模式有(默认为文本模式): r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式) rb wb ab 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 #3. 了解部分 "+" 表示可以同时读写某个文件 r+, 读写【可读,可写】 w+,写读【可读,可写】 a+, 写读【可读,可写】 x, 只写模式【不可读;不存在则创建,存在则报错】 x+ ,写读【可读,可写】 xb
五.文件操作方法
#掌握 f.read() #读取所有内容,光标移动到文件末尾 f.readline() #读取一行内容,光标移动到第二行首部 f.readlines() #读取每一行内容,存放于列表中 f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符 f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符 f.writelines(['333\n','444\n']) #文件模式 f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式 #了解 f.readable() #文件是否可读 f.writable() #文件是否可读 f.closed #文件是否关闭 f.encoding #如果文件打开模式为b,则没有该属性 f.flush() #立刻将文件内容从内存刷到硬盘 f.name
六.文件修改
文件其实并没有修改一说,用word写一篇文章来说。我们将写好的文章保存硬盘中,现在我们需要“修改”这篇文章,首先应用程序通过操作系统将文件从硬盘导入到内存当中操作,操作完后,文件再从内存覆盖到硬盘里面。