MATLAB遍历文件夹及其子目录下所有特定的CSV文件

需求

我有一个文件夹,命名为maindir,第一级子目录subdir,第二级子目录sub2dir,第三级目录sub3dir,所有csv文件存放在第三级子目录sub3dir中,我该如何将文件夹中的所有csv文件取出来呢?

网上找了不少答案,然后没有找到合适的,自己写了一个,因此记录一下。

代码实现

dir、 fullfile函数的用法

dir(path)的作用是列出path中的所有文件夹,其中包含两个隐藏文件夹...,其中一个点表示的是当前目录,两个点表示的是上一级目录。
fullfile(filepart1,filepart2...filepartN),表示的是将各部分的路径组合起来构成一个完整的文件名,举个例子就很容易明白了。
fullfile('C:','desktop','1.csv')

代码思路

这里需要理解的代码思路是使用层次遍历访问csv文件,因此,需要遍历几次文件夹,便需要几次循环。因此本方法仅适用于小于5层子目录的情况。多于5层的情况需要适用深度遍历。

maindir='E:\database'; %假设E盘中的database为总文件夹

subdir=dir(maindir); %得到的为一个结构体文件,长度为文件夹项目长度加2(一个点和两个点也在其中)
for i=1:length(subdir)
	if(isequal(subdir(i).name,'.')||isequal(subdir(i).name,'..')||~subdir(i).isdir())
        continue;%表示如果subdir表示的是当前目录,上层目录或者不是文件夹则跳过
    end
    sub2dirpath=fullfile(maindir,subdir(i).name);
    sub2dir=dir(sub2dirpath);
    for j =1:length(sub2dir)
        if(isequal(sub2dir(j).name,'.')||isequal(sub2dir(j).name,'..')||~sub2dir(j).isdir())
            continue;%表示如果subdir表示的是当前目录,上层目录或者不是文件夹则跳过
        end
        sub3dirpath=fullfile(maindir,subdir(i).name,sub2dir(j).name,'*.csv');%找出所有的csv文件
        % 此处可以根据csv文件名将其中数据提取出来或做其他处理,或将csv文件路径分别保存起来均可
   end
end
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值