鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧。人生最幸福的事情莫过于看到自己写的程序调试通过了!

前面我们介绍了,如何用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如何给csv添加数据不覆盖 python怎么在csv中加入数据_c++从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)    #保存数据

Python如何给csv添加数据不覆盖 python怎么在csv中加入数据_c++ 文件读写_02

运行程序,输入r读取数据指令,在C:\users\文件中打开test.txt文件,数据已经被写入。

Python如何给csv添加数据不覆盖 python怎么在csv中加入数据_c++从txt中读取数据_03

文件写入是成功了,不过现在很少有人用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数据之后,可以立即调用这段代码,保存数据。代码如下图所示:

Python如何给csv添加数据不覆盖 python怎么在csv中加入数据_c++ 文件读写_04

运行这段程序以后,在C:\Users\文件夹中,用excel打开test.csv文件,数据已经被写入到文件的每一行中。

Python如何给csv添加数据不覆盖 python怎么在csv中加入数据_c++ 写入文件_05

然后我们可以用excel对数据进行分析,用各种图表,曲线分析数据。

是不是比我们想象的要简单很多呢。Python充分利用了现有的模块,在此基础上可以快速开发出自己需要的功能。这就是python流行的一个主要原因之一!