How to transfer folder structure to struct data?

6 visualizzazioni (ultimi 30 giorni)
I have big data inside some folder structure.
I need transfer almost whole(bold path) folder structure in my final struct file with data.
Question is: How to do it better than it is? I know I have 'dir' function but how to use it more smart in my case..
Structure like this:
C:\...\folders\release\mode\const\var\...\... .txt
folders=dir(path);
datas=struct;
s_fol=size(folders,1);
for ii=3:s_fol
cd(path);
if isfolder(folders(ii).name)
fol_now=folders(ii).name;
datas.(fol_now)=struct;
datas.(fol_now).Released=struct;
mode_folder=dir(strcat(path,{'\'},folders(ii).name,{'\Released'}));
s1_fol=size(mode_folder,1);
for ii1=3:s1_fol
cd(strcat(path,{'\'},folders(ii).name,{'\Released'}))
if isfolder(mode_folder(ii1).name)
mode_fol_now=mode_folder(ii1).name;
datas.(fol_now).Released.(mode_fol_now)=struct;
datas.(fol_now).Released.(mode_fol_now).dyn=struct;
var_fol=dir(strcat(path,{'\'},folders(ii).name,{'\Released\'},mode_fol_now,{'\dyn'}));
s2_fol=size(var_fol,1);
for ii2=3:s2_fol
cd(strcat(path,{'\'},folders(ii).name,{'\Released\'},mode_fol_now,{'\dyn'}))
if isfolder(var_fol(ii2).name)
var_fol_now=var_fol(ii2).name;
datas.(fol_now).Released.(mode_fol_now).dyn.(var_fol_now)=struct;
actual_name=strcat(path,{'\'},folders(ii).name,{'\Released\'},mode_fol_now,{'\dyn\'},var_fol_now);
cd(actual_name)
if exist('config.m', 'file') == 2
% PROCESSING DATA & STORE IN STRUCT
end
end
end
end
end
end
end
  5 Commenti
Eduard Mazur
Eduard Mazur il 31 Mag 2019
It doesn't matter, processing .txt inside core program.
existance config.m in defined folder -- condition for run core program.
I just intresting in creating folder structure like in windows
Jan
Jan il 31 Mag 2019
I do not understand the 3 sentences of this comment.
What is a "core program" and which ".txt" files are processed by what?
How can this information be used: "existance config.m in defined folder -- condition for run core program"?
In which windows? A folder structure can be found in the file system. Are you sure that it is useful to copy this structure to a nested struct?

Accedi per commentare.

Risposta accettata

Jan
Jan il 31 Mag 2019
It does not sound like a good design to use the folder names as field names. Keeping the names in a cell string might be smarter:
data(k).value = rand(10);
data(k).condition = {'folders', 'release', 'mode', 'const', 'var'};
Deeply nested structs are rarely useful for processing. But if you have a good reason to do so:
% Get all config.m files recursively (It is just a guess, that you need this):
BasePath = 'C:\Temp\';
FileList = dir(fullfile(BasePath, '**\config.m'));
data = struct([]);
for iFile = 1:numel(FileList)
Folder = FileList(iFile).path(numel(BasePath)+1:end);
Keys = strsplit(Folder, filesep);
data.(Keys{1}).(Keys{2}).(Keys{3}).(Keys{4}).(Keys{5}) = ???
end

Più risposte (0)

Categorie

Scopri di più su Structures in Help Center e File Exchange

Prodotti


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by