1、 程序运行时,数据保存在内存的变量里。内存数据在程序结束或关机时就消失。如果下次开机或运行程序时要是有之前的变量,就必须将数据保存在不易失的存储介质,比如硬盘中。不易失存储介质上的数据保存在以存储路径命名的文件中。读/写文件就可以实现读取或保存数据。问题如何在磁盘上处理文件?比如创建、读/写及关闭文件?文件由字节组成,在存储介质上永久存储l 存储介质可以是纸张,计算机磁盘、光盘等。在Windows操作系统下,文件名称由主文件名和扩展名组成,主文件名与拓展名之间由一个小圆点隔开。l 如在“Readme.txt”文件中,“Readme”是主文件名,“txt”为扩展名 Windows系统按编码方式分
2、成文本文件和二进制文件两类。l 文本文件处理各种语言所需的字符,只包含基本文本字符,不包含字体、字号、颜色等控制信息。可以在文本编辑器和浏览器中显示,任何时候都是可读的。l 其他编码方式的文件就是二进制文件,如Word文件、PDF文件及可执行程序等。每一种二进制文件都需要特定的处理程序打开。Python对每类文件都有特定的处理方式。文件文件是指存放在存储介质上的一组相关信息集合。1与文件相关的模块目录文件访问2 文件操作按三步骤进行l 建立/打开文件l 对文件进行读/写操作l 关闭文件文件访问 当建立Python程序与文件之间的连接,就创建了“流”数据 程序通过输入流读取数据,通过输出流写入数
3、据文件访问文件的打开流程序输入流输出流标准输入输出程序输入流输出流文件输入输出输入文件输出文件 打开文件建立文件的各种有关信息,并使文件指针指向该文件,以便操作l 文件对象=open(filename,mode,buffering)filename:必选参数,文件名,可以是绝对路径也可以是相对路径 mode:可选参数,代表打开方式 buffering:控制缓冲。取值为0或False时无缓冲,所有读写操作针对硬盘;取值1或True,I/O有缓冲,此时Python使用内存代替硬盘,使程序运行更快,只有使用flush或close时才会将数据从内存写入硬盘。参数大于1时,表示缓冲区大小,单位字节;负数
4、表示使用默认缓冲区大小。文件访问文件的打开值值描述描述r读模式,如果文件不存在,则发生异常,默认参数w写模式,如果文件不存在,则创建文件再打开;如果文件存在,则清空文件内容再打开a追加模式,如果文件不存在,则创建文件再打开;如果文件存在,打开文件后将新内容追加至原内容之后t文本文件模式,默认参数b二进制模式,可添加到其他模式中使用+读/写模式,可添加到其他模式中使用 打开文件l 例:file=open(“d:exa.txt”,”w”)l 文件对象属性 name:文件名称 mode:文件打开方式 closed:文件是否关闭,如果文件被关闭返回True,否则返回Falsel 例:print(fil
5、e.name)文件访问文件的打开 关闭文件断开文件对象与文件之间的关联l 文件对象名.close()l 例:file.close()l with as 语句,可以自动调用close()with open()as 文件对象名:#处理过程l 例:with open(“d:exa.txt”)as file:print(file)print(file.closed)#注意输出的结果为True文件访问文件的关闭 Python对文本文件的读取通过调用文件对象的方法实现。l read(size)读取从当前位置直到文件末尾(size长度)的内容,返回字符串l readline()读取从当前位置到行末的所有字符
6、(包括行结束符),并以字符串返回l readlines()读取从当前位置到文件末尾,以列表返回所有行(每行为一个元素)注意:l 读取文件之前,必须创建文件对象连接,即open(),且模式为“r”l 如果文件已到末尾,则返回空行或空列表文件访问文本文件的读取 Python对文本文件的写入操作也是通过调用文件对象的方法实现。l write(字符串)在文件当前位置写入字符串,并返回写入的字符个数l writelines(字符串元素列表)在文件当前位置一次写入列表中的所有元素 注意:l 写入文件之前,必须创建文件对象连接,即open(),且模式为“w”或“a”思考题l 文本文件复制 扩展:二进制文件的
7、读写文件访问文本文件的写入 实际使用中,需要读写文件中的一部分,通过移动文件内部的位置指针到需要的位置再进行读写操作,称为随机读写。移动文件指针的过程称为文件的定位。tell()l 获取文件当前指针位置(即相对于文件开始的字节数)seek(offset,whence)l 以whence为基准点移动offset位置 whence:0(开始,默认值),1(当前),2(文件尾)注意:只有以b模式打开文件是whence才能取值1或2 offset:偏移量,正数(向文件尾移动指定字节);负数(向文件头移动指定字节)文件访问文件的定位1与文件相关的模块目录文件访问2 Python对文件、目录的操作使用os
8、模块或os.path模块 os模块l getcwd():显示当前工作目录l chdir(newdir):改变当前工作目录l listdir(path):列出指定目录下所有的文件和目录l mkdir(path):创建单级目录l mkdirs(path):递归创建多级目录l rmdir(path):删除单级目录(目录非空抛异常)l removedirs(path):递归删除多级目录(子目录到父目录逐层删除,目录非空抛异常)l remove(path):删除文件l rename(old,new):重命名文件或目录。发生在文件关闭后 与文件相关的模块 os.path模块l dirname(path):返回目录路径l basename(path):返回文件名l split(path):分离路径名称和文件名组成的字符串元组l splitext(path):分离文件名与扩展名组成的字符串元组l abspath(path):返回文件的绝对路径l getsize(file):获得指定文件的大小,以字节为单位l exists(path):判断文件或目录是否存在l isfile(path):判断存在且是否为文件l isdir(path):判断存在且是否为目录与文件相关的模块 思考题l 从question.txt中读取问题,将回答写入answer.txt。练习