第五章文件与异常处理本章介绍Python的文件操作(重点介绍文本文件的操作)、目录操作,以及Python的异常处理机制,最后介绍如何使用pdb模块调试Python程序。5.1文件的基本操作•5.1.1打开文件•使用文件之前,须首先打开文件,然后进行读、写、添加等操作。Python打开文件使用open函数,其语法格式为:•open(name[,mode[,buffering]])•其中,文件名(name)为必选参数,模式(mode)和缓冲(buffering)参数是可选的。该函数返回一个文件对象。•【例5-1】打开一个文本文件。•f=open(r"C:\Users\test.txt")•上述语句直接打开一个指定的文件,如果文件不存在则创建该文件。•这里的f是一个文件对象,它与指定的文件建立了关联,很多文献称f为文件描述符。•实际上它可视为指定文件的“句柄”,所有对指定文件的后续操作都将通过这个句柄进行,直到使用后面将要介绍的close()函数关闭指定文件为止。open函数模式参数表参数值描述‘r’读模式‘w’写模式‘a’追加模式‘b’二进制模式(可添加到其他模式中使用)‘+’读/写模式(可添加到其他模式中使用)模式参数组合及其描述模式参数组合描述r+以读写模式打开w+以读写模式打开(参见w)a+以读写模式打开(参见a)rb以二进制读模式打开wb以二进制写模式打开(参见w)ab以二进制追加模式打开(参见a)rb+以二进制读写模式打开(参见r+)wb+以二进制读写模式打开(参见w+)ab+以二进制读写模式打开(参见a+)open函数缓冲参数表参数值描述0(False)I/O无缓冲,即所有读写操作直接针对硬盘1(True)I/O有缓冲,即使用内存代替硬盘>1大于1的数字表示缓冲区的大小(以字节为单位)-1(或任何负数)表示使用默认的缓冲区大小5.1.2关闭文件•文件使用完毕后应及时关闭。在Python中关闭文件用close方法。•通常来说,Python会在一个文件不用后自动将其关闭,不过这一功能没有保证,因为Python可能会缓存写入的数据,如果程序因为某种原因崩溃,数据就有可能没有完整地写入到文件中,从而引发文件故障。•【例5-2】关闭文本文件。•要关闭【实例5-1】中的f文件对象,可以使用如下语句:•f.close()5.1.3在文本文件中读取数据•在文本文件中读取数据的语法格式为:•f.read([size])#size为读取的长度,以byte为单位•f.readline([size])#读一行,如果定义了size,有可能返回的只是一行的一部分•f.readlines([size])#把文件每一行作为list的一个成员,并返回这个list。•【例5-3】读取文本文件内容。•假设在C:\Users目录下有一个文本文件test.txt,文本内容为“HelloWorld!”。5.1.4创建文本文件•在Python中,以追加模式打开文本文件即可创建此文件,语法格式为:•open(name,'a'[,buffering])#创建空文件•【例5-4】创建文本文件。•在当前目录下创建一个文本文件text.txt,可使用语句:•f=open(r'C:\Users\text.txt','a')5.1.5向现有文件中添加数据•向文件中写入数据的函数是write()和writelines(),其语法格式为:•f.write(str)#把str写到文件中,write()并不会在str后加上一个换行符•f.writelines(seq)#把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。•【例5-5】向文本文件中添加数据。•假设我们向D:\xunlian\test.txt文件中写入数据,可以使用下列语句:•其中的17表示向文本文件test.txt中写入了17个字符。5.1.6文件指针•对文件操作时,文件内部会有一个文件指针来定位当前位置,控制文件指针位置可以实现重复读取,用seek方法可以控制文件指针的位置,其语法格式为:•seek(offset[,whence])#移动文件指针•各参数含义如下:•offset:偏移量。一般是相对于文件的开头来计算的,一般为正数。•whence:偏移相对位置。whence可以为0,表示从头开始计算,为1则表示以当前位置为原点计算,为2则表示以文件末尾为原点进行计算。•偏移相对位置常量有SEEK_SET、SEEK_CUR、SEEK_END:•os.SEEK_SET:表示文件的起始位置,即0(默认情况),此时offset必须为0或正数。•os.SEEK_CUR:表示文件的当前位置,即1,此时offset可以为负数。•os.SEEK_END:表示文件的结束位置,即2,此时offset通常为...