第5单元 文件 Gefzw.indd 51 2023/8/14 10:23:57 跟我学Python二级教学辅导 5.1 知识点定位 青少年编程能力“Python 二级”核心知识点4 :文件。 5.2 能力要求 (1)了解文件的永久存储特性,掌握文件的分类。 (2)掌握文件的打开、关闭、读、写等操作。 5.3 建议教学时长 本单元建议2 课时。 5.4 教学目标 1. 知识目标 启发学生认识文件存储与变量存储的本质区别,学会文件的基本操作。 Gefzw.indd 52 2023/8/14 10:23:59 第5单元 文件 2. 能力目标 学习了本单元内容后,要求学生能够熟练掌握文件的打开、关闭、读、写 模式,识别不同打开模式下文件的操作特点,同时能顺利地使用文件。 3. 素养目标 本单元要求学生能够正确使用文件保存所需数据,并根据文件使用特点对 文件进行下一步的操作,为后续学习模块打下基础。 5.5 知识结构 本单元知识结构如图5-1 所示。 图5-1 文件知识结构 5.6 补充知识 1. 二进制的知识 数字计算机内使用二进制的形式表示程序指令和数据。二进制是逢2 进1 Gefzw.indd 53 2023/8/14 10:24:04 跟我学Python二级教学辅导 的一种进位记数制,类似于日常生活中习惯的逢10 进1 的十进制。例如,十 进制数10 代表“十”这个数值,但如果是在二进制中,10 代表的数值实际上 是十进制的2。 十进制数中有个、十、百、千、万等不同的位,类似地,二进制数也 有,但每一位的权值不是10 的幂次,而是2 的幂次。因此,一个二进制 数1001 的实际值是1×8+0×4+0×2+1×1=9。这便是二进制数转换成 十进制数的方法。反过来,十进制数也可以转换成二进制数,如十进制数 12=1×8+1×4+0×2+0×1,那么它对应的二进制数就是1100。还有一些 其他二进制数转换方法,可以查阅相关资料学习。 由于二进制数书写起来更长,在表达位数比较多的二进制数时,书写和阅 读不太方便,因此在计算机编程中或者显示一些数据时,也经常用到八进制和 十六进制。八进制只有数字符号0~7,十六进制除了使用数字0~9 这十个符号 外,还加入A~F 这些符号,以代表从十进制数10~15 的数值。例如,十六进 制数1A 转换成十进制数为1×16+10×1=26。二进制、八进制和十六进制 的基数分别是2、8 和16,可以通过二进制数的3 位合并成八进制的1 位,或 者八进制的1 位展开成二进制数的3 位来进行二进制数和八进制数的转换,二 进制和十六进制之间的转换类似。 2. 编码的知识 计算机编码,指的是用各种符号、数字或字符来表示数据,让计算机可以 识别并进行处理。计算机内的各种信息均使用一定的二进制编码形式表示,每 种编码规范都规定了二进制位序列的组成规则以及相应编码规范下的二进制序 列的具体意义。例如,整数经常在计算机内使用称为补码的一种编码表示,在 这种编码方式下,最高位(最左边的二进制位)就表示出这个整数是负数还是 非负数。类似地,小数(实数)经常使用浮点数的编码,它是一种更加复杂的 编码规范。不同国家地区的字符编码多种多样,以英文字母为代表的西文字符 普遍使用ASCII 码表示,而中文字符也有我国推出的GB2312、GBK 等不同 的编码规范。就像我们面对的国际化潮流一样,也有国际化的字符编码,如 Unicode、UTF-8 等一些编码也被广泛使用,Unicode 致力于能够表示全世界 任何语言中的文字和各种各样的符号。 除了能够用一定的编码表示上述数值和文字以外,还存在很多其他的编码 用于多媒体等其他信息的编码。 Gefzw.indd 54 2023/8/14 10:24:04 第5单元 文件 3. 文件类型 在平时使用计算机时,我们所熟悉的文件类型以扩展名为代表,例如,一 个文本文件以.txt 作为扩展名,一个图像文件可能是以.jpg 作为扩展名。不同 的扩展名反映了文件内容的组织结构和格式规范。实际上,如果做更广泛的分 类,在计算机内部,文件只有两大类,即二进制文件和文本文件。这个区别主 要是看文件内部对数据是否有统一的字符编码。 如果是以统一的字符编码来组织数据,就是文本文件。例如,.txt 文件就 是以字符串的形式来组织数据。二进制文件则没有统一的编码形式,直接由0 和1 组成,文件的形成按照某种特定的格式形成,但不是统一编码的字符,如 png 文件等。从文件操作的视角来看,这两种文件分别提供字符流和字节流。 对文本文件的操作,直接面向字符流就可以完成文件内字符的读写,而对二进 制文件,即使能够读写字节流,但如果对特定文件的格式规范没有深入的了解, 通常很难进行有意义的文件操作,因此操作二进制文件,通常应该考虑使用标 准库或第三方库提供的编程接口。例如,有一个第三方库名叫Pillow,通过它 所提供的编程接口,只需要简单的代码就能够很方便地打开和显示图像文件, 甚至能够完成复杂的数字图像处理任务。 5.7 教学组织安排 教学环节教学过程建议课时 知识导入引导学生思考 1课时 文件的类型简单介绍文件的种类 文件的打开和关闭介绍文件的打开和关闭方式 知识总结总结本次课程,布置作业 知识回顾回顾文件的打开和关闭操作 1课时 读文件操作介绍并演示文件读取操作 写文件操作介绍并演示写文件操作 知识总结总结本次课程,布置作业 Gefzw.indd 55 2023/8/14 10:24:04 跟我学Python二级教学辅导 5.8 教学实施参考 1. 提问式知识导入 首先提出问题,每次运行程序得到的结果(变量的值)都不能保存下来, 下一次想要看结果时,必须再次运行程序。结合教材“想一想”中的问题5-1, 由问题引发学生的思考,为什么我们的程序代码可以保存下来,不需要每次都 重新输入呢?从学生的回答中提取重点,总结后得出使用文件的结论。 2. 知识点一:文件的类型 学生对于“文件”并不陌生。请学生回答他们知道的文件有哪些,怎么 区分这些文件。此时强调文件存放的内容不同,处理方式不同,引出“类型”。 介绍文件的分类。 演示例5-1,让学生看到文本文件和二进制文件的不同。文本文件容易理解, 但是二进制文件对学生来说较陌生,需要做适当的解释。通过演示程序,直观 地让学生感受两种文件输出的区别。 3. 知识点二:文件的打开和关闭 首先要强调,打开和关闭操作是成对出现的。文件打开,操作完成后必须 要关闭。通过演示例5-2,让学生了解文件的打开和关闭过程。操作结束后要 及时关闭,否则会导致出错。 在此部分需要讲解文件路径,在计算机上把程序运行用到的文件展示给学 生,同时修改程序中打开文件的路径,以直观的方式让学生掌握相对路径和绝 对路径。 4. 知识回顾 这里回顾上一讲的知识。主要回顾的知识点是:文件类型、打开文件的模式, Gefzw.indd 56 2023/8/14 10:24:04 第5单元 文件 文件存放的路径。可以根据情况请学生演示程序(最好是课后自己编写的程 序)。若两节课连在一起上,那么这个环节可以减少或省略。 5. 知识点三:读文件操作 主要介绍三个读文件的函数各自不同的参数代表什么意思。通过程序的演 示,很容易让学生明白。 (1)例5-3 这段代码主要展示的是读文件read( ) 有参数和没有参数的情 况对比。需要给学生说明的地方是,打开的文件,可以从键盘输入其文件名。 考虑到一般在输入文件名时通常不会输入扩展名,因此在程序中做一点处理: f=open(name+'.txt','r'),该语句把输入的文件名加上了扩展名(如果 输入时要求同时输入扩展名,这个处理可以不需要)。 程序中用到了seek( ) 函数,定位了文件指针。演示程序时,可以把该语 句去掉再演示一次,让学生能够看到该语句的作用。指针的概念学生基本没有, 用读书时指读作为例子,可以很好地讲解清楚。不要直接讲概念或者用术语解 释,这会给学生造成困惑。 seek( ) 函数的具体定义为f.seek(offset,from_what) ,参数的含义如下。 offset: 文件指针相对于参照点移动的距离。 from_what: 指针移动的参照点位置。参照点有三个值,0 代表将参照点定 位在文件开头;1 代表将参照点定位在当前文件位置;2 代表将参照点定位在 文件末尾。默认情况下,参照点位置设置为0。 演示程序时,可以设置不同的参数,让学生看到不同的效果,再结合学生 自己上机操作,熟练掌握这种用法。 (2)例5-4 这段代码主要展示函数readlines( ) 的使用,该函数没有参数。 使用该函数时,首先把文件内容读入一个列表,如果需要逐行输出,再用for 循环来遍历列表并输出内容。运行结果显示了这个过程。这种方式的缺点是, 如果文件太大,那么一次把内容读入会占用很大内存空间,影响程序执行速度。 程序的后一种方法是直接处理,用for 循环读入其内容,并输出。 6. 知识点四:写文件操作 主要介绍两个写文件的函数,通过演示程序,让学生更容易理解。这里需 要给学生演示打开模式中的“覆盖写”“创建写”和“追加写”这几种模式的区别。 (1)例5-5 这段代码展示了write( ) 函数的使用。要注意写入文件内容后, Gefzw.indd 57 2023/8/14 10:24:04 不能直接输出写入后的文件,要再次以读的方式打开文件,或者在打开模式那 里不用“w”,而是用“w+”即可读写。修改程序,让学生看到区别。 (2)例5-6 这段代码展示了writelines( ) 的用法。注意使用时,参数是列 表类型,需要事先把需要写入文件的数据存放到一个列表中,且列表的数据是 字符串。 结合教材“想一想”中的问题5-4,引导学生思考并总结打开模式的合理 应用。 7. 单元总结 小结本单元的内容,布置课后作业。 5.9 问题解答 【问题5-1】这个问题引导学生思考,临时存储和永久存储。变量是临时 存储,文件是永久存储。从它们的存放位置来分析。 【问题5-2】D。这个问题要求学生熟悉文件的打开模式,A、B 和C 选项 都是对的,D 选项错误,打开模式加上“+”,如“w+”,就可以在原功能基 础上增加同时读写的功能。 【问题5-3】C。这个问题考查学生对打开方式和后续的读操作,需要学 生对打开方式和读操作都要熟练掌握。选项A,没有readall( ) 这个函数;选项B, readlines( ) 函数的结果是形成一个列表,而不是字符串;选项C,readable( ) 函数判断文件是否可以打开,如果可以打开,则值为True ,否则值为False, 该选项正确;选项D,readline( ) 函数,参数为1,输出读入内容的长度为1 的 字符串,值为H。 【问题5-4】这个问题考查学生对写文件方式的掌握。请学生与上一段程 序对比,说出两段程序“写”的不同。 【问题5-5】B。这个问题考查学生对写文件的操作的掌握。要求学生熟 练掌握写的各种方式及写的格式。选项A,错误,写入内容是没有换行的,全 部都在一行;选项B,正确;选项C,错误,文件的打开模式是“读”,不可以写; Gefzw.indd 58 2023/8/14 10:24:04 第5单元 文件 选项D,错误,write( ) 函数的参数是字符串,不是列表。 5.10 第5单元习题答案 1. B 2. B 3. C 4. D 5. D 6. C 7. D 8. D 9. A 本单元资源下载可扫描下方二维码。 课件5 扩展资源5 Gefzw.indd 59 2023/8/14 10:24:05