How do I check if a folder exists which has a variable name?
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I want to check if the created folder already exists. But the name of the folder depends on the file I work with.
fname = Measurement_20190829_18_15_10.bin
if ~exist('Figures' fname(11:end-4), 'dir')
mkdir('Figures', fname(11:end-4));
end
I have no clue how to make this work.
I always get Invalid expression with a marker on fname.
Please help.
Thank you!
3 个评论
Stephen23
2019-8-29
编辑:Stephen23
2019-8-29
"How does fileparts help me in this example?"'
Instead of using this fragile, very non-robust code to obtain the filename without the extension:
fname(11:end-4)
you can simply use robust fileparts:
[~,name] = fileparts(fname);
"But the exist does not work properly."
exist does work properly. Read the last four lines of my previous comment.
采纳的回答
Stephen23
2019-8-29
编辑:Stephen23
2019-8-29
[~,name] = fileparts(fname);
exist(fullfile('Figures',name), 'dir')~=7
Note that exist does NOT return a boolean value, it returns different integers for specific object types. It is strongly recommended to test for the specific integer that is returned for the specific object type that you are trying to locate.
更多回答(1 个)
Johannes Fischer
2019-8-29
编辑:Johannes Fischer
2019-8-29
Your code is trying to store in fname the content of the field 'bin' of the struct 'Measurement_20190829_18_15_10', which propably doesnt exist.
fname needs to be a char array:
fname = 'Measurement_20190829_18_15_10.bin';
I have no idea about your folder structure, but Im guessing its 'Figures\t_20190829_18_15_10' ? If so, you would need to write
mkdir(['Figures\', fname(11:end-4)]);
and the same as the argument for 'exist'
5 个评论
Stephen23
2019-8-29
"..but how should it look like with my code."
See my answer.
It uses more robust fileparts rather than fragile indexing.
It uses simple fullfile to join the folder and file names.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!