Python3基础教程第7章课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python3基础教程第7章课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python3 基础教程 课件
- 资源描述:
-
1、Python3基础教程第2版 慕课版第7章文件和数据格式化本章主要内容:文件读写CSV文件数据组织的维度7.1 文件本节主要内容:文件类型打开和关闭文件读写文本文件读写二进制文件用文件存储对象目录操作7.1.1 文件类型通常,文件可分为文本文件和二进制文件。文本文件根据字符编码保存文本,常见字符编码如ASCII、UTF-8、GB2312等。文本文件按字符读取文件,一个字符占用一个或多个字节。文本文件常用于保存字符组成的文本,整个文件可看作一个长字符串。二进制文件存储的是数据的二进制代码(位0和位1),即将数据在内存中的存储形式复制到文件中。二进制文件没有字符编码,文件的存储格式与用途无关。二进
2、制文件通常用于保存图片、音频和视频等数据。图片、音频和视频有不同的编码格式,如png格式的图片、mp3格式的音频、mp4格式的视频等。二进制文件通常按字节读取文件。Python根据打开模式按文本文件或二进制文件格式读写文件中的数据。按文本文件格式读取文件数据,示例代码如下。file=open(data.txt,rt)#打开文件 print(file.readline()#从文件读一行数据,输出Python3基础教程 file.close()#关闭文件按文本文件格式读取数据时,Python会根据字符编码将数据解码为字符串,将数据转换为有意义的字符。按二进制文件格式读取文件数据,示例代码如下。fi
3、le=open(data.txt,rb)print(file.readline()bPython3xbbxf9xb4xa1xbdxccxb3xcc file.close()按二进制文件格式读取数据时,数据为字节流,Python不执行解码操作,读取的数据作为bytes字符串,并按bytes字符串格式输出。7.1.2 打开和关闭文件 可用Python内置的open()函数来打开文件,并返回关联的文件对象。open()函数基本格式为如下。myfile=open(filename,mode)其中:myfile为引用文件对象的变量 filename为文件名字符串 mode为文件读写模式。在文件名中可包含
4、相对或绝对路径,省略路径时,Python在当前工作目录中搜索文件。IDLE的当前工作目录为Python安装目录。在系统命令提示符窗口中执行python.exe进入交互环境或执行Python程序时,当前目录为Python的当前工作目录。文件读写模式“r”:只读模式,默认值。“w”:只写模式,创建新文件。若文件已存在,则原来的文件被覆盖。a”:只写、追加模式。若文件存在,在文件末尾添加数据。文件不存在时会创建新文件。“x”:只写模式,创建新文件。若文件已存在,则报错。“t”:按文本格式读写文件数据,默认方式。“b”:按二进制格式读写文件数据。“+”:组合读写模式,同时进行读、写操作。“t”“b”和
5、“r”“w”“a”“x”可组合使用,“+”必须和“r”“w”“a”组合使用。常用文件读写模式组合 省略读写模式:只能按文本格式从文件读取数据,等同于“rt”。例如,open(data.txt)。“rb”:只能按二进制格式从文件读取数据。例如,open(data.txt,rb)。“w”和“wt”:只能按文本格式向文件写入数据。例如,open(data.txt,w)。“r+”:可按文本格式从文件读取数据,或向文件写入数据。例如,open(data.txt,r+)。“wb”:只能按二进制格式向文件写入数据。例如,open(data.txt,wb)。“rb+”:可按二进制格式从文件读取数据,或向文件写
6、入数据。例如,open(data.txt,rb+)。“a+”:可按文本格式从文件读取数据,或向文件写入数据,写入的数据始终添加到文件末尾。例如,open(data.txt,a+)。“ab+”:可按二进制格式从文件读取数据,或向文件写入数据,写入的数据始终添加到文件末尾。例如,open(data.txt,ab+)。文件指针 打开文件后,Python用一个文件指针记录当前读写位置。以“w”或“a”模式打开文件时,文件指针指向文件末尾 以“r”模式打开文件时,文件指针指向文件开头。Python始终在文件指针的位置读写数据,读取或写入一个数据后,根据数据长度,向后移动文件指针。close()方法clo
7、se()方法用于关闭文件,示例代码如下。myfile.close()#关闭文件通常,Python会使用内存缓冲区缓存文件数据。关闭文件时,Python将缓冲的数据写入文件,然后关闭文件,释放对文件的引用。程序结束时,Python可自动关闭未使用的文件。flush()方法可将缓冲区的内容写入文件,但不关闭文件,示例代码如下。myfile.flush()7.1.3 读写文本文件 文本文件有关的读写方法如下:read():将从文件指针位置开始到文件末尾的内容作为一个字符串返回。read(n):将从文件指针位置开始的n个字符作为一个字符串返回。readline():将从文件指针位置开始到下一个换行符号
8、的内容作为一个字符串返回,读取内容包含换行符号。readlines():将从文件指针位置开始到文件末尾的内容作为一个列表返回,每一行的字符串作为一个列表元素。write(xstring):在文件指针位置写入字符串,返回写入的字符个数。writelines(xlist):将列表中的数据合并为一个字符串写入到文件指针位置,返回写入的字符个数。seek(n):将文件指针移动到第n个字节,0表示指向文件开头。tell():返回文件指针当前位置。文本文件按字符读取数据,如果文件包含Unicode字符,Python会自动进行转换。文本文件中每行末尾以回车换行符号结束在读取的字符串中,Python用“n”代
9、替回车换行符号。二进制文件读取的回车换行符号为“rn”。文本文件code.txt的数据如下one第一行two第二行three第三行1以“r”模式打开文件读数据 以“r”模式打开文件时,文件指针位于文件开头,只能从文件读取数据,示例代码如下。myfile=open(rd:code.txt)#以默认只读方式打开文件 x=myfile.read()#读文件全部内容到字符串 x#每行末尾的换行符号在字符串中为“n”one第一行ntwo第二行nthree第三行 print(x)#打印格式与原文件完全一致 one第一行 two第二行 three第三行 myfile.read()#文件指针已指向文件末尾,返
10、回空字符串 myfile.seek(0)#将文件指针移动到文件开头0 myfile.read(5)#读5个字符one第一 myfile.tell()#返回文件指针的当前位置7 myfile.readline()#读取从文件指针当前位置到当前行末尾的字符串行n myfile.readline()#读下一行two第二行n myfile.seek(0)0 myfile.readlines()#读文件全部内容到列表 one第一行n,two第二行n,three第三行 myfile.seek(0)0 for x in myfile:print(x)#以迭代方式读文件 one第一行#请思考两行数据之间为什么
11、有一个空行?two第二行 three第三行 myfile.close()#关闭文件2以“r+”模式打开文件以“r+”模式打开文件时,文件操作具有下列特点。可从文件读取数据,也可向文件写入数据。刚打开文件时,文件指针指向文件开头。在执行读操作后执行写操作时,不管文件指针位置在哪里,都将数据写入文件末尾。要在特定位置写入数据,需要先执行seek()函数指定文件指针位置,然后写入数据。myfile=open(rd:code.txt,r+)myfile.write(oneline)#写入字符串,此时写入到文件开头,覆盖原数据7 myfile.seek(0)#定位文件指针到文件开头0 myfile.re
12、ad()#读取全部数据oneline行ntwo第二行nthree第三行 myfile.seek(7)#将文件指针指向第8个字节(位置为7)7 myfile.write(123456)#写入数据,会覆盖原第一行末尾的换行符号6 myfile.seek(0)#定位文件指针到文件开头0 myfile.read()#读取数据,查看前面写入的数据oneline123456o第二行nthree第三行 myfile.seek(0)#定位文件指针到文件开头 0 myfile.read(5)#读取5个字符 oneli myfile.tell()#查看文件指针位置 5 myfile.write(xxx)#写入数据
13、,读取数据后立即写入,数据写入文件末尾 3 myfile.seek(0)#定位文件指针到文件开头 0 myfile.read()#读取数据,查看前面写入的数据,“xxx”在文件末尾 oneline123456o第二行nthree第三行xxx myfile.close()#关闭文件3以“w”模式打开文件以“w”模式打开文件时,会创建一个新文件。如果存在同名文件,原来的文件会被覆盖。所以,使用“w”模式打开文件时应特别小心。以“w”模式打开文件时,只能向文件写入数据。myfile=open(rd:code2.txt,w)myfile.write(onen)#将字符串写入文件4 myfile.wri
14、telines(1,2,abc)#将列表写入文件,列表对象必须都是字符串 myfile.close()#关闭文件 myfile=open(rd:code2.txt)#重新打开文件,读取前面写入的数据 myfile.read()onen12abc myfile.close()#关闭文件 在向文本文件写入需要换行的数据时,应在字符串末尾嵌入“n”,否则数据不会换行。4以“w+”模式打开文件以“w+”模式打开文件时,允许同时读写文件 myfile=open(rd:code2.txt,w+)myfile.read()#新建文件,所以其中没有数据,返回空字符串 myfile.write(onen)#将字
15、符串写入文件4 myfile.writelines(1,2,abc)myfile.seek(0)#将文件指针移动到文件开头0 myfile.readline()#读第1行onen myfile.readline()#读第2行12abc myfile.readline()#已经到文件末尾,返回空字符串 myfile.seek(4)#将文件指针移动到第4个字节之后4 myfile.write(xxxxxxx)#将字符串写入文件7 myfile.seek(0)#将文件指针移动到文件开头0 myfile.read()#读取全部数据onenxxxxxxx myfile.close()#关闭文件5以“a”
16、模式打开文件以“a”模式打开文件时,只能向文件写入数据,文件打开时文件指针指向文件末尾,向文件写入的数据始终添加到文件末尾。myfile=open(rd:code2.txt,a)myfile.write(n123456)#将字符串写入文件7 myfile.seek(4)4 myfile.write(*)#虽然文件指针指向第5个字符,但仍写入文件末尾5 myfile=open(rd:code2.txt)#重新以只读方式打开文件 print(myfile.read()#查看读取的数据onexxxxxxx123456*6以a+”模式打开文件“a+”与“a”模式的唯一区别是前者除了允许写入数据,还可以
17、读取文件数据 myfile=open(rd:code2.txt,a+)myfile.tell()#查看文件指针位置,此时应为文件末尾25 myfile.write(n新添加的数据)#将字符串写入文件7 myfile.seek(0)#将文件指针移动到文件开头0 print(myfile.read()#打印读取的文件内容onexxxxxxx123456*新添加的数据 myfile.seek(5)#将文件指针移动第5个字符之后5 myfile.write(newdata)#将字符串写入文件7 myfile.seek(0)#将文件指针移动到文件开头0 print(myfile.read()#打印读取的
18、数据,查看前面写入的“newdata”的位置onexxxxxxx123456新添加的数据newdata myfile.close()#关闭文件7.1.4 读写二进制文件上一节中讲述的文本文件的各种读写方法均可用于二进制文件,区别在于:二进制文件读写的是bytes字符串。例如,下面的代码先以“wb”模式创建一个二进制文件,然后分别用“r”和“rb”模式打开文件,读取文件内容。myfile=open(rd:code3.txt,wb)#创建二进制文件 myfile.write(aaaaa)#出错,二进制文件只能写入bytes字符串 Traceback(most recent call last):F
19、ile,line 1,in TypeError:a bytes-like object is required,not str myfile.write(baaaaa)#正确,将bytes字符串写入文件 5 myfile.write(bnbbbb)5 myfile.close()myfile=open(rd:code3.txt,r)print(myfile.read()#打印读取文件的全部内容aaaaabbbb myfile=open(rd:code3.txt,rb)print(myfile.read()#打印读取文件的全部内容baaaaanbbbb myfile.close()#关闭文件7.
20、1.5 用文件存储对象用文本文件或二进制文件格式直接存储Python中的各种对象,通常需要进行繁琐的转换。可以使用Python标准模块pickle处理文件中对象的读写 x=1,2,abc#创建列表对象 y=name:John,age:25#创建字典对象 myfile=open(rd:objdata.bin,wb)import pickle#导入pickle模块 pickle.dump(x,myfile)#将列表对象写入文件 pickle.dump(y,myfile)#将字典对象写入文件 myfile.close()#关闭文件 myfile=open(re:pytempobjdata.bin,r
21、b)myfile.read()#直接读取文件中的全部内容,查看内容bx80 x03qx00(Kx01Kx02Xx03x00 x00 x00abcqx01e.x80 x03qx00(Xx03x00 x00 x00ageqx01Kx19Xx04x00 x00 x00nameqx02Xx04x00 x00 x00Johnqx03u.myfile.seek(0)#将文件指针移动到文件开头0 x=pickle.load(myfile)#从文件读取对象 x1,2,abc x=pickle.load(myfile)#从文件读取对象 xage:25,name:John7.1.6 目录操作文件操作通常都会涉及到
22、目录操作。目录是一种特殊的文件,它存储当前目录中的子目录和文件的相关信息。Python的os模块提供了目录操作函数,使用之前应先导入模块,示例代码如下。import os1os.getcwd()该方法返回Python的当前工作目录,示例代码如下。os.getcwd()D:pytemp2os.mkdir()该方法用于创建子目录,示例代码如下。os.mkdir(temp)#在当前目录中创建子目录 os.mkdir(d:ptemtest)#在绝对路径d:ptem中创建子目录test 3os.rmdir()该方法用于删除指定的空子目录,示例代码如下。os.rmdir(temp)#删除当前目录的子目录
展开阅读全文