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”