墨玉青釭剑 2023-04-06 22:11 采纳率: 100%
浏览 62
已结题

Matlab读取文件夹下所有文件名,并实现合并

最近用Matlab处理文本遇到一个很棘手的问题。
问题:用Matlab实现某一个文件夹下所有子文件夹名的读取,然后通过for循环,把子文件夹名和父级目录合并,形成一个完整的路径,再利用fopen打开这个子文件夹,对子文件夹下的所有文件进行读写操作。
想法:用dir函数实现文件夹名的读取,再通过sprintf实现路径的合并。
困难:dir函数得到的是结构体数组,但是父级目录需要通过元胞数组进行复制,这两种数组转换的原理并不是很清晰,或者说是否有更简单直接的方法,还请不吝赐教,谢谢。

  • 写回答

4条回答 默认 最新

  • Karaterelope 2023-04-06 22:52
    关注
    
    matlab
    % 设置父级目录
    parent_dir = 'C:\example\';% 获取所有子文件夹名
    sub_dirs = dir(parent_dir);
    sub_dirs = sub_dirs([sub_dirs.isdir]); % 只保留文件夹
    sub_dirs = sub_dirs(3:end); % 去除 . 和 ..% 遍历所有子文件夹
    for i = 1:length(sub_dirs)
        % 获取子文件夹名
        sub_dir_name = sub_dirs(i).name;
        
        % 合并路径
        sub_dir_path = sprintf('%s%s\\', parent_dir, sub_dir_name);
        
        % 打开子文件夹
        sub_dir = dir(sub_dir_path);
        
        % 遍历子文件夹下的所有文件
        for j = 1:length(sub_dir)
            % 获取文件名
            file_name = sub_dir(j).name;
            
            % 排除 . 和 ..
            if strcmp(file_name, '.') || strcmp(file_name, '..')
                continue;
            end
            
            % 合并路径
            file_path = sprintf('%s%s', sub_dir_path, file_name);
            
            % 打开文件
            fid = fopen(file_path, 'r');
            
            % 读写操作
            % ...
            
            % 关闭文件
            fclose(fid);
        end
    end
    这段代码首先设置了父级目录,然后使用dir函数获取所有子文件夹名,并遍历所有子文件夹。在遍历每个子文件夹时,使用sprintf函数将子文件夹名和父级目录合并成完整路径,并使用dir函数获取子文件夹下的所有文件。在遍历每个文件时,使用sprintf函数将文件名和子文件夹路径合并成完整路径,并使用fopen函数打开文件进行读写操作。最后使用fclose函数关闭文件。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图