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

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

转载自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)

你可能感兴趣的:(笔记)