1、想要操作文件需要先创建或者打开指定的文件并创建文件对象,可以通过内置的open()函数实现。open()函数的基本语法格式如下:file = open(filename[,mode[,buffering]])参数说明:■ file:被创建的文件对象。■ filename:要创建或打开文件的文件名称,需要使用单引号或双引号括起来。如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则需要指定完整路径。例如,要打开当前路径下的名称为status.txt的文件,可以使用“status.txt”。■ mode:可选参数,用于指定文件的打开模式默认的打开模式为只读(即r)。buffering:可选参数,用于指定读写文件的缓冲模式,值为0表达式不缓存;值为1表示缓存;如果大于1,则表示缓冲区的大小。默认为缓存模式。为防止打开不存在文件时抛出异常,在调用open()函数时,指定mode参数为w、w+、a、a+,就可以在打开文件不存在时,创建一个新的文件。2、打开文件时使用with语句,从而实现在处理文件时,无论是否抛出异常,都能保证with语句执行完毕后关闭已经打开的文件。
with语句的基本语法格式如下:
with expression as target: with-body
参数说明:■ expression:用于指定一个表达式,这里可以是打开文件的open()函数。■ target:用于指定一个变量,并且将expression的结果保存到该变量中。■ with-body:用于指定with语句体,其中可以是执行with语句后相关的一些操作语句。如果不想执行任何语句,可以直接使用pass语句代替。
将上面的例子改成这样,运行后得到相同的结果:
3、写入文件内容,可以用write()方法,其语法格式如下:其中,file为打开的文件对象;string为要写入的字符串。如,向上面例子中写入一条动态信息,再调用close()方法关闭文件:注意:在写入文件后,一定要调用close()方法关闭文件,否则写入的内容不会保存到文件中。如果打开的文件采用w模式,则先清空源文件内容,再写入新的内容;打开的文件采用a模式,则在文件的结尾处增加新的内容。文件对象提供了read()方法读取指定个数的字符,语法格式如下:file.read([size])
参数说明:■ file:为打开的文件对象。■ size:可选参数,用于指定要读取的字符个数,如果省略,则一次性读取所有内容。
如果想要读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到新的位置,然后再应用read(size)方法读取。seek()方法的基本语法格式如下:file.seek(offset[,whence])
参数说明:■ file:表示已经打开的文件对象。■ offset:用于指定移动的字符个数,其具体位置与whence参数有关。■ whence:用于指定从什么位置开始计算。值为0表示从文件头开始计算,值为1表示从当前位置开始计算,值为2表示从文件尾开始计算,默认为0。
注意:使用seek()时,如果采用GBK编码,那么offset的值是按一个汉字占两个字符。而采用UTF-8编码,则一个字占3个字符。offset的值不可以在一个字符的中间,比如我的文件中文字为:“小鸡在你的庄园待了22分钟,吃了6g饲料之后,被你赶走了”,我的offset值为1,就会出现报错:4.2 读取一行
文件对象提供了readline()方法用于每次读取一行数据,基本语法格式如下:file.readline()
例:逐行显示蚂蚁庄园的动态
4.3 读取全部行
读取全部行时,返回的是一个字符串列表,每个元素为文件的一行内容。语法格式如下:file.readlins()
这个方法返回值为一个字符串列表,可以将列表的内容逐行输出: