一,文件的类型
首先介绍什么是文件:文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。(文件一般通过单一特定的编码字符组成),计算机文件基本上分为二种:二进制文件(没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。
纯文本文件编码格式常见的有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。
二进制文件与文本文件的一个最主要的区别在于是否有统一的字符编码格式,二进制文件顾名思义是直接由0与1组成,无统一的字符编码。如图片文件(jpg、png),视频文件(avi)等。
接下来对文件的简单使用进行介绍:
a = open('a.txt','rt') #第二个参数代表以文本文件方式进行打开
print(f.readline()) #readline() 函数用于读取文件中的一行,包含最后的换行符“\n”
f.close() #对于使用 open() 函数打开的文件,我们用 close() 函数将其手动关闭
以上代表代表以文本文件的方式打开a.txt文件,如果将第一行的open函数的第二个参数 'rt' 改为 'rb' ,即可使用二进制的方式进行打开文件。
如果采用文本方式进行读入文件,文件会经过编码形成有含义的字符。如果采用二进制方式进行读入文件,文件会被解析为字节流(注释),但是由于编码的存在,这些被解析为二进制的字节数变为了十六进制的字符。
二、文件的打开与关闭
Python中对于文件有统一的操作步骤:打开——进行操作——关闭。打开步骤中使用函数open()打开一个文件,并可以返回一个操作该文件的变量。
语法结构:变量=open('文件路径+文件名','打开模式')
打开模式使用字符串方式进行表示,其中r,w,x,a可以和b,t,+组合使用,形成既可以读写又可以表达文件模式的方式。例如: 'rb' 'a+'等等
注意:在使用open()函数打开一个文件后,需要执行close()关闭该文件,作用是释放该文件的操作过程,如果不进行释放,在其他程序则无法使用,原因是被原程序占用。
在表示文件路径时,可以使用 ‘//’ 或者 ‘\’ 进行替代‘/’ ,原因是在python中 '/' 代表转义字符。
三、文件的读写
方法 | 含义 |
f.read(size=1) | 从文件读入整个文件内容。参数可选,如果存在,读入前size长度的字符串或字节流 |
f.readline(size=1) | 从文件读入一行的内容。参数可选,如果存在,读入该行前size长度的字符串或字节流 |
f.readlines(hint=1) | 从文件中读入所有行,以每行为元素形成一个列表。参数可选,读入hint行 |
f.seek(offset) | 改变当前文件操作指针的位置,offest的值:0为文件开头;2为文件结尾 |
文件不大的时候,read()方法比较好用,可以直接将文件内容保存到一个变量里。
.seek(offset)方法中无参数时,默认从文件开头进行读入。同时要注意,在采用方法进行完全读取之后,想要再次读取时,会无法读取到文件内容,因为在该文件的读取指针已经从文件开头转移到文件末尾 !! 这时如果想要再次读取,只需要使用 f.seek(0) 将指针移到文件开头即可。
文件的写入有两个方法
方法 | 含义 |
f.write(s) | 向文件写入一个字符串或者字节流 |
f.writelines(lines) | 将一个元素为字符串的列表整体写入文件 |
f.write(s)方法中每次写入都会记录一个写入指针,该方法也可以反复进调用,在写入指针后分批写入内容,直到文件关闭。
想要一次性写入文件中可以使用f.writelines(lines)方法,只要将想要写入的字符串提前放入一个lines列表中,然后通过该方法进行写入即可。