202009-28 Python实现CAN报文转换工具教程 一、CAN报文简介CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。CAN总线以报文为单位进行数据传送。CAN报文按照帧格式可分... 继续阅读 >
202009-28 python TCP包注入方式 我就废话不多说了,大家还是直接看代码吧!#!/usr/bin/envpythonimportsocketimportstructdefchecksum(data):s=0n=len(data)%2foriinrange(0,len(data)-n,2):s+=ord(data[i])+(ord(data[i+1])<<8)ifn:s+=ord(data[i+1])while(s>>16):s=(s&0xFFFF)+(s>>16)s=~s&0xffffreturnsclassip():def__init__(self,source,destination):self.version=4self.ihl=5#Inte... 继续阅读 >
202009-28 python构造IP报文实例 我就废话不多说了,大家还是直接看代码吧!importsocketimportsysimporttimeimportstructHOST,PORT="10.60.66.66",10086defmake_forward_iphdr(source_ip='1.0.0.1',dest_ip='2.0.0.2',proto=socket.IPPROTO_UDP):#ipheaderfieldsip_ihl=5ip_ver=4ip_tos=0ip_tot_len=0#kernelwillfillthecorrecttotallengthip_id=54321#Idofthispacketip_frag_off=0ip_ttl=255... 继续阅读 >
202009-28 解决python使用list()时总是报错的问题 如下所示:Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:'list'objectisnotcallable刚开始学习python的时候,可能会由于命名的不注意,导致也方法一直用不了,原因是在声明变量对的时候和python内置方法冲突了,导致方法被重新定义了,这样一来,方法自然也就不存在了解决办法:先复制个其他的listc=list.copy()然后清空list列表名的列表list.clear()再次使用list(),成功声明并赋值l... 继续阅读 >
202009-28 python requests.get带header 啥也不说了,大家还是直接看图吧!补充知识:pythonhttprequestheader主要内容httprequest请求头主要包括内容如下:header名作用示例Accept指定客户端能够接收的内容类型Accept:text/plain,text/htmlAccept-Charset浏览器可以接受的字符编码集。Accept-Charset:iso-8859-5Accept-Language浏览器可接受的语言A... 继续阅读 >
202009-28 python中urllib.request和requests的使用及区别详解 urllib.request我们都知道,urlopen()方法能发起最基本对的请求发起,但仅仅这些在我们的实际应用中一般都是不够的,可能我们需要加入headers之类的参数,那需要用功能更为强大的Request类来构建了在不需要任何其他参数配置的时候,可直接通过urlopen()方法来发起一个简单的web请求发起一个简单的请求importurllib.requesturl='https://www.douban.com'webPage=urllib.request.urlopen(url)print(webPage)data=webPage.read()print... 继续阅读 >
202009-28 python requests包的request()函数中的参数-params和data的区别介绍 如下所示:importrequestsurl='http://www.baidu.com'#下面使用requests.request(method,url,**kwargs)re=requests.request('GET',url)经验证,可用。我们试着传入一个字典,首先用params参数。结果为:亮点在url和args。我们还用get方法,把dic这个字典传给data试试看。亮点还是在args和url。惊喜地发现,dic这个字典没传进去。这是因为:params是用来发送查询字符串,而data是用来发送正文的。post方法和get方法的特性是:这... 继续阅读 >
202009-28 关于Python解包知识点总结 解包在英文里叫做Unpacking,就是将容器里面的元素逐个取出来放在其它地方,好比你父母去菜市场买了一袋苹果回来分别发给家里的每个成员,这个过程就是解包。Python中的解包是自动完成的,例如:student=['xiaoqiang','man','22']name,sex,age=studentprint(name,sex,age)结果:xiaoqiangman22如果列表中有3个元素,那么刚好可以分配给3个变量。除了列表对象可以解包之外,任何可迭代对象都支持解包,可迭代对象包括元组、... 继续阅读 >
202009-28 python 使用事件对象asyncio.Event来同步协程的操作 事件对象asyncio.Event是基于threading.Event来实现的。事件可以一个信号触发多个协程同步工作,例子如下:importasyncioimportfunctoolsdefset_event(event):print('settingeventincallback')event.set()asyncdefcoro1(event):print('coro1waitingforevent')awaitevent.wait()print('coro1triggered')asyncdefcoro2(event):print('coro2waitingforevent')awaitevent.wait()print('coro2tr... 继续阅读 >
202009-28 在python里使用await关键字来等另外一个协程的实例 一个协程里可以启动另外一个协程,并等待它完成返回结果,采用await关键字,例子如下:importasyncioasyncdefouter():print('inouter')print('waitingforresult1')result1=awaitphase1()print('waitingforresult2')result2=awaitphase2(result1)return(result1,result2)asyncdefphase1():print('inphase1')return'result1'asyncdefphase2(arg):print('inphase2')return'result2de... 继续阅读 >
202009-28 python 异步async库的使用说明 在学习asyncio之前,先理清楚同步/异步的概念:同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行异步是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果asyncio函数:异步IO采用消息循环的模式,重复“读取消息—处理消息”的过程,也就是说异步IO模型”需要一... 继续阅读 >
202009-28 Python插件机制实现详解 插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件。对于Python这样的脚本语言,实现插件机制更简单。机制Python的__import__方法可以动态地加载Python文件,即以某个py脚本的文件名作为__import__的参数,在程序运行的时候加载py脚本程序模块。对应的import关键字则是静态加载依赖的py模块。描述__import__()函数用于动态加载类和函数。如果一个模块经常变化就可以使用__import__()... 继续阅读 >
202009-28 Python并发concurrent.futures和asyncio实例 说明Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。从Python3.2开始,标准库为我们提供了concurrent.futures模块,concurrent.futures模块的主要特色是ThreadPoolExecutor和ProcessPoolExecutor类,这两个类实现的接口能分别在不同的线程或进程中执行可调用的对象。这两个类在内部维护着一个工作线程或进程池,以及要执行的任务队列。Python3.4以后标准库中asyncio包,这个包使用事... 继续阅读 >
202009-28 Python 中由 yield 实现异步操作 yield在python中初学时,觉得比较难理解。yield的作用:①返回一个值、②接收调用者的参数分析下面的代码:#!/usr/bin/envpython3#-*-coding:utf-8-*-defconsumer():r=''whileTrue:n=yieldrprint("[Consumer]n=%d"%n)ifnotn:returnprint("[Consumer]consuming%s..."%n)r='200OK'defproduce(c):c.send(None)h=0whileh<5:h=h+1print("[Producer]prod... 继续阅读 >
202009-28 python 双循环遍历list 变量判断代码 我就废话不多说了,大家还是直接看代码吧!file1='C:\\Users\\Administrator\\Desktop\\test\\ALL.txt'file2='C:\\Users\\Administrator\\Desktop\\test\\little.txt'ALLlist=[]Demondlist=[]withopen(file1,"r")asf1:text1=f1.read()withopen(file2,"r")asf2:text2=f2.read()ALLlist.extend(text1.split())Demondlist.extend(text2.split())#print(demond)foriinALLlist:forjinDemondli... 继续阅读 >
202009-28 Python求解排列中的逆序数个数实例 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。一个排列中所有逆序总数叫做这个排列的逆序数。也就是说,对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有1个逆序。一个排列中所有逆序... 继续阅读 >