Python程序设计-教案-单元七 文件操作_第1页
Python程序设计-教案-单元七 文件操作_第2页
Python程序设计-教案-单元七 文件操作_第3页
Python程序设计-教案-单元七 文件操作_第4页
Python程序设计-教案-单元七 文件操作_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Python程序设计》教案单元七文件操作

教学内容制作学生信息管理系统教学目标素质目标:提高学生利用编程“化繁为简”处理问题的能力。提高学生的创新精神和开拓精神。 知识目标:理解文件的概念和类型。掌握在Python中文件打开、关闭方法的使用。掌握Python对TXT,CSV和JSON文件数据的读取、修改和写入方法。掌握编写简单的文件读写程序的方法。能力目标:能够利用Python的文件操作制作学生信息管理系统。教学重难点教学重点:Python中的打开和关闭文件、读写文件方法。教学难点:Python中的定位文件方法。教学方法案例分析法、问答法、讨论法、讲授法、实训法教学用具电脑、投影仪、多媒体课件、教材教学设计教学过程主要教学内容及步骤设计意图课前任务【教师】布置课前任务,提醒同学通过学习软件,完成课前任务请大家自行搜集资料了解文件的概念,并且预习本任务需要的相关知识点。【学生】完成课前任务通过课前任务,使学生了解本次课的重要性,增加学生的学习兴趣考勤

(2min)【教师】清点上课人数,记录好考勤【学生】班干部交假条培养学生的组织纪律性,掌握学生的出勤情况新课预热

(10min)【教师】与学生简单互动,复习回顾上次课的内容等【学生】聆听、互动【教师】讲述本项目的作用和开设本项目的原因如前所述,程序中数据可通过键盘输入,但当数据量较大时,用户工作量将会很大,而且每次运行时都需要重复输入。此外,程序的运行结果可直接输出到屏幕上,但程序每次运行完毕后,程序运行结果就会被“清空”。因此,如果将数据保存在文件中,每次程序运行时对文件进行读取,并且将程序运行结果保存在另一个文件中,这样可大大减轻工作量,也可长期保存数据。本项目将详细介绍Python中文件操作的方法z通过老师与学生的互动,并让学生了解这次课的知识点大致要求问题导入(5min)【教师】提出以下问题:结合以前学过的C语言,在C语言中的文件是如何定义和使用的?【学生】思考、举手回答【教师】通过学生的回答引入要讲的知识通过问题导入的方法,引导学生主动思考,激发学生的学习兴趣传授新知

(30min)一、打开和关闭文件【教师】讲解Python中的打开和关闭文件文件指存储在外部介质(如磁盘等)上有序的数据集合,常见的文件有记事本文件、日志文件、各种配置文件、数据库文件、图像文件、音频和视频文件等。按数据的组织形式不同,可将文件分为文本文件和二进制文件两大类。文本文件一般由单一特定编码的字符组成(如UTF-8编码),阅读方便。大部分文本文件都可以通过文本编辑软件或文字处理软件创建、阅读和修改。由于文本文件存在编码,因此,它可以看作存储在磁盘上的长字符串。例如,在Windows平台中,扩展名为txt、log、ini的文件都属于文本文件,可以使用记事本编辑。二进制文件直接由0和1组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关,如图形图像文件、音频视频文件、可执行文件、各种数据库文件、各类Office文件等。二进制文件将信息以字节流形式存储,无法用记事本或其他普通文字处理软件直接阅读和修改,需要使用对应的软件进行解码或反序列化后才能正确地阅读、修改或执行。1.打开文件Python使用内置函数open()即可按照指定模式打开指定文件,并创建文件对象,其语法格式如下。open(filename[,mode])其中,filename表示文件名称;mode表示文件的读写模式,缺省时为只读模式。该函数返回一个文件对象。例如,以只读模式打开一个名为“1.txt”的文件,可以用下面代码实现。file=open('1.txt')其中,file为打开的文件对象,通过它可以对文件进行读写操作。【教师】强调以下问题文件名不包含路径时,表示相对路径,指的是当前工作路径;包含路径时,表示绝对路径。例如,打开“D:\PycharmProjects\项目七”路径下的“1.txt”文件,可以用下面代码实现。file=open('D:\\PycharmProjects\\单元七\\1.txt')这里要注意的是,程序中须使用“/”或“\\”(即“\”的转义字符)分隔文件夹。【学生】聆听、记录、理解如果想要写入文件,就需要在打开文件时指明文件的打开模式。Python中文件的打开模式有多种,具体表示方式如表7-1所示。表7-1文件打开模式文件打开模式说明指定的文件不存在时r(只读)打开一个文本文件,只允许读数据抛出异常w(只写)打开或新建一个文本文件,只允许写数据新建文件a(追加)打开或新建一个文本文件,并在文件末尾追加数据新建文件rb(只读)以二进制格式打开一个文件,只允许读数据抛出异常wb(只写)以二进制格式打开或新建一个文件,只允许写数据新建文件ab(追加)以二进制格式打开或新建一个文件,并在文件末尾追加数据新建文件r+(读写)打开一个文本文件,允许读和写数据抛出异常w+(读写)打开或新建一个文本文件,允许读和写数据新建文件a+(读写)打开或新建一个文本文件,允许读或在文件末尾追加数据新建文件rb+(读写)以二进制格式打开一个文件,允许读和写数据抛出异常wb+(读写)以二进制格式打开或新建一个文件,允许读和写数据新建文件ab+(读写)以二进制格式打开或新建一个文件,允许读或在文件末尾追加数据新建文件(1)以只读模式“r”打开文件时,该文件必须已经存在,否则抛出异常,且只能进行读取操作,打开时文件位置指针在文件的开头。(2)以只写模式“w”打开文件时,如文件不存在,则以指定的文件名新建文件。若打开的文件已经存在,则新数据覆盖原文件中的已有数据,且只能进行写操作。(3)以追加模式“a”打开文件时,如果文件已经存在,打开时文件位置指针在文件的末尾,也就是说,新数据将写入到已有数据之后,如果文件不存在,则新建文件进行写入。(4)“r+”“w+”“a+”模式都是既可读也可写,只是“r+”与“r”一样,文件必须已经存在。(5)打开模式带上“b”表示以二进制文件格式进行操作。【学生】聆听、记录、理解2.关闭文件在Python中,虽然文件会在程序退出后自动关闭,但考虑到数据的安全性,每次使用完文件后,都应使用close()方法关闭文件,其语法格式如下。file.close()其中,file为文件对象。例如,以只写模式打开一个名为“test.txt”的文件,然后关闭文件,可以用下面代码实现。file=open('test.txt','w')#以只写方式打开名为“test.txt”的文件file.close() #关闭文件【学生】聆听、记录、理解3.with语句Python中的with语句(上下文管理语句)用于对资源进行访问,保证不管处理过程中是否发生错误或异常,都会调用__exit__()方法,执行规定的清理操作,释放访问的资源。它常用于文件操作、数据库连接、网络通信连接、多线程与多进程同步时的锁对象管理等场合,其语法格式如下。withcontext_expression[astarget(s)]:with_body #执行代码其中,context_expression是一个需要执行的表达式,返回一个对象;target(s)用于保存context_expression返回的对象,可以是一个或多个。例如,读写文件时,with语句的用法如下。withopen(filename[,mode])asfile:with_body #通过文件对象读写文件的语句【教师】强调以下问题在实际开发中,读写文件应优先考虑使用with语句。【学生】聆听、记录、理解【教师】布置题目(1)若在当前目录下存在一个名为“exam.txt”的文件,文件内容包括“PythonProgramming”,运行以下程序,输出结果是_____。f=open("exam.txt")print(f)f.close()【学生】完成题目【教师】随机点名回答二、读写文件【教师】讲解Python中的读写文件Python提供了两个写入文件的常用方法,分别为write()方法和writelines()方法。1)write()方法write()方法用于向文件中写入指定字符串,其语法格式如下。file.write(str)其中,file表示文件对象,str表示要写入文件的字符串。【教师】演示例7-4程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解【教师】强调以下问题如果以带“b”模式打开文件,当写入数据时,须使用encode()方法将字符串转换为字节流形式,否则会抛出异常。2)writelines()方法writelines()方法用于向文件中写入字符串序列,如一个字符串列表,其语法格式如下。file.writelines(sequence)其中,file表示文件对象,sequence表示写入文件的字符串序列。【教师】演示例7-5程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解2.读取文件Python提供了3个读取文件的常用方法,分别为read()方法、readline()方法和readlines()方法。1)read()方法read()方法用于从文件中读取指定的字节数,其语法格式如下。file.read([size])其中,file表示文件对象;size表示从文件中读取的字节数,如果缺省或为负,则读取整个文件内容。该方法以字符串形式返回从文件中读取的内容。【教师】演示例7-6程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解2)readline()方法readline()方法用于从文件中读取一行,包括换行符,其语法格式如下。file.readline([size])其中,file表示文件对象,size表示从文件中读取的字节数,如果缺省,则读取整行。【教师】演示例7-7程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解3)readlines()方法readlines()方法用于读取所有行(直到结束符EOF)并返回列表,列表中每个元素为文件中的一行数据,其语法格式如下。file.readlines()【教师】演示例7-8程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解当读取的文件非常大时,一次性将内容读取到列表中会占用很大内存,影响程序执行速度。因此,可以将文件本身作为一个行序列进行读取,遍历文件的所有行来实现。三、CSV文件的读写操作Python专门内置了csv库,提供了相应的函数,可以让我们快速简便的处理CSV文件。1.数据写入CSV文件csv库提供了初始化写入对象的writer()方法,还提供了writerow()方法(写入一行)和writerows()方法(写入多行)用于写入文件。在Python代码中写入CSV文件的步骤如下:首先,使用内置的open()函数以写入模式打开文件;其次,调用writer()函数创建一个CSVwriter对象;然后,利用CSVwriter对象的writerow()或者writerows()方法将数据写入文件;最后,关闭文件。2.读取CSV文件读取CSV文件时,可通过调用reader()方法返回一个可迭代对象,此对象只能迭代一次,不能直接输出,须调用list()方法将其转换为列表输出。【教师】分别演示例7-11和例7-12程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解四、JSON文件的读写操作JSON数据的书写格式是“键-值对”形式,如{"age":18}。键是字符串,值可以是对象、数组、数字(整数或浮点数)、布尔值、null和字符串,此处字符串必须要用双引号引起来,不能用单引号。Python提供了json库来实现对JSON文件的读写操作。json库是Python内置的标准库,不需要额外安装即可使用。Python自带的json模块可以处理JSON格式文件,一共有4个方法。方法 说明json.dump(obj,fp) 把对象序列化为json格式的流对象fpjson.dumps(obj) 把对象序列化为json格式的strjson.load(fp) 反序列化含json格式的文件为python对象json.loads(s) 反序列化含json格式的str,bytes或bytearray为python对象1.数据写入JSON文件利用dumps()方法可以将Python数据类型转化为JSON格式的字符串,然后调用文件的write()方法写入文本。dumps()方法原型如下:dumps(obj,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,default=None,sort_keys=False,**kw)其中,obj参数表示Python数据序列;skipkeys参数表示是否跳过非Python基本类型的键,默认值为False,设置为True时,表示跳过此类键;ensure_ascii参数表示显示格式,默认为True,如果需要输出中文字符,需要将这个参数设置为False,并在写入文件时规定文件输出的编码;indent参数表示输出时缩进字符的个数;sort_keys参数表示是否根据键的值进行排序,默认为False,设置为True时数据将根据键的值进行排序。2.读取JSON文件利用loads()方法可以将JSON格式的字符串转化为Python数据类型,如果从JSON文件中读取内容,可以先调用文件的read()方法读取文本内容,然后再进行转换。【教师】分别演示例7-13和例7-14程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解通过教师的讲解和演示,使学生了解Python中的文件操作的使用任务实施(15min)【教师】带领学生完成任务一✈【教师】提出任务随着时代的发展,学生信息化管理已经成为一个必不可少的重要环节。信息的持久化存储可以更长期高效地收集、管理和分析学生信息。因此,学生信息管理系统除了具有添加学生信息、删除学生信息、修改学生信息和显示所有学生信息等基本功能,同时还应增加保存学生信息到文件的功能和从文件中读取学生信息到程序的功能。本任务将带领大家编写Python程序,利用Python的文件操作制作学生信息管理系统。【学生】思考、讨论一、进行任务分析:完成本任务需要增加保存学生信息到文件的功能和从文件中读取学生信息到程序的功能。任务实施步骤:本任务中,要求在显示菜单列表的函数中增加“保存数据”和“恢复数据”选项。完成本任务需要执行以下步骤。1.定义显示菜单列表的函数printMenu(),增加“保存数据”和“恢复数据”选项。2.增加函数save_file(),用于将学生数据保存到文件中,write()方法的参数必须是字符串类型,因此,需要将字典类型的数据强制转换为字符串后进行写入。3.增加函数recover_data(),用于从文件中读取数据到变量,从文件中读取到的内容是字符串,我们需要将这些带有特定格式的字符串转换为其原来的类型,可调用eval()函数将字符串转换为字典。4.在main函数中增加输入选项。二、参考代码:defsave_file():#定义函数,用于将学生数据保存到文件中withopen('student.txt','w')asfile:file.write(str(stuInfos))#将字典转换为字符串后写入到文件defrecover_data():#定义函数,用于从文件中读取内容,恢复数据globalstuInfoswithopen('student.txt','r')asfile:content=file.read()stuInfos=eval(content)#将数据转换为其原来的类型三、代码运行四、代码分析(主要代码):【学生】聆听、记录、理解通过任务实施环节,让学生将所学知识与实践相结合,培养学生的实操能力实操练习(15min)【教师】布置任务编程题:输入刘恋同学的课程及考分信息,信息间采用空格分开,每个课程一行,输出得分最高和最低的课程及成绩,并求出平均分,输出结果保存在“course.txt”文件中。【教师】巡堂辅导,及时解决学生遇到的问题;安排每组做得最快、最好的学生辅导其他学生进行操作,并解答其遇到的问题【学生】对比自己的绘制结果,若绘制有误,查找并记录原因通过实操练习使学生巩固所学知识,并以学生为主体,针对学生接受能力的差异性,让优秀学生带动其他学生掌握知识课堂小结

(3min)【教师】简要总结本节课的要点(1)文件的一般操作流程为:首先打开文件,创建文件对象;然后通过该对象提供的方法对文件内容进行读取、写入、删除、修改等操作;最后关闭并保存文件。(2)文件打开的模式有多种,包括只读模式“r”“rb”、只写模式“w”“wb”、追加模式“a”“ab”、既可读也可写模式“r+”“w+”“a+”“rb+”“wb+”“ab+”,其中,带“b”的模式表示以二进制文件格式进行操作。(3)进行文件内容的读写操作时推荐使用上下文管理语句with。(4)Python提供了两个写入文件的方法:write()方法用于写入字符串,writelines()方法用于写入字符串序列。(5)Python提供了3个读取文件的方法:read()方法用于读取指定的字节数或全部内容,readline()方法用于读取一行,readlines()方法用于读取所有行。【学生】总结回顾知识点总结知识点,巩固学生对Python中的文件操作相关知识的印象作业布置

(2min)【教师】布置课后作业(1)设计一个学生管理系统,完成学生基本信息(包括学号、姓名和性别)的添加、删除、查询、显示、保存(将数据保存到文件)、读取(从文件读取数据)和退出系统功能。【学生】完成课后任务通过课后作业复习巩固学到的知识,提高实际操作能力教学反思本次课讲授的主要是Python中的文件操作知识点,通过知识点的学习和实践,让学生对Python中的文件操作有了更深入的了解。本次课程以制作学生信息管理系统为任务,引出本次课涉及到的知识点,文件操作是Python应用中的一个基础知识点,通过案例可以让同学实际与理论相结合,真正把学到的知识应用在实际生活中。教学内容实现文件/目录管理器教学目标素质目标:培养学生利用所学知识解决实际问题的能力。知识目标:掌握编写简单的文件读写程序的方法。能力目标:能够使用Python标准库中的文件和文件夹操作模块,实现文件/目录管理器教学重难点教学重点:Python中os模块和shutil模块的使用。教学难点:Python中能够利用所学文件知识点批处理文件,解决实际问题。教学方法案例分析法、问答法、讨论法、讲授法、实训法教学用具电脑、投影仪、多媒体课件、教材教学设计教学过程主要教学内容及步骤设计意图课前任务【教师】布置课前任务,提醒同学通过文旌课堂APP或其他学习软件,完成课前任务请大家自行搜集资料查找批处理文件都有哪些方法,并且预习本任务需要的相关知识点。【学生】完成课前任务通过课前任务,使学生了解本次课的重要性,增加学生的学习兴趣考勤

(2min)【教师】清点上课人数,记录好考勤【学生】班干部交假条培养学生的组织纪律性,掌握学生的出勤情况新课预热

(10min)【教师】与学生简单互动,复习回顾上次课的内容等【学生】聆听、互动【教师】概括本次课总体学习内容,让学生大体了解本次课学习内容前面主要介绍了对文件内容进行操作的方法,接下来介绍文件和文件夹操作,如重命名文件、删除文件、创建文件夹、删除文件夹等。通过老师与学生的互动,并让学生了解这次课的知识点大致要求问题导入(5min)【教师】提出以下问题:(1)C语言有没有批处理文件、文件夹的操作?(2)在windows环境下,都有哪些方法可以实现批处理文件?(3)大家还了解过在哪些环境下的批处理文件操作?【学生】思考、举手回答【教师】通过学生的回答引入要讲的知识通过问题导入的方法,引导学生主动思考,激发学生的学习兴趣传授新知

(30min)一、os模块【教师】讲解Python中的os模块Python标准库的os模块除了提供使用操作系统功能和访问文件系统的简便方法外,还提供了大量文件操作的方法,常用的方法如下表所示。方法说明os.rename(src,dst)重命名(从src到dst)文件或文件夹,如果目录发生改变,即为移动并重命名文件,若目标文件已存在则抛出异常os.remove(path)删除目录为path的文件,如果path是一个文件夹,则抛出异常os.mkdir(path,mode)创建文件夹,要求上级目录必须存在,mode参数为创建文件夹的权限,缺省时创建的文件夹权限为可读可写可执行,如果文件夹已经存在,则抛出异常os.getcwd()返回当前工作目录os.chdir(path)将path设为当前工作目录os.listdir(path)返回path目录下的文件和文件夹列表os.rmdir(path)删除path指定的空文件夹,如果文件夹非空,则抛出异常os.removedirs(path)删除多级目录,目录中不能有文件二、os.path模块【教师】讲解Python中的os.path模块os.path模块提供了大量用于判断路径、获取文件属性的方法,常用的方法如下表所示。方法说明os.path.abspath(path)返回指定文件的绝对路径os.path.split(path)将path分割成目录和文件名,返回一个元组os.path.splitext(path)将path分割成文件名与扩展名,返回一个元组os.path.exists(path)如果指定文件存在,返回True,否则返回Falseos.path.getsize(path)返回指定文件的大小(字节)os.path.getatime(path)返回指定文件最后一次的访问时间os.path.getctime(path)返回指定文件的创建时间os.path.getmtime(path)返回指定文件最后一次的修改时间【教师】小拓展getatime()、getctime()和getmtime()方法分别用于获取文件的最近访问时间,创建时间和修改时间。但返回值是浮点型秒数,可用time模块的gmtime()或localtime()方法换算。三、shutil模块【教师】讲解Python中的shutil模块shutil模块也提供了大量支持文件和文件夹操作的方法,常用的方法如表所示。方法说明shutil.copy(src,dst)复制文件内容及权限shutil.copy2(src,dst)复制文件内容及文件的所有状态信息shutil.copyfile(src,dst)复制文件,不复制文件属性,如果目标文件已存在则直接覆盖shutil.copytree(src,dst)递归复制文件夹内容及状态信息,如果目标文件夹已存在则抛出异常shutil.rmtree(path)递归删除文件夹shutil.move(src,dst)移动文件或递归移动文件夹,也可重命名文件和文件夹【教师】演示例7-15程序【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解通过教师的讲解和演示,使学生了解Python中的os模块、os.path模块和shutil模块的使用任务实施(15min)【教师】带领学生完成任务二✈【教师】提出任务合理利用工具可以有效地提高工作效率,达

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论