
python3基础梳理10异常处理|文件读取|文件写入
发布日期:2021-05-08 13:19:04
浏览次数:20
分类:精选文章
本文共 2260 字,大约阅读时间需要 7 分钟。
异常处理
异常处理是程序中处理错误和异常的重要机制,可以帮助我们更好地管理代码中的错误情况,避免程序崩溃,提高代码的健壮性。Python中的异常处理包括try、except、else、finally这些关键字,它们各自有不同的作用和用途。
处理单个异常:try/except
try语句用于包围可能会抛出异常的代码块。当try中的代码抛出异常时,except语句可以捕获该异常并进行处理。例如,试图打开一个不存在的文件时,try里面的open函数会抛出FileNotFoundError异常,except可以捕获这个错误并做相应的处理。
try: file = open('test', 'rb')except IOError as e: print('An IOError occurred. {}'.format(e.args[-1]))
处理多个异常:多个except语句
如果你想处理多个异常类型,可以在except语句中列出多个异常类型。例如,以下代码可以捕获IOError和EOFError两种异常:
try: file = open('test', 'rb')except (IOError, EOFError) as e: print("An error occurred. {}".format(e.args[-1]))
处理所有异常:Exception
如果你想捕获所有可能的异常,可以使用Exception基类。以下代码可以捕获所有的异常类型:
try: file = open('test', 'rb')except Exception as e: print('All exceptions {}'.format(e.args))
脚本执行之后做清理工作:finally
finally语句用于在异常处理完成后执行一些代码,常用于在脚本执行之后做清理工作。例如,确保文件被正确关闭:
try: file = open('test', 'rb')except IOError as e: print('An IOError occurred. {}'.format(e.args[-1]))finally: print("This would be printed whether or not an exception occurred!")
没有触发异常的时候执行一些任务:try/else
如果try语句块中的代码没有抛出异常,else语句会执行。例如,当代码没有抛出异常时,else中的代码会运行:
try: print('I am sure no exception is going to occur!')except Exception: print('exception')else: print('This would only run if no exception occurs. And an error here would NOT be caught.')finally: print('This would be printed in every case.')
主动触发某个异常类型:raise
raise语句可以用来主动触发某个异常类型。例如,以下代码可以主动触发IOError异常:
try: raise IOError('一个主动触发的异常类型')except Exception as e: print(e.args)
满足某个条件触发异常:assert
assert语句可以用来在某个条件不满足时触发异常。例如,以下代码会在bool判断为False时触发AssertionError异常:
try: assert False, "前面bool判断为False是触发异常"except Exception as e: print(e.args)
文件读写
Python中的文件读写是日常编程中常用的操作,掌握好open函数和读写模式可以让我们的代码更高效、更可靠。
python3中open函数
open函数是Python中用于打开文件的核心函数,其语法如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
mode参数指定打开模式,常用的模式包括:
- 'r':读取模式(默认)
- 'w':写入模式(覆盖已有内容)
- 'x':排他性创建(如果文件不存在则创建,否则失败)
- 'a':追加写入(如果文件已存在则在末尾追加)
- 'b':二进制模式
- 't':文本模式(默认)
- '+':更新磁盘文件(读取并写入)
一次读取整个文件
以下代码可以读取文件的全部内容:
file = './test.txt'with open(file, encoding='gbk') as f: contents = f.read()print(contents)
逐行读取文件
以下代码可以逐行读取文件内容:
file = './test.txt'with open(file) as f: for line in f: line = line.strip() print(line)
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月11日 14时46分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
koa2 中间件里面的next到底是什么
2019-03-06
在create-react-app创建的项目下允许函数绑定运算符
2019-03-06
博客园新闻频道开始公开测试
2019-03-06
评论表聚集索引引起的评论超时问题
2019-03-06
博客园上海俱乐部4月份活动通知邀请函已经发出!
2019-03-06
上周热点回顾(5.24-5.30)
2019-03-06
Internet Explorer 10 专题上线
2019-03-06
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
上周热点回顾(12.31-1.6)
2019-03-06
上周热点回顾(1.21-1.27)
2019-03-06
上周热点回顾(6.3-6.9)
2019-03-06
上周热点回顾(8.12-8.18)
2019-03-06
【故障公告】升级阿里云 RDS SQL Server 实例故障经过
2019-03-06
蹒跚来迟:新版博客后台上线公测
2019-03-06
上周热点回顾(9.16-9.22)
2019-03-06
上周热点回顾(11.4-11.10)
2019-03-06
[网站公告]11月26日00:00-04:00阿里云RDS升级
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(12.16-12.22)
2019-03-06