Borrar filtros
Borrar filtros

Using a variable in fopen

14 visualizaciones (últimos 30 días)
Andrew
Andrew el 11 de Sept. de 2014
Comentada: Andrew el 23 de Sept. de 2014
I want to run a loop that will access files from multiple folders
I used dir to retrieve the names of the folders and I want to be able to feed the names into fopen.
ex:
folder = dir('W:\Examples')
#_of_folders = numel(folder)
for i=1:#_of_folders
fid = fopen('W:\Examples\folder([i])')
...
end
How can I enter that variable into fopen? Is there a better way of achieving this?
I did take a look at this thread, but I am still having trouble.
Thank you
  1 comentario
Stephen23
Stephen23 el 11 de Sept. de 2014
Don't forget to use fclose after you have read the file data! This will save a lot of bug-finding nightmares later...

Iniciar sesión para comentar.

Respuesta aceptada

Iain
Iain el 11 de Sept. de 2014
init = 'W:\Examples';
folder = dir(init)
for i = 1:numel(folder)
% do something with folder(i) to figure out if it's a file you want to open, or a folder you want to search, and if so:
filename = [init '\' folder(i).name]; % or filename = [init '\' folder(i).name '\' folder(i).name '.abc']; if you know that the folders contain files with the same name as the folder and a fixed extension...
% do something with filename
fid = fopen(filename,'r');
end

Más respuestas (1)

Ken Atwell
Ken Atwell el 11 de Sept. de 2014
You can use fullfile as a convenient way to create a full path from parts. 'folder' as returned by dir will be an array of structs -- you are interested in the 'name' field.
(Note you can't use "#" as part of a MATLAB variable name, so I've use "num_files" instead)
folder = dir('W:\Examples')
num_files = numel(folder)
for i=1:num_files
fid = fopen(fullfile('W:\Examples', folder(i).name))
...
end
  3 comentarios
Ken Atwell
Ken Atwell el 12 de Sept. de 2014
I'm not quite following, but you can pass an arbitrary number of pieces to fullpath:
fid = fopen(fullpath('W:\Examples', folder(i).name, 'folder', 'file'))
Andrew
Andrew el 23 de Sept. de 2014
Thank you, this worked perfectly

Iniciar sesión para comentar.

Categorías

Más información sobre Low-Level File I/O en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by