Python中如何处理常见报错


Posted in Python onJanuary 18, 2022

1.首先是常见的语法错误。
2.然后是基础语法中的常见异常。
3.最后是操作文件过程中的常见异常,这部分也是重难点知识。

这是我们在终端比较常见的报错信息:

Python中如何处理常见报错

 按照 Python 官方文档的定义,我们在终端见到的“错误消息”至少可以被分为两类:语法错误(syntax errors)和异常(exceptions) 。

语法错误(syntax errors)是初学者最容易犯的错误,简单来说就是代码不符合 Python 的基本语法规范而导致程序出了问题。 

当你的代码完全符合 Python 的语法规范后,就该尝试运行程序了。但在程序运行过程中,还是有可能会发生问题,我们把这类问题称为异常(exceptions)。

比如两种常见的语法错误 SyntaxError 和 IndentationError 以及它们产生的原因和相应的解决办法。

首先我们来看看 SyntaxError 。

第一种:SyntaxError: invalid syntax(无效语法),这是语法错误中最常见的一种了,通常是由下面几种情况引起的:

一、遗漏了标点符号。
二、关键字拼写错误或遗漏。
三、变量名或函数名使用了关键字。

第二种:SyntaxError: invalid character in identifier(标识符中有无效字符),这种错误一般是由于代码里使用了大量中文符号,比如中文括号,中文逗号,中文冒号和中文引号。这有可能是你在写代码时频繁地切换中英文输入法所造成的。

第三种:SyntaxError: EOL while scanning string literal(检查到不完整的字符串),这种情况通常是因为遗漏了字符串两边的引号,或者混用了引号(即字符串两边的引号不统一)。解决办法也很简单,仔细检查字符串两头的引号是否有遗漏,而且需要记住,单引号和单引号匹配,双引号和双引号匹配,三引号和三引号匹配。

图片总结一下:

Python中如何处理常见报错

 第二个要介绍的常见语法错误就是 IndentationError,即缩进错误。 在 Python 中,冒号下面的缩进会帮助程序区分代码之间的层次,这些不同的层次代表了代码运行的逻辑及先后顺序。但如果在需要缩进的语句下面没有使用正确的缩进层级,甚至没有使用缩进,程序就会报错。

比如两种常见的缩进错误:

第一种:IndentationError: expected an indented block(需要缩进的代码块),这种多半是由于某些需要缩进的地方没有缩进导致的,修复这种缩进错误的方法也十分简单 —— 对症下药,理清代码的运行顺序与逻辑,在应该缩进的地方(例如:if 条件判断,for 循环,while 循环,def 函数定义,class 类的创建)加入缩进即可。

第二种:IndentationError: unindent does not match any outer indentation level(缩进内容不匹配任何一个层级),这种主要是因为某一行的缩进没有和其他位置对齐使得程序无法找到匹配的代码块导致的,解决办法就需要我们理清代码块的层级并将缩进对齐。

总结如下:

Python中如何处理常见报错

 接着我们来看看基础语法中常见的异常,第一个要介绍的是基础语法中常见的异常 TypeError,即类型错误。 

区分异常和错误的方法就需要我们去观察终端的提示信息,一般情况下,异常的“错误消息”会显示Traceback (most recent call last),而语法错误就不会显示。 

下面列举三种较为常见的类型错误:

第一种:TypeError: unsupported operand type(s) for …(不支持的运算)

第二种:TypeError: can only concatenate str (not "int") to str (只能用字符串拼接字符串)

第三种:TypeError: 'xxx' object is not iterable(对象不可被迭代)

具体的解决方法可以结合下图:

Python中如何处理常见报错

一句话总结:为了避免类型错误,你需要确定自己使用的数据类型是什么(可以借助 type()),需要进行的操作是什么,从而去确认是否需要使用函数来进行类型转换。

第二种异常是IndexError ,这个异常,和列表取值有关。 出现频率较高的索引错误是 IndexError: list index out of range(索引超出了范围),在列表中使用索引取值时,一定要确保索引在正确的范围区间内。

最后,我们讲了几种操作文件过程中的常见异常。第一种是 ModuleNotFoundError 未找到模块错误,是一种有关模块的异常,解决这个异常的方法十分简单,只要你在导入模块时仔细检查模块的拼写是否正确即可。

第二种是 AttributeError 属性错误 ,为了避免这种异常,我们在使用模块中的方法时,需要先检查拼写是否正确,确认拼写无误后,再检查模块或库中是否存在该方法或属性。

第三种是 FileNotFoundError 文件找不到的错误,为了避免这种异常,我们需要按照路径找到对应的文件或文件夹,检查文件或文件夹名是否正确。

最后一种是 UnicodeDecodeError 即编码解码错误,它也是 open() 函数的另一个参数 encoding 会引发的异常,之前课程讲的写法是 encoding = 'utf-8',这是因为,大部分工作场景的文件编码格式都是 'utf-8'。但如果你需要使用别人分享的代码时,很有可能会因为你们之间使用了不同的编码格式而引发异常。

以后遇到这样的异常,有两种解决方法:

第一种,先利用 VSCode 等软件去查看文件的编码格式,然后再将文件的编码格式修改为你在代码中写的编码格式即可。

第二种,还是先在 VSCode 里面查看文件的编码格式,然后将代码中的 encoding 参数改为该文件的编码格式即可。

总结如下:

Python中如何处理常见报错

 而实际上我们在写代码的过程中可能遇到的错误远不止这些,课程也无法一一全部讲到,所以大家需要培养的是这种自己发现错误和解决错误的能力,这就需要我们不断的尝试以及学会到百度上搜索查阅资料来积累经验了。

到此这篇关于Python中如何处理常见报错的文章就介绍到这了,更多相关Python处理报错内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
go和python调用其它程序并得到程序输出
Feb 10 Python
Python切片用法实例教程
Sep 08 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
python 魔法函数实例及解析
Sep 25 Python
PyTorch中permute的用法详解
Dec 30 Python
python统计字符的个数代码实例
Feb 07 Python
python读取与处理netcdf数据方式
Feb 14 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
Python机器学习应用之工业蒸汽数据分析篇详解
用Python可视化新冠疫情数据
Python机器学习应用之基于线性判别模型的分类篇详解
68行Python代码实现带难度升级的贪吃蛇
Jan 18 #Python
如何利用Python实现n*n螺旋矩阵
Jan 18 #Python
聊聊Python String型列表求最值的问题
Jan 18 #Python
Python的三个重要函数详解
Jan 18 #Python
You might like
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
第五节--克隆
2006/11/16 PHP
简单的过滤字符串中的HTML标记
2006/12/25 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
express 项目分层实践详解
2018/12/10 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python入门前的第一课 python怎样入门
2018/03/06 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
电子商务专员岗位职责
2013/12/11 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android