版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python编程基础项目八文件与异常处理8.1.1
文件的打开与关闭目录8.1.1文件打开与关闭8.1.2文件读取操作8.1.3文件写入操作8.1.4CSV文件的读写8.1.5文件编码Python编程基础8.1.1文件打开与关闭Python编程基础学习内容理解文件打开与关闭的基本概念和作用;掌握文件打开与关闭的基本语法和参数使用,能够正确使用open()函数打开文件,并根据需求选择合适的文件打开模式;熟悉文件打开的各种模式及其区别,以及能够使用close()方法正确关闭文件。Python编程基础什么是文件打开操作文件打开=建立连接通道文件打开过程:创建程序与文件的连接获得文件访问权限准备数据传输通道open()函数:用于打开文件并返回文件对象,若文件不存在会自动创建新文件。语法:file=open("文件名","打开模式")注:文件名是文件的绝对路径或相对路径Python编程基础文件打开模式#
1.读取模式(只读)file=open("data.txt","r")#2.写入模式(清空重写)file=open("data.txt","w")#3.追加模式(尾部添加)file=open("data.txt","a")Python编程基础注意:"w"模式清空文件原有内容!
文件不存在时,"r"会报错,"w"和"a"会创建新文件文件编码格式
open()
函数中可以使用“encoding”参数指定文件编码格式
语法:file=open("data.txt","r",encoding="utf-8")注:如果写入和读取时使用的编码规则不一致,可能导致文件乱码。
文件关闭文件关闭=完成操作+释放资源不关闭文件的后果:🚫资源泄漏(内存被占用)🚫数据丢失(缓冲区未写入)🚫文件锁定(其他程序无法访问)🚫系统性能下降Python编程基础文件关闭函数close()
是文件对象的方法,用于终止程序与文件的连接。基本语法:file_object.close()Python编程基础手动关闭文件传统方式:显式关闭#步骤1:打开文件file=open("example.txt","w")#步骤2:进行文件操作file.write("Hello,World!")#步骤3:关闭文件(必须!)file.close()手动关闭文件#危险示例file=open("test.txt","w")file.write(data)#如果这里出错file.close()#这行不会执行!⚠️风险:
如果写入数据出现错误,close()可能不会执行!自动关闭文件推荐方式:使用with语句
#安全的方式-with语句
withopen("example.txt","w")asfile:file.write("Hello,World!")#文件会自动关闭!自动关闭文件with语句的优势:✅自动关闭文件✅异常安全✅代码简洁✅避免遗忘关闭工作原理:
离开with代码块时,自动调用close()实战小练习任务目标:
创建空文件,并验证文件是否创建#创建一个空的配置文件print("正在创建配置文件...")withopen(“config.txt”,“w”,encoding=“utf-8”)asfile:print("✅文件创建成功!")print("✅文件已自动关闭")#验证文件是否创建importosifos.path.exists("config.txt"):print("🎉文件确实存在!")else:print("❌文件创建失败")总结回顾关键知识点文件打开使用open()函数选择合适的模式文件关闭重要性:资源释放、数据安全方法:close()或with语句最佳实践总是使用with语句8.1.2文件读取操作Python编程基础学习内容文件的读取方式文件的写入方式读取与写入的综合应用Python编程基础读取文件:read()示例代码:withopen('test.txt','r')asf:content=f.read()print(content)讲解要点:read():一次性读取文件所有内容返回的是一个字符串适合内容较小的文件Python编程基础读取文件:readline()
示例代码:withopen('test.txt',‘r‘,encoding='utf-8')asf:line1=f.readline()print(line1)line2=f.readline()print(line2)讲解要点:每次只读取一行指针会自动移动到下一行test.txt文件内容:----------------第1行:Python第2行:Java第3行:C++读取文件:按行遍历示例代码:withopen('test.txt','r')asf:forlineinf:print(line)强调:最常用、最推荐的读取方式适合大文件节省内存Python编程基础写入文件:write()示例代码:withopen('test.txt','w')asf:f.write('HelloPython')讲解要点:write()不会自动换行写入的是字符串w模式会清空原内容Python编程基础写入多行内容示例代码:withopen('test.txt','w')asf:f.write('第一行\n')f.write('第二行\n')说明:换行需要手动写\n追加写入:a模式示例代码:withopen('test.txt','a')asf:f.write('新追加的一行\n')适用场景:日志记录保存程序运行结果综合示例:边读边写示例:复制文件内容withopen('a.txt','r')asf1:withopen('b.txt','w')asf2:forlineinf1:f2.write(line)讲解要点:实际开发中非常常见读取+写入的组合应用综合示例(进阶):读取内容并处理后写入新文需求说明:从score.txt中读取学生成绩,只保留及格(≥60)的学生,并写入到新文件pass.txt中。score.txt文件内容示例:张三78李四59王五92赵六45综合示例(进阶):读取内容并处理后写入新文示例代码:withopen('score.txt','r')asf1:withopen('pass.txt','w')asf2:forlineinf1:name,score=line.split()ifint(score)>=60:f2.write(line)讲解要点:split():把一行内容拆分成多个部分int():将字符串成绩转成整数结合if条件进行筛选这是“读取+处理+写入”的完整流程常见易错点忘记加\n导致内容挤在一行使用w模式误删原文件写入非字符串类型(需要str())课堂总结本节核心:3种常见读取方式使用write()写入和追加内容读取和写入可以组合使用8.1.3文件写入操作Python编程基础学习内容Python编程基础open()打开文件写入模式:"w"、"a“基本写入方法:write()简单示例:f=open("test.txt","w",)f.write("HelloWorld")f.close()问题引入:如果多次写入怎么办?写入大量数据是否安全?如何写入列表、字典等数据?文件写入模式的深入理解1.常见写入模式对比w:写入(覆盖原内容)a:追加写入(不覆盖)x:独占写入(文件存在则报错)2.文本模式vs二进制模式文本模式:"w"、"a"二进制模式:"wb"、"ab“withopen("data.bin","wb")asf:f.write(b"abc")强调:图片、音频、视频等→二进制模式Python编程基础缓冲区与写入时机1.写入不一定立刻落盘write()先写入缓冲区程序结束或文件关闭时才真正写入磁盘f=open("test.txt","w")f.write("Hello")#此时内容可能还在缓冲区2.flush()的作用f.write("World")f.flush()#强制写入磁盘说明:日志程序中常用异常退出前可避免数据丢失一次写多行:writelines的使用1.writelines()方法接收一个可迭代对象(如列表)不会自动添加换行符lines=["第一行\n","第二行\n","第三行\n"]withopen("test.txt","w",)asf:f.writelines(lines)2.对比write()write():适合少量、单条内容writelines():适合批量写入Python编程基础写入常见数据类型1.写入列表data=[1,2,3,4]withopen("data.txt","w")asf:foriindata:f.write(str(i)+"\n")Python编程基础2.写入字典user={"name":"Tom","age":18}withopen("user.txt","w")asf:fork,vinuser.items():f.write(f"{k}:{v}\n")3.简要引出JSON复杂数据→json.dump()文件写入中的常见问题1.内容被覆盖原因:误用w模式解决:需要保留内容时使用a2.写入失败但不报错原因:缓冲区未刷新解决:关闭文件或使用flush()3.writelines没有换行原因:方法本身不自动添加解决:在字符串中手动加换行符课堂总结本节课要点理解不同写入模式的区别掌握with语句写文件学会批量写入数据能写入常见数据结构8.1.4CSV文件的读写Python编程基础学习内容Python编程基础了解什么是CSV文件掌握Python中CSV模块的基本用法使用Python读取CSV文件数据使用Python将数据写入CSV文件什么是CSV文件CSV(Comma-SeparatedValues):一种纯文本数据文件格式,使用逗号分隔数据字段,常用于:Excel数据导出数据分析数据交换。示例name,age,scoreAlice,20,90Bob,21,85Python编程基础为什么用CSV格式简单,易读易写几乎所有数据工具都支持适合中小规模结构化数据Python内置支持,无需额外库Python中操作CSV的方式Python提供了内置模块:csv模块常用功能:csv.reader()——读取CSVcsv.writer()——写入CSVcsv.DictReader()——按列名读取csv.DictWriter()——按列名写入Python编程基础读取CSV文件使用csv.reader基本步骤:打开文件创建reader对象逐行读取数据Python编程基础示例代码:importcsvwithopen('data.csv','r',encoding='utf-8')asf:reader=csv.reader(f)forrowinreader:print(row)读取结果说明每一行数据是一个列表示例输出:['name','age','score']['Alice','20','90']['Bob','21','85‘]注意:所有数据默认都是字符串类型按列名读取CSV使用csv.DictReader示例代码:importcsvwithopen('data.csv','r',encoding='utf-8')asf:reader=csv.DictReader(f)forrowinreader:print(row)输出特点:每一行是一个字典键为表头字段名写入CSV文件使用csv.writer基本步骤:打开文件(写模式)创建writer对象写入数据行示例代码:importcsvwithopen('output.csv','w',newline='',encoding='utf-8')asf:writer=csv.writer(f)writer.writerow(['name','age','score'])writer.writerow(['Alice',20,90])写入时的注意事项使用newline=''避免空行问题(Windows)编码建议使用utf-8写入前会覆盖原文件按列名写入CSV使用csv.DictWriter示例代码:importcsvwithopen('output.csv','w',newline='',encoding='utf-8')asf:fieldnames=['name','age','score']writer=csv.DictWriter(f,fieldnames=fieldnames)writer.writeheader()writer.writerow({'name':'Bob','age':21,'score':85})常见错误与提醒忘记导入csv模块文件路径错误编码不一致导致中文乱码写文件时忘记newline=''应用场景举例学生成绩管理用户信息导入导出日志数据处理数据分析前的数据准备课堂总结CSV是常用的数据文件格式Python内置csv模块即可操作掌握:读取:reader/DictReader写入:writer/DictWriter8.1.5文件编码Python编程基础学习内容Python编程基础理解什么是字符编码认识常见编码类型掌握Python中文件编码的正确用法常见乱码现象实际开发/学习中常见情况:文本文件中文显示异常运行程序报错:UnicodeDecodeError结论:👉这些问题,大多和文件编码有关Python编程基础计算机真的“认识”文字吗?计算机底层只能识别:0和1(二进制)那文字怎么办?必须用数字来表示👉这就需要一种规则:字符编码什么是字符编码字符编码的本质:建立“字符↔数字”的对应关系举例理解:字母A→65中文“中”→一组数字不同编码规则不同:同一串数字,用不同规则解释,结果就不同Python编程基础常见字符编码介绍ASCII早期编码只能表示英文、数字、符号GBK中文编码Windows系统中较常见UTF-8支持所有语言Python3默认推荐跨平台、通用性最好Python编程基础文件读写与编码的关系文件操作其实分两步:1写文件:字符串→字节这个过程叫编码(encode)2读文件:字节→字符串这个过程叫解码(decode)规则必须一致,否则就会出问题Python中如何指定编码在Python中:使用open()函数操作文件通过encoding参数指定编码推荐写法(强调):明确写encoding='utf-8'📌好习惯:不依赖系统默认编码代码更稳定、可移植常见错误分析典型错误:UnicodeDecodeError:'gbk'codeccan'tdecode...原因分析:文件真实编码是UTF-8却用GBK去读取解决思路:尝试不同编码用编辑器查看文件编码项目统一使用UTF-8课堂小示例示例说明:创建一个包含中文的文本文件用UTF-8写入再用UTF-8读取示例1:用UTF-8正确写入中文文件withopen("test.txt","w",encoding="utf-8")asf:f.write("你好,Python文件编码!")示例二:用UTF-8正确读取文件withopen("test.txt","r",encoding="utf-8")asf:content=f.read()print(content)课堂总结本节课重点回顾:字符编码是“翻译规则”中文乱码的根本原因是编码不一致Python文件操作时要主动指定编码UTF-8是首选方案一句话总结:写文件和读文件,用同一种编码Python编程基础Python编程基础项目八文件与异常处理8.2
异常处理目录8.2.1异常处理基础8.2.2异常处理的基本结构8.2.3异常处理的高级用法8.2.4自定义异常Python编程基础8.2.1异常处理基础Python编程基础一
异常的示例与概念
示例:计算平方根程序importmathn=input("Enter:")n=float(n)#可能出错!print(math.sqrt(n))输入无效数据时textEnter:12aValueError:couldnotconvertstringtofloat:'12a'程序直接崩溃!Python编程基础一、
异常的示例与概念1什么是异常?
异常就是程序在运行过程中发生的错误或意外情况。2什么是异常处理?
当错误发生时,我们不是让程序直接崩溃,而是捕获这个错误,然后采取相应的措施。Python编程基础
二、异常处理语句try/except基本语法try:#可能出错的代码
可能出错的语句except:#出错时执行的代码
处理错误的语句Python编程基础
二、异常处理语句try/except改进后的平方根程序importmathn=input("Enter:")try:a=float(n)print(math.sqrt(a))print("done")except:print(“发生了错误!”)print("程序结束了")#程序继续执行!Python编程基础执行结果:Enter:12a发生了错误!程序结束了程序没有崩溃!
三、异常处理执行流程改进后的平方根程序iprint("start")try:print("divided")n=1/0#这里出错!print("finish")#这行不会执行exceptExceptionaserr:print(err)#输出:divisionbyzeroprint("end")Python编程基础执行过程:执行try块中的语句遇到异常立即跳转至except块try块中剩余语句被跳过执行except块后继续后续代码
四、基础练习
安全的除法器defsafe_calculator():try:a=float(input("请输入第一个数字:"))b=float(input("请输入第二个数字:"))result=a/bprint(f"{a}÷{b}={result}")exceptValueError:print("错误:请输入数字")exceptZeroDivisionError:print("错误:除数不能为零")Python编程基础
五、常见应用场景:文件读写异常处理try:withopen("data.txt","r")asfile:#with语句自动处理文件关闭content=file.read()print(content)exceptFileNotFoundError:print("文件不存在,创建新文件")withopen("data.txt","w")asfile:file.write("这是新文件")exceptPermissionError:print("没有文件访问权限")Python编程基础
六、总结与要点核心语法掌握try/except:捕获和处理异常编程习惯培养对不可靠操作添加异常处理Python编程基础8.2.2异常处理的基本结构Python编程基础一try-except-else语句try:#可能出错的代码...except异常类型:#异常处理代码...else:#没有异常时执行的代码...用途:try:尝试执行可能出错的代码except:捕获并处理异常else:无异常时执行的代码块(可选)二
try-except-finally语句try:#可能出错的代码...except异常类型:#异常处理代码...finally:#无论是否发生异常都会执行的代码#常用于清理资源...用途:finally:无论是否异常都会执行常用于:关闭文件、释放数据库连接等清理工作三
完整结构示例Python编程基础try:file=open("data.txt","r")content=file.read()exceptFileNotFoundError:print("文件不存在")exceptPermissionError:print("没有文件访问权限")exceptExceptionase:print(f"发生未知错误:{e}")else:print("文件读取成功")finally:if'file'inlocals()andnotfile.closed:file.close()print("文件已关闭")四
完整结构解析执行流程:1try:尝试打开并读取文件2except:
FileNotFoundError→
文件不存在
PermissionError→
无权限
Exception→
其他未知异常
3else:无异常
→
打印“文件读取成功”
4finally:始终执行
→
确保文件关闭
Python编程基础
五else与finally的区别Python编程基础elsefinally仅在无异常时执行无论是否异常都会执行用于处理正常流程用于资源清理、收尾工作可选可选,但强烈推荐用于资源管理六
使用建议与最佳实践建议
1
使用
多个except块
精准捕获异常2finally中释放资源(文件、连接等)3else中放置正常逻辑,使结构清晰4避免空except(except:),应明确异常
类型原则1明确异常类型2资源及时释放
3结构清晰易读
七
总结1try-except:基础捕获结构2try-except-else:增加正常逻辑分支3try-except-finally:确保资源清理4完整结构:结合所有部分,实现健壮处理
一句话原则:
精准捕获,明确处理,及时清理Python编程基础8.2.3异常处理的高级用法Python编程基础
一、异常的抛出(raise)基本用法defvalidate_age(age):ifage<0:raiseValueError("年龄不能为负数")ifage>150:raiseValueError("年龄不合理")returnagePython编程基础
一、异常的抛出(raise)使用示例try:validate_age(-5)exceptValueErrorase:print(f"验证失败:{e}")try:validate_age(200)exceptValueErrorase:print(f"验证失败:{e}")Python编程基础raise的作用主动触发异常用于参数验证和业务逻辑检查提供清晰的错误信息遵循"尽早失败"原则使用场景函数参数验证业务规则检查前置条件检查错误状态报告
一、异常的抛出(raise)ValueError值错误try:num=int("abc")#无法转换为整数exceptValueError:print("请输入有效的数字")ZeroDivisionError除零错误try:result=10/0exceptZeroDivisionError:print("除数不能为零")
二、常见异常类型TypeError-类型错误try:result="hello"+123exceptTypeError:print("类型不匹配")IndexError-索引错误try:lst=[1,2,3]print(lst[10])exceptIndexError:print("索引超出范围")
二、常见异常类型FileNotFoundError文件不存在try:withopen("不存在的文件.txt","r")asf:content=f.read()exceptFileNotFoundError:print("文件不存在")
二、常见异常类型
三、异常的捕获方法1:多个except块try:num=int(input("输入数字:"))result=100/numexceptValueError:print("请输入有效的数字")exceptZeroDivisionError:print("除数不能为零")Python编程基础
三、异常的捕获方法2:一个except块捕获多个异常try:try:#可能出错的代码...except(ValueError,TypeError)ase:print(f"输入错误:{e}")Python编程基础
三、异常的捕获方法3:捕获所有异常(谨慎使用)try:#可能出错的代码...exceptExceptionase:print(f"发生错误:{type(e).__name__}:{e}")Python编程基础raise:主动抛出异常常见异常类型:ValueError、TypeError、FileNotFoundError等try-except:捕获和处理异常
四、总结与要点8.2.4自定义异常Python编程基础一、自定义异常的定义核心定义自定义异常是通过继承Python内置的Exception类创建的新异常类型,用于区分特定的业务错误。关键原则1.必须继承Exception类,避免捕获系统级异常(如KeyboardInterrupt)。2.命名应见名知意,如UserNotFoundError。3.可添加文档字符串说明异常用途。基础语法示例#定义基础自定义异常classMyCustomError(Exception):"""这是一个自定义异常的示例"""pass#定义带参数的自定义异常classUserNotFoundError(Exception):def__init__(self,user_id):self.user_id=user_idsuper().__init__(f"用户{user_id}不存在")Python编程基础二、自定义异常的抛出与捕获抛出(Raise)使用raise关键字主动抛出异常。语法:raise异常名(参数)捕获(Catch)使用try...except结构精准捕获。可结合else和finally完善流程。#1.定义异常类classNotLoginError(Exception):pass#2.业务逻辑抛出异常defview_profile():ifnotis_login:raiseNotLoginError("请先登录")#3.捕获并处理异常try:view_profile()exceptNotLoginErrorase:print(f"错误:{e}")Python编程基础三、实战示例:基础用法场景:用户登录验证,密码错误时抛出异常#1.定义带参数的自定义异常classPasswordError(Exception):"""密码错误异常,包含出错的用户ID"""def__init__(self,user_id):self.user_id=user_idsuper().__init__(f"用户{user_id}的密码输入错误")#2.业务逻辑函数defuser_login(user_id,password):correct_password="secure123"ifpassword!=correct_password:#3.抛出异常raisePasswordError(user_id)print(f"用户{user_id}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湛江市坡头区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 临沂市郯城县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 吕梁市兴县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 十堰市茅箭区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 乌兰察布盟察哈尔右翼后旗2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 葫芦岛市连山区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 铁岭市铁岭县2025-2026学年第二学期四年级语文第六单元测试卷(部编版含答案)
- 西宁市城北区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 品鉴会活动方案
- 深度解析(2026)《CBT 4292-2013启闭式拖缆孔》
- 梦幻西游协议书
- 创业小财税知识培训课件
- 公路工程监理旁站实施方案
- 引航安全体系培训课件
- 十年(2016-2025)高考化学真题分类汇编:专题10 铁、铜及其化合物(解析版)
- 采购部门绩效考核指标及评分标准
- 2022年3月天津高考英语真题(含答案)
- 门店2人合伙合同范本
- 基于PLC技术的电动汽车充电系统设计
- 血站院感培训课件
- 涂炭铝箔行业知识培训
评论
0/150
提交评论