AttributeError:“字节”对象没有属性“编码”

Posted

技术标签:

【中文标题】AttributeError:“字节”对象没有属性“编码”【英文标题】:AttributeError: 'bytes' object has no attribute 'encode' 【发布时间】:2019-02-02 09:20:32 【问题描述】:

我正在尝试构建一个用户登录系统,并且我已经成功构建了用户注册页面,但是当我尝试登录时,我得到了以下错误。我正在使用烧瓶、python3.6 和 pymongo。 这是错误:AttributeError: 'bytes' object has no attribute 'encode' 请帮忙。

Traceback(最近一次调用最后一次): 调用中的文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 2309 行 返回 self.wsgi_app(环境,start_response) wsgi_app 中的文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 2295 行 响应 = self.handle_exception(e) 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 1741 行,在 handle_exception reraise(exc_type, exc_value, tb) 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask_compat.py”,第 35 行,在 reraise 升值 wsgi_app 中的文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 2292 行 响应 = self.full_dispatch_request() 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 1815 行,在 full_dispatch_request rv = self.handle_user_exception(e) 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 1718 行,在 handle_user_exception reraise(exc_type, exc_value, tb) 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask_compat.py”,第 35 行,在 reraise 升值 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 1813 行,在 full_dispatch_request rv = self.dispatch_request() 文件“C:\Users\elvis\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”,第 1799 行,在 dispatch_request 返回 self.view_functionsrule.endpoint 文件“C:\Users\elvis\Desktop\flask apps\testmon\even\app\run.py”,第 30 行,登录 如果 bcrypt.hashpw(request.form['pass'].encode('utf-8'), login_user['password']) == login_user['password'].encode('utf-8'): AttributeError: 'bytes' 对象没有属性 'encode'

(a screenshot of the error page)

【问题讨论】:

见this SO问题例如。 请向我们展示相关代码(另见***.com/help/on-topic,“寻求调试帮助的问题”部分)。最好的问候 这能回答你的问题吗? HG-Git: AttributeError: 'bytes' object has no attribute 'encode' 【参考方案1】:

只给Password=" "

例子:

pdf = pdfplumber.open(f,password='')

【讨论】:

【参考方案2】:

回溯的最后一行

login_user['password']) == login_user['password'].encode('utf-8'): AttributeError: 'bytes' object has no attribute 'encode'

告诉您您正在传递一个类型为 bytes 的对象,而不是 str。 所以你试图在bytes 对象上调用.encode() 方法。 您需要检查login_user['password'] 的值是什么,然后通过在bytes 对象login_user['password']).decode().encode('utf-8') 上调用decode() 方法将其转换为字符串,或者在此字典的开头存储一个字符串值。

从这个回溯中我可以看出,您所做的事情没有多大意义,但除非您可以共享代码,否则我无能为力。

编辑:

login if bcrypt.hashpw(request.form['pass'].encode('utf-8'), login_user['password']) == login_user['password'].encode('utf-8'): AttributeError: 'bytes' object has no attribute 'encode'

您也可以从login_user['password'] 部分中删除.endoce('utf-8'),它也可以正常工作。

【讨论】:

以上是关于AttributeError:“字节”对象没有属性“编码”的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:'list' 对象没有属性 'size'

AttributeError:“模块”对象没有属性“WebSocketApp”

AttributeError: 'float' 对象没有属性 'split'

AttributeError:“列表”对象没有属性“numpy”