教案-第8章 文件和目录4学时_第1页
教案-第8章 文件和目录4学时_第2页
教案-第8章 文件和目录4学时_第3页
教案-第8章 文件和目录4学时_第4页
教案-第8章 文件和目录4学时_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

ADDINCNKISM.UserStyle教案首页

(以2课时为单元)课序14学时2周次教学内容第8章文件和目录(第一次课)8.1文件处理流程8.2文本文件读写8.3二进制文件读写教学目标知识1.理解文件分类(文本/二进制文件)。

2.掌握文件处理流程(打开-读写-关闭)。

3.熟悉open()函数参数及文件打开模式。4.掌握struct模块和pickle模块的文件读写操作。能力1.能使用with语句安全操作文件。

2.能编写文本文件读写代码。素养1.培养资源管理能力(自动关闭文件)。

2.强化数据安全与编码规范意识。教学重点1.文件打开模式(r/w/a/rb/wb等)。

2.文本文件读写方法(read/readline/write)。教学难点1.with语句的底层机制。2.pickle模块读写文件。教学方法手段采用课堂互动讲解+研讨分析,线下提供学习资源多媒体+课后作业教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532教学设计内容导入(5分钟)生活案例:对比临时变量(内存数据)与文件(持久化存储)问题引导:1.“程序运行时数据存于内存,退出后如何保存?”2.“图片、文本、视频在存储本质上有何区别?”内容介绍(75分钟)(一)文件处理流程(25分钟)1.文件概述文本文件:字符序列(需编码,如UTF-8)。二进制文件:字节流(需专用解码,如图像/音频)。2.处理流程3.打开文件—open()函数open(filename,mode='r',encoding=None)参数作用示例filename文件路径"data.txt"mode打开模式"w","rb"encoding编码方式utf-8文件常用的打开模式:模式文件存在文件不存在指针位置r读取报错开头w清空写入新建文件开头a追加写入新建文件结尾4.关闭文件—close()函数5.with语句它自动处理了文件的打开和关闭。【代码举例】withopen("test.txt","r")asfile:content=file.read()(二)文本文件读写(25分钟)1.文本内容读取①read()方法读取从当前位置直到文件末尾的所有内容,返回一个字符串。【代码举例】withopen("咏柳.txt","rt",encoding="utf-8")asfp:print(fp.read())#读取文件的所有内容withopen("三国演义简介.txt","rt",encoding="utf-8")asfile:print(file.read(10))#读取文件的前10个字符②readline()方法逐行读取(适合大文件),返回一个字符串对象,内容是读取到的字符串。【代码举例】withopen("咏柳.txt","rt",encoding="utf-8")asfile:#打开文件line=file.readline() #读取一行whileline: #判断是否是文件末尾print(line,end="") #打印读取的一行line=file.readline() #读取新的一行③readlines()方法readlines()方法读取从文件当前位置到文件末尾的所有行,返回列表。【代码举例】withopen("咏柳.txt","rt",encoding="utf-8")asfile:#打开文件lines=file.readlines() #按行读取文件所有内容,返回一个列表forlineinlines:line=line.strip() #去掉每行头尾空字符print(line,end="") #按行输出数据2.数据写入①write()方法write()

方法用于向一个打开的文件中写入指定的字符串。【代码举例】withopen("write.txt","w",encoding="utf-8")asfile:file.write("一万年太久,只争朝夕。\n")#写入字符串并添加换行符file.write("自信人生二百年,会当击水三千尺。\n")②writelines()方法writelines()方法在文件中写入一个字符串列表。【代码举例】读取文本文件data.txt中的所有整数,并按照升序排序后写入文本文件data_desc.txt中。withopen("data.txt","r")asfp:data=fp.readlines() #读取所有数据,放入到列表中data=[int(line.strip())forlineindata] #提取每行的数据,删除两端空白字符data.sort(reverse=False) #原地排序data=[str(i)+"\n"foriindata] #生成要写入的列表内容withopen("data_desc.txt","w")asfp:fp.writelines(data)(三)二进制文件读写(25分钟)与文本文件不同,二进制文件可读性较差,它是以二进制代码形式呈现的。二进制文件读写时经常用到序列化和反序列化操作。1.内容读取二进制文件的读取,需要使用open()函数先把二进制文件打开,打开后调用read()方法进行读取。read()方法读取的是二进制的bytes字节串,不能直接显示内容,否则会出现乱码。【代码举例】withopen("三国演义简介.bin","rb")asfile:content=file.read() #读取二进制文件的内容print(content) 2.数据写入通过write()方法,可以将字节串写入文件。【代码举例】withopen("三国演义简介.txt","r",encoding="utf-8")asfile:content=file.read() #读取到的是字符串withopen("三国演义简介.bin","wb")asfile: #以二进制写入的方式打开文件file.write(content.encode('utf-8')) #使用encode进行编码,转换为bytes字节串3.struct模块读写文件struct模块常用的函数是pack()和unpack()。pack()函数是进行打包的,它可以把Python对象按照指定格式进行序列化(转换为字节串)。unpack()函数是进行解包的,它可以把字节串转回到原来的Python对象。pack()和unpack()的语法格式如下:struct.pack(格式字符串,对象表) #序列化struct.unpack(格式字符串,字节表) #反序列化4.pickle模块读写文件pickle模块拥有dump()和load()函数。dump()函数是将对象进行序列化写进文件中。而load()函数是从文件中读取数据进行反序列化。dump()函数和load()函数的语法格式如下:pickle.dump(data,file)#序列化数据对象保存到file文件 pickle.load(file)#从文件中读取数据反序列化课堂讨论(5分钟)1.什么是序列化,什么是反序列化,它们有什么区别?2.为什么w模式会清空原文件?内容小结(3分钟)1.文件操作三要素:打开→处理→关闭。2.文本文件优先使用with语句。3.struct模块和pickle模块的读写。作业(2分钟)1.创建poem.txt,写入《咏柳》全诗。2.读取data.txt中的整数,排序后写入data_desc.txt。课堂组织【教师活动】1.案例引导2.互动实操【学生活动】1.分组讨论2.绘制文件操作思维导图ADDINCNKISM.UserStyle教案首页(以2课时为单元)课序15学时2周次第8教学周教学内容第8章文件和目录8.4CSV和JSON文件读写8.5文件操作8.6目录操作8.7案例实战教学目标知识1.掌握csv模块读写CSV文件的方法。

2.掌握json模块序列化、反序列化数据的用法。

3.熟悉os模块的文件/目录操作。

4.能够运用文件目录知识完成综合案例开发。能力1.能独立完成结构化数据文件的读写处理。

2.能实现本地文件、目录的操作。3.能迁移知识解决实际场景中的文件处理需求。素养1.养成操作前校验路径、异常处理的安全编程意识。

2.培养结构化思维,规范数据存储与读取流程。

3.提升代码复用能力,养成模块化开发习惯。教学重点csv/json文件读写、os模块文件与目录操作教学难点JSON序列化与反序列化的类型映射教学方法手段采用课堂互动讲解+研讨分析,线下提供学习资源多媒体+课后作业教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532

教学设计内容导入(5分钟)【教师活动】1.回顾上节课文件读写基础:文本文件、二进制文件的打开模式差异,提问学生,“如果要存储表格类数据、前后端交互数据,直接用txt文件有什么弊端?”2.引出本节课主题:结构化数据文件(CSV/JSON)读写、文件/目录批量操作。【学生活动】跟随提问回忆旧知,思考日常接触到的Excel表格、网页接口数据的存储形式,明确本节课学习目标。内容介绍(75分钟)(一)CSV和JSON文件读写(25分钟)1.CSV文件读写讲解CSV文件的定义:逗号分隔的纯文本表格数据,适合存储二维结构化数据。(1)演示csv.writer()写文件:强调open()参数需加newline=""、encoding="utf-8"避免空行和中文乱码。(2)演示csv.reader()读文件:逐行遍历读取内容,说明返回值是列表结构。(3)讲解代码清单8-10,运行代码,展示执行结果。【代码8-10】importcsv#打开(或创建)CSV文件withopen('user.csv','w',newline='',encoding='utf-8')ascsvfile:csv_writer=csv.writer(csvfile)csv_writer.writerow(['姓名','年龄','居住地'])#写入标题行,单行写入csv_writer.writerow(['李鑫',35,'北京'])#写入数据行,单行写入csv_writer.writerow(['王双如',30,'西安'])csv_writer.writerow(['李依依',22,'重庆'])withopen('user.csv','r',newline='',encoding='utf-8')ascsvfile:csv_reader=csv.reader(csvfile) #读取数据行forrowincsv_reader:print(row)2.JSON文件读写(1)介绍JSON的定位:轻量级跨平台数据交换格式,对比Python字典、列表的结构相似性。(2)讲解json模块4个核心方法。(3)讲解代码清单8-11,运行代码,展示执行结果。【代码8-11】importjsondata={'name':'Lily','age':22,'city':'Beijing'}json_str=json.dumps(data)#对字典进行序列化print(json_str) #结果是:{"name":"Lily","age":22,"city":"Beijing"}oridata=json.loads(json_str)#反序列化,还原对象print(oridata) #结果是:{'name':'Lily','age':22,'city':'Beijing'}withopen("./student.json","w")asfile:json.dump(data,file)withopen("./student.json","r")asfile:print(json.load(file))(二)文件操作(15分钟)1.讲解os、shutil模块常用操作。(1)基础校验:os.path.exists()判断路径是否存在、os.path.isfile()判断是否为文件、os.path.abspath()获取绝对路径。(2)增删改:os.rename()重命名、os.remove()删除文件、shutil.copy()复制文件。(3)讲解代码清单8-12、8-13,演示文件操作的流程。【代码8-12】importos #导入os模块#列出当前目录下的文件和子目录print("目录为:%s"%os.listdir(os.getcwd()))os.rename("test.txt","test1.txt") #重命名文件print("重命名成功!")print("重命名后目录为:%s"%os.listdir(os.getcwd()))os.remove("test1.txt")print("删除成功!")print("删除后目录为:%s"%os.listdir(os.getcwd()))【代码8-13】fromos.pathimportexists,abspathimportshutilifnotexists(r".\1.py"): #当前目录下1.py文件不存在withopen(r".\1.py","wt")asfp: #创建1.py文件fp.write("print('helloworld!')\n")filename=shutil.copy("./1.py","d:/data") #复制1.py到d:\data目录下print(abspath("1.py")) #打印1.py文件所在的绝对路径(三)目录操作(20分钟)1.基础操作:os.mkdir()创建单级目录、os.makedirs()创建多级目录、os.getcwd()获取当前目录、os.chdir()切换工作目录、os.listdir()查看目录内容。2.路径处理:os.path.join()拼接路径(避免不同系统路径分隔符不兼容)、os.path.split()/splitext()拆分路径、os.path.isdir()判断是否为目录。3.高级遍历:os.walk(path)的工作逻辑:每次迭代返回(当前目录路径,子目录列表,文件列表),演示递归遍历目录下所有文件的方法。4.讲解代码清单8-14,展示批量给文件/目录添加前缀的实现过程。importos,os,path #导入os模块folderName='./renameDir/'#获取指定路径下所有文件和子目录的名字dirList=os.listdir(folderName)for

温馨提示

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

评论

0/150

提交评论