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