最近用Matlab处理文本遇到一个很棘手的问题。
问题:用Matlab实现某一个文件夹下所有子文件夹名的读取,然后通过for循环,把子文件夹名和父级目录合并,形成一个完整的路径,再利用fopen打开这个子文件夹,对子文件夹下的所有文件进行读写操作。
想法:用dir函数实现文件夹名的读取,再通过sprintf实现路径的合并。
困难:dir函数得到的是结构体数组,但是父级目录需要通过元胞数组进行复制,这两种数组转换的原理并不是很清晰,或者说是否有更简单直接的方法,还请不吝赐教,谢谢。
Matlab读取文件夹下所有文件名,并实现合并
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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函数关闭文件。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
- ¥15 ArcGIS批量裁剪
- ¥15 labview程序设计
- ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
- ¥15 Cloudreve保存用户组存储空间大小时报错
- ¥15 伪标签为什么不能作为弱监督语义分割的结果?
- ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
- ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
- ¥15 android 集成sentry上报时报错。
- ¥15 抖音看过的视频,缓存在哪个文件