处理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的更多相关文章

  1. python 深入模块和包

    模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...

  2. Python第八天 模块 包 全局变量和内置变量__name__ Python path

    Python第八天  模块   包   全局变量和内置变量__name__    Python path 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Pyt ...

  3. python+pcap+dpkt 抓包小实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ 网络数据包捕获与分析程序 """ imp ...

  4. Python标准库 (pickle包,cPickle包)

    在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象 ...

  5. Python并发编程-concurrent包

    Python并发编程-concurrent包 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.concurrent.futures包概述 3.2版本引入的模块. 异步并行任务编程 ...

  6. (Python )模块、包

    本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...

  7. python socket发送魔法包网络唤醒开机.py

    python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...

  8. python xlrd和xlwtxlutils包的使用

    安装xlrd读取模块 首先去官网或者pypi下载安装包,然后解压到任意目录 在dos下进入该目录,执行python setup.py install安装 验证成功进入python,执行import 包 ...

  9. Python 处理server返回gzip内容

    Python 如何处理server返回gzip压缩过的内容,代码如下: from StringIO import StringIOimport gzip request = urllib2.Reque ...

随机推荐

  1. 《Explaining and harnessing adversarial examples》 论文学习报告

    <Explaining and harnessing adversarial examples> 论文学习报告 组员:裴建新   赖妍菱    周子玉 2020-03-27 1 背景 Sz ...

  2. 拜托,别再问我什么是 B+ 树了

    前言 每当我们执行某个 SQL 发现很慢时,都会下意识地反应是否加了索引,那么大家是否有想过加了索引为啥会使数据查找更快呢,索引的底层一般又是用什么结构存储的呢,相信大家看了标题已经有答案了,没错!B ...

  3. python爬取中国大学排名

    教程来自:[Python网络爬虫与信息提取].MOOC. 北京理工大学 目标:爬取最好大学网前50名大学 代码如下: import requests from bs4 import Beautiful ...

  4. ASP.NET Core AutoWrapper 自定义响应输出

    前言 AutoWrapper是一个简单可自定义全局异常处理程序和ASP.NET Core API响应的包装.他使用ASP.NET Core middleware拦截传入的HTTP请求,并将最后的结果使 ...

  5. 优化Python代码的4种方法

    介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...

  6. 16.如何查找所需的maven的依赖

    http://mvnrepository.com/ 1.先打开上面的网址 搜索需要的依赖,点进去 2.选择需要的版本 3.红框中的就是依赖的地址 此外也有其他自动化构建工具所需要的地址

  7. Codeforces 1332F - Independent Set(树dp)

    题目链接 题意 给出一棵 n 个点的树, 求它的所有非空诱导子图的独立集种类数之和, 对 998244353 取模. n ≤ 3e5. 题解 不妨假设在独立集中的点被染色成 1, 其余不染色; 由于不 ...

  8. WiX 简介

    最近研究了一下WIX打包,简单总结一下,方便自己以后查阅,也希望能给需要的人一些提示和帮助. WiX 简介 Windows Installer XML (WiX ) 平台是一组工具与规范,使您能够创建 ...

  9. USACO07MAR Face The Right Way G 差分

    题目链接 https://www.luogu.com.cn/problem/P2882 分析 这个题来看的话好像有点难下手,不如再去读一遍题 N遍,发现一句话很重要Each time the mach ...

  10. MYSQL-----------实验一 MySQL的安装与命令初步

    (1)启动MySQL,并打开任务管理器查看服务进程是否已经启动.   (2) 进入Windows命令行,使用命令登录MySQL服务器.   (3) 使用show命令查看当前系统的字符集,并修改其中的两 ...