百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

第十一课python来写串口助手-log的自动保存

off999 2024-09-27 13:56 24 浏览 0 评论

1、我们串口助手篇终于到第十一课了,估计还有1-2篇就可以完结这个系列,我们下一个系列就来做USB,当年我想做USB的通讯编程,结果没有什么入门的方法,自己慢慢摸索完成的,既然开了串口的系列,那就把USB系列做成第二个系列,敬请期待。

2、Txt的读写在python非常简单,我们希望实现的功能:

1)自动在目录下生成文件名;

2)文件名最好能关联到时间;

3)内容大于512就自动保存;

4)退出的时候,自动把小于512部分的内容保存到log中。

3、那我们来实现一个变量用于保存临时的数据,当数据长度大于512就将数据保存,在initdata中增加变量:

self.svaedata=""

4、在文件头增加代码:import time,在initdata中增加代码:

self.logpath="./log/"+str(time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime()))+'_log.txt'

在pythonwork下新建一个目录log:

将当前的时间按照%Y_%m_%d_%H_%M_%S格式生成日期的字符串与_log.txt拼接成log的文件名,运行一下:

可以看到我们的log文件的路径名,我们来实现txt保存。

我们可以使用open来写入txt文件:

def WriteLog(self,sdata,b=0):

self.svaedata+=sdata

if len(self.svaedata)>=512 or b==1:

with open(self.logpath,'a') as f:

f.write(self.svaedata)

f.close()

self.svaedata=""

输入待写入的字符串,并将它保存到变量self.savedata,如果长度大于512,我们就写入txt文件,这样做的好处在数据交互快速,有大量待写入操作能节省时间,不需要一直重复写入。

1、我们将代码加入之前的代码中:

def callbacklog(self,msg):

if len(msg)>0:

cbcheck=self.new.cb_receive.checkState()

hdata=""

try:

if cbcheck:

hdata="收到数据:"+self.com.HexToString(msg)

self.ShowMsg(hdata)

else:

hdata="收到数据:"+msg.decode('utf-8','replace')

self.ShowMsg(hdata)

self.WriteLog(hdata+"\r\n")

except Exception as e:

self.ShowMsg(str(e))

在界面关闭事件中增加:

def closeEvent(self, event):

try:

self.cw.close()

self.StopThread()

self.stoptim()

self.com.CloseCom()

self.WriteLog("",b=1)

except Exception as e:

self.ShowMsg(str(e))

接着我们来运行一下:

查看log目录:

已经生成了相应的文件:

接着关闭程序,我们只发送一条数据,查看关闭文件的时候,是否自动保存:

查看log目录,并没有生成log文件,接着关闭文件,查看目录下,已经自动生成了log文件:

现在我们已经基本实现了数据接收、发送、保存,那我们用它来干什么,下一节课将简单的来接收GPS数据并解析。

相关推荐

面试官:来,讲一下枚举类型在开发时中实际应用场景!

一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...

一日一技:11个基本Python技巧和窍门

1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...

Python Enum 技巧,让代码更简洁、更安全、更易维护

如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...

Python元组编程指导教程(python元组的概念)

1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...

你可能不知道的实用 Python 功能(python有哪些用)

1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...

Python 2至3.13新特性总结(python 3.10新特性)

以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...

Python中for循环访问索引值的方法

技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...

Python enumerate核心应用解析:索引遍历的高效实践方案

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...

Python入门到脱坑经典案例—列表去重

列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...

Python枚举类工程实践:常量管理的标准化解决方案

本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...

让Python枚举更强大!教你玩转Enum扩展

为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...

Python枚举(Enum)技巧,你值得了解

枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...

登录人人都是产品经理即可获得以下权益

文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...

Python常用小知识-第二弹(python常用方法总结)

一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...

取消回复欢迎 发表评论: