필터 지우기
필터 지우기

Using a variable in fopen

조회 수: 18 (최근 30일)
Andrew
Andrew 2014년 9월 11일
댓글: Andrew 2014년 9월 23일
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
Stephen23
Stephen23 2014년 9월 11일
Don't forget to use fclose after you have read the file data! This will save a lot of bug-finding nightmares later...

댓글을 달려면 로그인하십시오.

채택된 답변

Iain
Iain 2014년 9월 11일
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

추가 답변 (1개)

Ken Atwell
Ken Atwell 2014년 9월 11일
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
Ken Atwell
Ken Atwell 2014년 9월 12일
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 2014년 9월 23일
Thank you, this worked perfectly

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Low-Level File I/O에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by