Python遍历文件夹存入list,并合并多文件夹中后缀名相同的文件

目前一共有五个文件夹,每个文件夹中有多个csv文件,文件夹分别为N、N1、N2、N3、N4.

每个文件夹中的csv文件都是以子文件夹名称+日期命名。

均有相同列"Unnamed : 0"(默认第一列)。

需求就是使用for循环将每个日期的五个csv表格合并在一起。

代码主要分为两个部分:

(1)for循环读取文件夹N,将文件名存入listN。

①因为首先要找到一个文件,然后以这个文件的日期去找到另外四个文件。

所以先通过for循环读取N文件夹中的所有文件名,并将这些文件名存入一个list中,即listN。

(因为文件名全程还包含了前面的地址,所以这里我只取了文件后16位的文件名)

(2)遍历listN中的每一个文件名,同时找到另外四个后缀名(日期)相同的文件。

首先循环遍历listN,从path_N中找到当前日期的文件,确定日期后,在剩下的四个文件夹中找到后缀名相同的四个文件,每次两个文件按进行merge全连接合并,合并后的新文件更新之前的旧文件,直至最后一个文件并入,再转换成csv导出,导出多个不同名文件。

import pandas as pd
import numpy as np
import os

def allDir(path):
    f=[]
    for root,dirs,files in os.walk(path):
        for filespath in files:
            filename = filespath[-16:]
            #print(os.path.join(root,filespath))
            f.append(filename)
    return(f)
listN = allDir("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\Result\\N")
print(listN)

path_N = "C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\Result\\gg"
path_bt = "C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\Result\\N"

for i in listN:
    filename = i
    # print("filename=",filename)
    df = pd.read_csv(os.path.join(path_N,filename),encoding = 'gb2312',dtype='str')
    # print('df=',df)
    for j in range(1,5):
        nfilename = 'N'+str(j)+ filename[-14:]
        dff = pd.read_csv(os.path.join(path_bt + str(j)+"\\"+ nfilename),usecols=['Unnamed: 0','s'+str(j)], encoding='gb2312', dtype='str')
        # print('dff=',dff)
        #合并df, dff
        df_loc = pd.merge(df,dff,on='Unnamed: 0',how='outer')
        # 更新合并后的df
        df = df_loc
        print('df_loc=', df_loc)
    df_loc.to_csv('forall'+filename[-14:]+'.csv',header=True,index=False)

其中关于os.path.join的具体使用可以参考博客:os.path.join()函数 - 简书

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值