python读写文件

import math#
import pickle#导入pickle库
#读取txt文件中的数据并对其进行数据转换和部分数据合并
def Data_Convert(filename):
    file = open(filename,'r')#打开文件
    line_data = file.readlines()#读取所有行
    New_Data = []
    for line in line_data:
        temp_list = line.split(' ')
        temp_list[-1] = temp_list[-1].replace('\n','')
        temp_list = [i for i in temp_list if i !='']#列表推导式去除空字符串
        temp_list.pop(0)
        #print(temp_list)
        New_Data.append(temp_list)
    New_Data.pop(0)
    #print(New_Data[0])
    for i in range(0,len(New_Data)):
        for j in range(len(New_Data[i])):
            New_Data[i][j] = float(New_Data[i][j])
#实现拼接具有相同头元素的数组
    demo = []                  #头元素目录
    new_ = []                  #拼接后新数组
    for i in range(0, len(New_Data)):
        if New_Data[i][0] not in demo:
            demo.append(New_Data[i][0])
            new_.append(New_Data[i])
        else:
            for m in range(0, len(demo)):
                if demo[m] == New_Data[i][0]:
                    for j in range(1,len(New_Data[i])):
                        new_[m].append(New_Data[i][j])
    return new_
#数据存储函数,将二维列表存入txt文件中
def data_save(filename,data):
    f = open(filename, 'w+')
    for i in range(len(data)):
        jointsFrame = data[i]  # 每行
        for j in range(len(data[i])):
            strNum = str(jointsFrame[j])
            f.write(strNum)
            f.write(' ')
        f.write('\n')
    print('保存成功!')
    f.close()
def main():
    data = Data_Convert('Vehicle_Data.txt')#读取txt文件数据
    #print(data)
    data_save('Vehicle_Tset_Data.txt',data)#保存数据到另一个txt文件
    pickle.dump(data,open('Vehicle_Data.pkl','wb'))#将txt数据存入pickle文件中,这样下次读取仍然是列表格式,不需要再进行解析
    data1 = pickle.load(open('Vehicle_Data.pkl','rb'))#加载pickle文件数据,数据格式是列表
if __name__ == "__main__":
    main()

下图是“Vehicle_Data.txt”文件中的数据
第一列是行数,第二列是时间,第三列是车次,第四列是position_x坐标,第五列是position_y坐标,第六列是head角度
在这些数据里面我们可以看到有的同一时间点出现了两个车次甚至是两个以上车次的数据,需要将同一时间点的不同车次的数据进行合并,去掉同一时间点后面车次的时间列,保留车次列,position_x,position_y,head列,将其合并到第一次出现该时间的车次的数据后面
在这里插入图片描述
存入“Vehicle_Tset_Data.txt”文件中的数据如下图所示:
在这里插入图片描述
在这里采用pickle库的作用是为了读取方便,下次再次读取就不需要再进行繁琐的解析了
关于pickle的介绍在下面这个链接中:
https://www.cnblogs.com/shuaishuai-it/p/5407003.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yhwang-hub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值