前面我们介绍了,如何用Python做一个串口通讯的上位机。用这个上位机我们可以从ECU中读取数据,然后输出到屏幕上。 有些时候,我们需要保存这些数据。那么今天我给大家介绍的就是如何把数据保存到文件中。
我们还是从简单的开始入手:
我们先从三步法开始:
第一步:打开文件``
第二步:写数据到文件中
第三步:关闭文件
对应的源代码为:
data = ['30','31','32','33','34'] #要存储的数据列表
file = open('C:\\Users\\tti\\Desktop\\python\\test.txt', 'a+') #打开文件,如果没有,则创建一个新文件,文件操作模式,采用追加模式
file.write(data[0]) #保存列表中的第一个元素
file.write(data[1]) #保存列表中的第一个元素
file.close() #关闭文件
在open()函数中,我们一般需要用到两个参数:
一个参数是带路径的文件名,因为“\”在python中是用于特殊字符,比如“\n”代表换行,“\”的实际意思是“\”。所以上面的路径‘C:\Users\tti\Desktop\python\test.txt’ 实际上代表的是’ C:\Users\tti\Desktop\python\test.txt’。千万记住!
另外一个参数是文件操作类型,常用的几种模式如下表所示:
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
运行程序之后,我们会在C:\Users\tti\Desktop\python\路径下,找到一个test.txt文件,打开文件发现数据已经被写入。
三步法已经很简单了,但是python还觉得很罗嗦,采用with open() as 语句,把close函数省了。
with open ('C:\\Users\\tti\\Desktop\\python\\test.txt', 'a+') as file1: #打开文件
file1.write(data[2]) #保存列表中的第三个元素
file1.write(data[3]) #保存列表中的第四个元素
注意:with后面的语句要缩进;write()函数中参数是字符串类型的。
那我们现在就在串口通讯程序后面加入下面语句:
with open ('C:\\Users\\tti\\Desktop\\python\\test.txt', 'a+') as file1: #打开文件,在文件末尾,追加数据
file1.write(data) #保存数据
运行程序,输入r读取数据指令,在C:\users\tti\desktop\python文件中打开test.txt文件,数据已经被写入。
文件写入是成功了,不过现在很少有人用txt来做数据分析,除非是一些log文件。比如我们可以把一些关键数据和时间保存在txt文件中,供以后查看:
with open ('C:\\Users\\tti\\Desktop\\python\\test.txt', 'a+') as file1: #打开文件,在文件末尾,追加数据
file1.write(str(time.localtime().tm_year)) #保存当前时间:年
file1.write(str(time.localtime().tm_mon)) #保存当前时间:月
file1.write(str(time.localtime().tm_mday)) #保存当前时间:日
file1.write(str(time.localtime().tm_hour)) #保存当前时间:小时
file1.write(str(time.localtime().tm_min)+": ") #保存当前时间:分
file1.write(data+'\n') #保存数据,并换行
至此,我们已经完成了第一步。接下来我们看看如何将数据保存到csv文件中
CSV(Commma-Separated Value)是用逗号分隔符,以纯文本形式存储表格数据(数字和文本)的文件格式。CSV文件可以用excel打开和编辑,便于数据统计和分析。
要把列表data中的数据写入到csv中的一行,可以用下面代码:
with open ('C:\\Users\\tti\\Desktop\\python\\test.csv', 'a+',newline='') as file1: #打开文件
writer = csv.writer(file1) #创建一个实例
writer.writerow(data) #给csv文件写入一行数据
当获取到data数据之后,可以立即调用这段代码,保存数据。代码如下图所示:
运行这段程序以后,在C:\Users\tti\Desktop\python文件夹中,用excel打开test.csv文件,数据已经被写入到文件的每一行中。
然后我们可以用excel对数据进行分析,用各种图表,曲线分析数据。
是不是比我们想象的要简单很多呢。Python充分利用了现有的模块,在此基础上可以快速开发出自己需要的功能。这就是python流行的一个主要原因之一!