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 相关文章推荐
python切换hosts文件代码示例
Dec 31 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
python变量不能以数字打头详解
Jul 06 Python
Python基于tkinter模块实现的改名小工具示例
Jul 27 Python
Python中is和==的区别详解
Nov 15 Python
对python3新增的byte类型详解
Dec 04 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
PHP 木马攻击防御技巧
2009/06/13 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
分享php邮件管理器源码
2016/01/06 PHP
php compact 通过变量创建数组
2016/11/15 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
node实现分片下载的示例代码
2018/10/17 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
python的keyword模块用法实例分析
2015/06/30 Python
使用python实现ANN
2017/12/20 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
Android interview questions
2016/12/25 面试题
大学生实习思想汇报
2014/01/12 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
医德医魂心得体会
2014/09/11 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
Linux中如何安装并部署Redis
2022/04/18 Servers
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python