Python处理HTTP返回包遇到问题总结TypeError、keyError、SyntaxError、AttributeError
处理HTTP返回包包括对关键参数的校验,参数完整性检验,获取返回包参数的方法,返回包数据去重方法
在执行时遇到不少问题,部分问题记录如下:
1、报错信息:“TypeError: list indices must be integers or slices, not str”

排查发现:查询出的数据是列表类型,而不是字典类型,再排查发现调用的方法有问题导致查询出来的结果不对
本来是要调用查询数据库的方法select_one(),然后编写代码时根据提示选错了方法,选择了op_sql方法,导致返回的结果不是字典,而是列表
问题解决:将调用方法改为select_one()解决
params_interface = opration_db.select_one(sen_sql)
2、报错信息“keyError:'result_interface' ” “keyError:'id'”

查看报错提示,没有找到对应的下标为result_interface和id的参数,设置断点输出对应的数据,发现确实没有这两个字段,定位下来:为什么会没有这两个字段呢,再次查看原来查询语句时并未查询这两个字段,加上查询对应的字段就能解决该问题
3、报错信息“TypeError:not all arguments converted during string formatting”和“SyntaxError: unexpected EOF while parsing”

“TypeError:not all arguments converted during string formatting”:是因为print输出时定义了一个参数占位符,但是后面的参数有两个,多加一个占位符就可以解决问题
“SyntaxError: unexpected EOF while parsing”:看日志是列表数据少了结束符合‘]’,加上解决问题
4、比较完整性参数值正确,但是一点点在方法运行后输出却为空

debug时发现调用__recur_params方法后数据变为空值的,然后查看发现编写脚本时少写了继续调用本方法的代码,加上后又出现了问题5的报错
self.__recur_params(temp_result_interface)
5、报错信息“Message: AttributeError("'dict' object has no attribute 'startswith'")”

Message: AttributeError("'dict' object has no attribute 'startswith'"):字典对象没有startswith属性,就是说这个时候传入的比较值已经是字典类型而不是字符串类型了,startswith()方法是字符串的方法,所以就会报错
if result_interface.startswith('{') and isinstance(result_interface, str):
查看代码发现判断时先判断字符串的开始是否为“{”开头,再判断传入的值是否为字符串,这个判断逻辑有问题;将判断是否为字符串先判断,若为字符串后才进行判断字符串的开头字符就能解决问题
if isinstance(result_interface, str) and result_interface.startswith('{'):
Python处理HTTP返回包遇到问题总结TypeError、keyError、SyntaxError、AttributeError的更多相关文章
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- Python第八天 模块 包 全局变量和内置变量__name__ Python path
Python第八天 模块 包 全局变量和内置变量__name__ Python path 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Pyt ...
- python+pcap+dpkt 抓包小实例
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 网络数据包捕获与分析程序 """ imp ...
- Python标准库 (pickle包,cPickle包)
在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象 ...
- Python并发编程-concurrent包
Python并发编程-concurrent包 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.concurrent.futures包概述 3.2版本引入的模块. 异步并行任务编程 ...
- (Python )模块、包
本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...
- python socket发送魔法包网络唤醒开机.py
python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...
- python xlrd和xlwtxlutils包的使用
安装xlrd读取模块 首先去官网或者pypi下载安装包,然后解压到任意目录 在dos下进入该目录,执行python setup.py install安装 验证成功进入python,执行import 包 ...
- Python 处理server返回gzip内容
Python 如何处理server返回gzip压缩过的内容,代码如下: from StringIO import StringIOimport gzip request = urllib2.Reque ...
随机推荐
- CBV和APIView源码分析
CBV源码分析 查看源码的方式,先查看自身,没有去找父类,父类没有就去找父父类... 自己定义的类 class Author(View): def get(self,request): back_di ...
- ThinkPHP的几种路由形式总结
本篇文章总结了ThinkPHP的几种路由形式,分别是普通模式.PATHINFO.REWRITE和兼容模式,希望对各位学习thinkphp的朋友有帮助! thinkphp官方文档里有详细的说明: Thi ...
- idea的ktorm框架代码生成器插件
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- [模拟]Educational Codeforces Round 2A Extract Numbers
Extract Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- python plt 色卡
https://blog.csdn.net/Strive_For_Future/article/details/100151261 plt 绘图时通常需要各种颜色,还需要去介绍文档找,很麻烦,这里把p ...
- OpenCV-Python 霍夫圈变换 | 三十三
学习目标 在本章中, 我们将学习使用霍夫变换来查找图像中的圆. 我们将看到以下函数:cv.HoughCircles() 理论 圆在数学上表示为(x−xcenter)2(y−ycenter)2=r2(x ...
- 机器学习中的 7 大损失函数实战总结(附Python演练)
介绍 想象一下-你已经在给定的数据集上训练了机器学习模型,并准备好将它交付给客户.但是,你如何确定该模型能够提供最佳结果?是否有指标或技术可以帮助你快速评估数据集上的模型? 当然是有的,简而言之,机器 ...
- GAN的五大有趣应用
引言 你能看出这张照片中面部的共同点吗? 这些人都不是真实存在的!这些面部图像都是由GAN技术生成的. "GAN"这个词是由Ian Goodfellow在2014年提出的,但相关概 ...
- javascript创建函数的方法
函数对任何语言来说都是一个核心的概念.函数,是一种封装(将一些语句,封装到函数里面). 通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行. ECMAScript中的函数使用funct ...
- [vijos1460&Metocode P223]拉力赛<LCA>
题目链接:https://vijos.org/p/1460 http://oj.fjaxyz.com:3389/problem.php?id=223 我不禁开始怀疑,这,真的是最近公共祖先的题吗,我是 ...