【2023最新】超详细!!!python解决代码报错的四个方法保证看完学会并且解决代码报错_python 处理报错-程序员宅基地

技术标签: python报错  python  开发语言  

前言

代码报错靠自己悟估计要到猴年马月了

互联网99.9999%有关于自己python代码报错的解决方法,但是怎么搜索呢,或者说怎么排错

这里推荐自己解决报错的几种方法

保证大家看完后遇到代码报错一定学会并且解决代码报错

注意:

如果遇到代码没有报错,但是代码是错误的情况

这个情况比代码报错还要烦,因为代码报错有提示,他连提示都没有

那么你只能使用下面2,3,4的解决方法

也可以在评论区分享你的报错代码

1 翻译报错代码

代码报错的格式都是固定的,比如:

IndexError: list index out of range

报错类型:报错提示

他都是有提示,我们可以直接翻译,使用pycharm插件可以直接翻译

image-20231111195827967

报错代码:

li = [2]
print(li[2])

image-20231111173841563

可以看到 File “X:\009_接单\python解决代码报错\test1.py”, line 2, in

这句的意思就是 在 "X:\009_接单\python解决代码报错\test1.py"这个文件中,在第二行报错了

(如果报错文件不是你运行的文件,不用看,都是安装的模块文件,你只需要看你自己的文件就行)

翻译后可以看到是因为列表超出索引范围导致的,那我们把列表的下标改就行

li = [2]
print(li[0])

但是有些报错就算翻译后也解决不了

所以就只能在互联网找教程或者报错解决方法

2 搜索报错代码

报错代码搜索也是一个解决方法,但是如果你的搜索关键词不精准也是搜索不到自己的错误代码的

都是与自己代码错误无关的文章

搜索报错代码的格式,我自己常用的搜索方法

例如:

python execjs AttributeError: ‘NoneType’ object has no attribute ‘replace’ 报错

这样搜索的返回结果就是关于python execjs模块报错AttributeError: ‘NoneType’ object has no attribute 'replace’的相关文章,更加精准

image-20231111205456942

一定要加空格,他在搜索时的返回值就是 关于python并且包括execjs的文章

格式大致为

python + 报错的代码或项目名称 + 报错的类型和提示

这样返回的结果更加精确

其他的代码或者报错也可以用这个格式所搜

例如:

Node:找不到模块Error: Cannot find module

这个就是关于Node.js的报错找不到模块加具体的报错代码

一般我们写博客也是这个形式,代码或软件+模块或者项目+报错代码或报错问题

3 使用GPT进行纠错

先对GPT输入这句话,让GPT代入角色:

你是一位资深的IT专家,请根据我给出的代码,对其进行检查纠错,要求首先将问题分条详细列出,然后提供完整的更正后代码

然后在使用格式大致为

python + 报错的代码或项目名称 + 报错的类型和提示

让GPT分析

image-20231111210959397

这里我输入的错误就是因为selenium的驱动路径不对导致的报错

他这里分析的没有问题,改过路径后确实是对的

我们试试GPT给的代码

image-20231111211637776

这里报错了,说是没有这个参数

我们继续使用GPT排错

image-20231111212536366

我们可以看到GPT说的非常对,确实是版本导致的,但是我们是4.x版本的,所以我们这次带上版本在问一次

可以看到,我没充钱,她上限了(尴尬),我们换个GPT继续问

image-20231111213029048

我们试试GPT给的代码

image-20231111213224596

可以看到,这次确实是解决了selenium的问题,

我们从驱动路径错误,到代码错误,最后到selenium4.x版本错误

GPT全部都给出了解决方案和代码

这里GPT大家可以搜索免费的,还挺多的,可以用浏览器插件,也可以使用网站

**
网站:Mental AI
国内也可使用
适配移动端
正确使用姿势
**

image-20231111213517904

这两个是我展示时使用的GPT

4 使用Gitee或Githup排错

一般来说使用前三种方法就可以解决了,如果还不能解决

那大概率因为你遇到的代码的报错很少,没人写过,或者报错因为项目原因

这个时候普通的方法确实不管用,你需要找个老师问问

或者在Gitee或者Githup上搜索相关代码查看

我这里分享一个我自己遇到的报错,以上三种方法都不能用:

这里我写的是一个基于scrapy的redis分布式爬虫

他没有报错,但是他也没有分布式,一直只有一个爬虫在运行,而且在网络上所搜的教程文章都不管用

后面我也在Gitee找到了这个原因:

在Gitee搜索scrapy-redis分布式爬虫,看他们的源码

看了挺久的代码:

image-20231111220836670

我发现他们请求url时,全部都是for 循环请求,或者规则式爬虫,全部都是一次性请求好多

image-20231111221103247

最后我也找了我的老师帮我远程查看

没有分布式的原因是:

因为基于scrapy的redis分布式爬虫她的调度器就是需要请求url的列表必须是满的,溢出来的才会分给其他爬虫,让他们开始工作。

我当时写的scarpy爬的是新发地,下一页请求是一页一页的请求,没有一次性请求,所以这个调度器根本不满,没有多余的url,当然也不会分给其他爬虫任务

image-20231111220006366

5 总结代码报错解决方法

一般代码报错:我们解决报错代码的流程是:

一:翻译报错代码,看能不能在代码提示中找到解决方法

注意:

如果他报了一个像列表超出索引这样的小错误,完全给你的代码没有一点关系,那么你就要注意了,要好好看看报错代码行,报错代码提示,而且搜索的时候,你必须是python+你的项目或者说你想写的代码+像列表超出索引这样的错误

要不然他返回的都是列表超出索引这样的小错误解决方法,给你的代码一点关系都没有

二:当你看过报错代码后依旧没有解决就可以搜索了,推荐使用必应,并且使用插件

image-20231111222617009

这个插件可以过滤和你的关键字不相干的文章和资源

搜索格式:

python + 报错的代码或项目名称 + 报错的类型和提示

这会极大的减少你找文章的时间,让你更快找到你需要的文章

当你看到这步还没有解决时,说明你搜索的关键字不精准,或者是你代码的报错大部分人没有遇到

三:搜索依旧没有解决就使用GPT

先对GPT输入这句话,让GPT代入角色:

你是一位资深的IT专家,请根据我给出的代码,对其进行检查纠错,要求首先将问题分条详细列出,然后提供完整的更正后代码

你可以直接复制报错代码给GPT,把你的模块版本号或者想要实现的功能告诉他,看看能不能解决

实现不行,你就需要看Gitee或者Githup上关于你想要实现的项目源码了,改变思路或者借鉴源码

四:最后看Gitee或者Githup上关于你的项目源码

你可以搜索你的项目,也可以把你的关键部分代码复制粘贴搜索

看的时候不要盲目,看核心代码,比如爬虫就看请求部分和逆向破解部分

一般到这步还没有解决你的报错

那么推荐你找老师解决,或者换个思路或者方法实现你要完成的项目

6 报错分享

大家可以私信或者在评论区分享自己报错代码

我会出教程帮你们解决,互相进步学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_73689941/article/details/134355506

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue