合并不同文件夹下相同文件名文件

合并不同文件夹下相同文件名文件

转载自https://blog.csdn.net/qq_42769683/article/details/104565285?utm_source=app&app_version=4.10.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

稍作修改,增加删除操作,防止多次遍历

import pandas as pd
import os

合并操作

def merge_data(id):
    # 大文件夹    
    base_dir = 'E:/2pythonProject/Datasets/ECO/01/01_plugs_csv/'  # 获取大文件夹下的小文件夹    
    base_dir_filename = os.listdir(base_dir)    
    df_all = pd.DataFrame()    # 遍历    
    for dir in base_dir_filename:        
        file_path = base_dir+dir        
        file_names = os.listdir(file_path) # 获取小文件夹下每个文件的名称        
        for file in file_names:  # 遍历小文件夹里的每一个文件            
            file_name = file_path+'/'+file            
            if file.split('.')[0] == id:                
              df = pd.read_csv(file_name, header=None, names=[dir])                
              df_all = pd.concat([df_all, df], axis=1)                
     return df_all

删除原文件防止多次遍历

def del_file(id):
    # 大文件夹路径    
    base = 'E:/2pythonProject/Datasets/ECO/01/01_plugs_csv/'    
    # 获取大文件夹下小文件夹    
    dir_names = os.listdir(base)    
    for dir_name in dir_names:        # 设置小文件夹路径        
        file_path = base + dir_name        # 设置文件路径        
        file = file_path+'/'+id+'.csv'        # 如果路径存在,则删除        
        if os.path.exists(file):           
           os.remove(file)
if __name__ == '__main__':
    base = 'E:/2pythonProject/Datasets/ECO/01/01_plugs_csv/01Fridge/'
    file_names = os.listdir(base)id_set = set()  # set()可以看做一个列表,这里面不包含重复的元素,不可以使用索引
    for file_name in file_names:    
        name = file_name.split('.')[0]  #id    
       # print(name)    
       id_set.add(name)
       # print(id_list)
    for id in id_set:    
       # print(id)    
        df = merge_data(id)    
        save = 'E:/2pythonProject/Datasets/ECO/01/all/'  #存放合并后的文件路径    
        id_path = save + id + '.csv'    
        df.to_csv(id_path)    
        print("\r{:s}合并完成".format(id), end='')    
        del_file(id)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值