按行读取txt文件,将数据按列存入csv文件

在科研实验中,有时候会得到很多存储在txt文件的数据文件,这不利于直接用于画图,在此,使用python将txt文件中的数据按列存储进csv文件。
在这里插入图片描述
【代码设计思路】

  • 按行读取txt文件
  • 去除每行数据两边的空格
  • 使用split()去除字符串中的空格,形成列表
  • 将列表元素提取存储在新列表
  • 将新列表数据按列写入csv文件中
import os
import csv
def txt_data_to_csv(path,save_dir):
    '''
    该函数实现将txt文件中的数据存储在csv文件中
    思路:
    1.按行读取txt文件
    2.去除每行数据两边的空格
    3.使用split()去除字符串中的空格,形成列表
    4.将列表元素提取存储在新列表
    5.将新列表数据写入csv文件中
    '''
    files= os.listdir(path)#遍历文件夹中的所有文件,将文件名存储在列表中
    for file in files: #遍历文件夹中的txt文件
        file_path = os.path.join(path,file)
        if not os.path.exists(save_dir):
            os.makedirs(save_dir)
        save_path=os.path.join(save_dir,'数据提取'+'from'+'_'+file+'.csv')
        if os.path.exists(save_path):
            os.remove(save_path)  #如果已经存在该文件夹,移除 
        x_list=[]#新建空列表用于存储数据
        y_list=[]
        with open(file_path,'r') as f:#打开txt文件
            lines=f.readlines()#按行读取文件,并按行存储为列表
            for line in lines:#遍历存储了文件信息的列表
                line = line.strip()#去掉每个元素中的前后空格
                #print(line)
                if line!='@Phi=0.0':
                    xy=line.split()#将txt文件中每行的空格去掉
                    x_list.append(xy[0])#提取txt文件每行的第一个元素
                    y_list.append(xy[1])#提取txt文件每行的第二个元素
            rows = zip(x_list,y_list)#将列表按列存储
            with open(save_path, "w", newline='') as f:
                writer = csv.writer(f)
                for row in rows:
                    writer.writerow(row)

调用函数:

path=r'D:\some files of others\name\test_txt'#txt文件所在文件夹路径
save_dir=r'D:\some files of others\name\data_from_test_txt'#csv文件存储所在文件夹
txt_data_to_csv(path,save_dir)

这里面涉及几个知识点:函数、if结构、遍历文件夹、创建文件夹、移除文件、按行读取文件、去除字符串中的空格、列表添加元素、将数据按列存入csv文件

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐