合并不同文件夹下相同文件名文件
转载自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)