python日常之bug1

#UnicodeDecodeError

偶遇场景

pycharm运行代码好好的,突然debug的时候报错,而且直接运行没问题,想调试就不行,报错内容如下:

line 306, in _on_run r = r.decode(‘utf-8’) UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 1022-1023: unexpected end of data

分析解决

UnicodeDecodeError通常发生在对字符串进行解码时遇到了一个不合法的字节序列。你试图将一个不包含有效UTF-8编码的字节序列解码成字符串时就可能会遇到这种情况。如果代码中有相关设置,需要先确认数据源确实是UTF-8编码,如果不是,你需要使用正确的编码来解码。本人遇到的情况显然不是代码问题,一般情况下,这都是因为中文路径导致的。需要将中文路径名改为英文,甚至py文件名也要改。
如果上面的方法都试过了,还有一种烧套路(没试过)。这种方案需要去修改pycharm的源文件代码。找到你报错的那一行代码,r = r.decode(‘utf-8’),然后将这行代码做如下替换,保存代码,重启pycharm就搞定了。

try:
    r = r.decode('utf-8', errors='ignore')
except UnicodeDecodeError:
    r = r.decode('utf-8', errors='replace')

为什么这样修改一下就解决问题呢?

其实很简单,出现异常报错是由于decode()方法的第二个参数errors 的默认值为严格(strict)造成的,将其更改为(ignore)忽略就ok了

参考https://zhuanlan.zhihu.com/p/183911230

Ps.正如突然的bug找不到缘由,也可能你不管他过会儿或者重启个电脑,嘿!他又好了^_0

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Python提督道(Pythonic)地解决bug时,我们遵循一些原则和实践来提高代码的可读性、可维护性和可扩展性。 首先,我们应尽可能使用Python的内置函数和库来解决问题,而不是重复造轮子。Python提供了许多功能强大的内置函数和模块,如`os`、`sys`、`re`等,它们提供了许多用于处理文件、系统、正则表达式等常见任务的函数。同时,Python还提供了许多标准库,如`datetime`、`json`等,它们提供了处理日期时间、JSON等常见任务的函数和类。因此,在解决bug时,我们应首先查看Python官方文档,探索是否有现成的解决方案可用。 其次,我们应充分利用Python的异常处理机制来捕获和处理bugPython提供了`try-except`结构,它能够捕获代码中可能出现的错误并进行相应的处理。在处理bug时,我们应该使用`try-except`块来尽量捕获并处理异常,以避免程序崩溃或产生不可预测的结果。同时,我们还可以使用`finally`关键字来确保无论是否发生异常,都能执行必要的清理工作。 此外,Python还支持面向对象编程(OOP),我们可以使用类和对象来组织和封装代码,以提高代码的可重用性和可维护性。在解决bug时,我们可以使用OOP的思想来设计和实现自定义的异常类、封装复杂逻辑的类等,以提高代码的可读性和扩展性。 最后,为了尽量避免和减少bug的产生,我们应遵循一些良好的编码风格和规范,如PEP 8,它提供了Python编码的指导原则。良好的编码风格和规范能够使我们的代码更加整洁、易读,并减少潜在的bug。同时,我们还可以使用一些静态代码分析工具来检测常见的错误和潜在的问题,如PyLint、Flake8等。 总之,使用Python提禅道bug意味着我们要充分利用Python的内置函数和模块、异常处理机制、面向对象编程等特性,同时遵循良好的编码风格和规范,以提高代码的质量和可维护性,从而高效地解决bug

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值