MATLAB 查找文件夹中的所有文件及其子文件夹扩展名为 .txt 并使用 textscan 读取
MATLAB Find all files in folder with subfolders with extension .txt and read with textscan
我想在包含子文件夹的文件夹中查找所有扩展名为 .txt 的文件。这些子文件夹包含我想使用文本扫描功能阅读的 .txt-files。
.txt-files 包含数字和 header 行:
A B C D
1 0.4 23 42
2 0.3 32 34
这是我试过的。但我总是得到错误:
Error using fopen
Invalid permission.
我做错了什么?我已经尝试使用我在互联网上找到的代码,但它对我的问题不起作用。
dirinfo = dir();
dirinfo(~[dirinfo.isdir]) = []; %remove non-directories
subdirinfo = cell(length(dirinfo));
for k = 1 : length(dirinfo)
thisdir = dirinfo(k).name;
subdirinfo{k} = dir(fullfile(thisdir, '*.txt'));
for m=1:length(subdirinfo)
for n=1:length(subdirinfo{m})
fileID = fopen(subdirinfo{m,n}.name);
C = textscan(fileID,'%f32 %f32 %f32 %f32','HeaderLines',1);
fclose(fileID);
% do stuff
end
end
end
谢谢你帮助我!
代码基本没问题,但你应该去掉'.'和 '..' 目录,只对 subdirinfo 进行一个子查询,你需要给 fopen 目录:
dirinfo = dir();
dirinfo(~[dirinfo.isdir]) = []; %remove non-directories
dirinfo(ismember({dirinfo.name}, {'.', '..'})) = [];
subdirinfo = cell(length(dirinfo), 1);
for k = 1 : length(dirinfo)
thisdir = dirinfo(k).name;
subdirinfo{k} = dir(fullfile(thisdir, '*.txt'));
for n=1:length(subdirinfo{k})
fileID = fopen(fullfile(thisdir, subdirinfo{k}(n).name));
C = textscan(fileID,'%f32 %f32 %f32 %f32','HeaderLines',1);
fclose(fileID);
% do stuff
end
end
我想在包含子文件夹的文件夹中查找所有扩展名为 .txt 的文件。这些子文件夹包含我想使用文本扫描功能阅读的 .txt-files。
.txt-files 包含数字和 header 行:
A B C D
1 0.4 23 42
2 0.3 32 34
这是我试过的。但我总是得到错误:
Error using fopen
Invalid permission.
我做错了什么?我已经尝试使用我在互联网上找到的代码,但它对我的问题不起作用。
dirinfo = dir();
dirinfo(~[dirinfo.isdir]) = []; %remove non-directories
subdirinfo = cell(length(dirinfo));
for k = 1 : length(dirinfo)
thisdir = dirinfo(k).name;
subdirinfo{k} = dir(fullfile(thisdir, '*.txt'));
for m=1:length(subdirinfo)
for n=1:length(subdirinfo{m})
fileID = fopen(subdirinfo{m,n}.name);
C = textscan(fileID,'%f32 %f32 %f32 %f32','HeaderLines',1);
fclose(fileID);
% do stuff
end
end
end
谢谢你帮助我!
代码基本没问题,但你应该去掉'.'和 '..' 目录,只对 subdirinfo 进行一个子查询,你需要给 fopen 目录:
dirinfo = dir();
dirinfo(~[dirinfo.isdir]) = []; %remove non-directories
dirinfo(ismember({dirinfo.name}, {'.', '..'})) = [];
subdirinfo = cell(length(dirinfo), 1);
for k = 1 : length(dirinfo)
thisdir = dirinfo(k).name;
subdirinfo{k} = dir(fullfile(thisdir, '*.txt'));
for n=1:length(subdirinfo{k})
fileID = fopen(fullfile(thisdir, subdirinfo{k}(n).name));
C = textscan(fileID,'%f32 %f32 %f32 %f32','HeaderLines',1);
fclose(fileID);
% do stuff
end
end