亲宝软件园·资讯

展开

Python处理报错

mez_Blog 人气:0

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

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

 按照 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(检查到不完整的字符串),这种情况通常是因为遗漏了字符串两边的引号,或者混用了引号(即字符串两边的引号不统一)。解决办法也很简单,仔细检查字符串两头的引号是否有遗漏,而且需要记住,单引号和单引号匹配,双引号和双引号匹配,三引号和三引号匹配。

图片总结一下:

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

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

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

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

总结如下:

 接着我们来看看基础语法中常见的异常,第一个要介绍的是基础语法中常见的异常 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(对象不可被迭代)

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

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

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

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

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

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

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

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

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

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

总结如下:

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

加载全部内容

相关教程
猜你喜欢
用户评论