一、TypeError
1. user_t = username + time #将username和time拼接在一起
TypeError: must be str, not float
原因:time获取到的time.time()当前时间戳为float类型,float不能直接跟字符串进行拼接
解决方法:将time转换成字符串,即str(time)
2. TypeError: 'dict' object is not callable
The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a dict.
原因:接口return了字典类型的数据
res_msg = {'username':username,'login_info':user_value}
print('res_msg:',res_msg)
return res_msg
解决方法:使用json.dump()将字典转成json串,return json.dumps(res_msg,ensure_ascii=False)
说明:接口返回类型只能是一个string或者元组
2. stu_info = res.get(stu_info)
TypeError: unhashable type: 'dict'
二、NameError
1.NameError: name 'time' is not defined
原因:
1)没有使用函数中的形参,函数中的形参是login_time
2)没有引入time模块
2.File "F:/lp_test/besttest/auto_test/homework/syz_automatic_code/day7/day7_homework/day7_hw_1_modify_excel.py", line 67, in add_col_isgratudate
old_sheet = open_excel( file_path ) # 调用打开excel的函数
NameError: name 'file_path' is not defined
原因:
定义函数时的位置参数写成file_name,如右所示: [ def add_col_isgratudate(file_name): ]但实际使用的是file_path
解决方法:把file_name改为file_path
三、AttributeError
1.AttributeError: 'NoneType' object has no attribute 'encode'
原因:没有判断输入的参数是否为空,就进行了md5加密
pwd = db_operater_tools.my_md5(flask.request.values.get('passwd').strip())
解决方法:
先判断密码非空后再加密
四、语法错误
1. File "F:/lp_test/besttest/auto_test/homework/syz_automatic_code/day7/day7_homework/bin/start_sever.py", line 5
host = '0.0.0.0', ^
SyntaxError: invalid syntax
原因:run方法的run与()中间加了=号,如下所示:
day7_hw_modify_reg_interface.server.run =(
host = '0.0.0.0',
port = SERVER_PORT,
debug = True
)
解决方法:把=号去掉,如果设置正确host,port,debug都是橘红色
2.File "F:\lp_test\besttest\auto_test\homework\syz_automatic_code\day7\day7_homework\lib\db_operater_tools.py", line 14
if r.keys(k1:k)[0].decode()==key_com: ^
SyntaxError: invalid syntax
原因:if r.keys(k1:k)[0].decode()==key_com: 不能写成k1:k
解决方法:提前把k1和k拼接成字符串即用key_com(接收k1 + ':' + k)替换k1:k
五、列表越界
1. if r.keys(key_com)[0].decode() == key_com: #表示用户
IndexError: list index out of range
原因:用户名还没有插入的时候r.keys()返回的是空的list,所以获取不到[0]的数值
解决方法:将if r.keys(key_com)[0].decode() == key_com: 改为 if r.keys(key_com) 列表空表示没有检索到
六、UnboundLocalError
1.File"F:\lp_test\besttest\auto_test\homework\syz_automatic_code\day7\day7_homework\lib\day7_hw_modify_reg_interface.py", line 78, in login
return json.dumps(res_msg,ensure_ascii=False,indent=1) #缩进为1
UnboundLocalError: local variable 'res_msg' referenced before assignment
原因:判断条件if redis_username == username and redis_passwd == pwd:没有配对的else 输出res_msg ={}
导致if条件为假时,没有了res_msg参数,所以导致以上错误
解决方法:增加配对的else: res_msg = {'',''}
七、ImportError
Traceback (most recent call last):
File "start.py", line 1, in <module>
from libs import interface
ImportError: cannot import name 'interface'
原因:因为项目目录不再环境变量中了
解决方法:手动加环境变量
os.path.dirname(os.path.dirname(__file__)) 使用此方法添加环境变量,运行错误,原因__file__获取文件路径分隔符错误
解决方法:转成绝对路径os.path.abspath(__file__)