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分割TXT文件成4K的TXT文件
May 23 Python
python开发中range()函数用法实例分析
Nov 12 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
Python数据分析模块pandas用法详解
Sep 04 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
解决pip install psycopg2出错问题
Jul 09 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
php将时间差转换为字符串提示
2011/09/07 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python批量提取word内信息
2015/08/09 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
python添加模块搜索路径方法
2017/09/11 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
python字典与json转换的方法总结
2020/12/28 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
1亿有多大教学反思
2014/05/01 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
机关党员公开承诺书
2014/08/30 职场文书
流动人口婚育证明
2014/10/19 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
小程序实现侧滑删除功能
2022/06/25 Javascript
Python实现聚类K-means算法详解
2022/07/15 Python