AttributeError: ‘bytes‘ object has no attribute ‘encode‘异常解决方案

举报
红目香薰 发表于 2022/11/29 15:06:32 2022/11/29
【摘要】 ​ AttributeError: 'bytes' object has no attribute 'encode'是:“字节”对象没有属性的编码的意思。很明显,是编码格式的问题,例如:已经是byte格式的字符串类型,二次进行encode的时候就会出现这个bug,示例如下:str_info = 'Hello World!'print(str_info)# byte字符串-utf-8str_i...

 AttributeError: 'bytes' object has no attribute 'encode'是:“字节”对象没有属性的编码的意思。

很明显,是编码格式的问题,例如:已经是byte格式的字符串类型,二次进行encode的时候就会出现这个bug,示例如下:

str_info = 'Hello World!'
print(str_info)
# byte字符串-utf-8
str_info = str_info.encode("utf-8")
print(str_info)
# byte字符串-GBK
str_info = str_info.encode("gbk")
print(str_info)

异常的报错效果如下:

编辑

其实异常说的是比较明显的,属性误差:【Attribute Error】,既然我们知道了问题所在,那么在获取数据的时候就要看看是什么编码格式的,一般情况下数据交流都是【UTF-8】的字符串编码格式,python里面Unicode编码格式,课时我们操作的时候直接写代码就默认不会出现格式错误,说明只有在api操作的时候才会出现这样的问题,在字符串操作的时候可以限定一下所有的数据交流格式为【UTF-8】即可。偶尔出现中文的问题在去单独处理即可。

编码格式也就一般使用这两种,但是大多数程序员都会默认的将项目改成【UTF-8】的,就连正常操作数据库的时候你能看到也会写到编码格式改成【UTF-8】都是心照不宣的,如果出现这类需要格式转化的情况,放心,对方肯定是一个新手程序员,我们要以大哥哥的心态来帮扶新进的程序员小弟弟们,大家的技术快速成长,才能更好的为祖国建设贡献一份力量。

报错叫做【Attribute Error】,这个报错还可能是重写的函数有问题,例如:初始化的时候使用的是:【__init__】这里不是一个下划线,是两个下划线,如果你使用一个下划线也会报错的。

我们可以初始化一个类测试一下:

class demo:
    """
    正常定义一个类,正常写初始化函数
    """
    def __init__(self):
        print(666)


# 调用的使用少写了一个下划线。
demo().__init_()

从下图就能看出来,由于我们在调用的过程中少写了一个下划线,所以报错了,异常为: 【Attribute Error】,具体的异常描述:'demo' object has no attribute '__init_',他就是一个:特定对象类型没有访问属性,我们没有正常使用初始化函数,故而直接报错。

我们知道问题,再去复现问题,很多时候通过这样的操作我们就能对某个知识点彻底的了解,攻克,老师很多时候找bug快就是因为看到了无数的学生bug,挨个解决过来的,所以很多异常看一眼就明确问题点,根据问题点进行分析,查找问题,这样解决问题可能就是分分钟的事情。

【Attribute Error】异常是一个范围异常,其实还有很多情况会出现这个异常提示。我们上面那个参数异常也是报的这个异常为前缀。

这里小总结了一下三个可能出现这个异常的情况,如下:

1、属性名称拼写错误

2、调用不存在的属性

3、模块属性调用错误

有兴趣的可以自己写一个关于各类异常的博客,也能为更多的人创造价值,毕竟每个人的工作范围都不一样,出现的异常也是千奇百怪,大家都发一发,在找答案的时候也会很效率,创造价值。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。