read multiple csv files from different subfolders

36 次查看(过去 30 天)
I have a folder, "Raw data", which contains subfolders for subjects 005 - 016. In each subfolder, I want to choose a subsubfolder, "A". In "A" folder, there are 23 .csv files. How can I read them as individual file (without merging them) at once, maybe using a loop function of other methods?

回答(3 个)

Four Eyes
Four Eyes 2023-10-13
编辑:Four Eyes 2023-10-13
This might be coming in too late. But I recently ran accross a similar problem and here is what that worked for me. Hopefully it is useful to someone!
Suppose you have Fodler 1 stored somewhere like C:\Users\username...\Folder1\....
And You have multiple subfolders like this:
C:\Users\username...\Folder1\Subfolder1\Random_name1.csv; C:\Users\username...\Folder1\Subfolder1\Random_name2.csv;
C:\Users\username...\Folder1\Subfolder2\Random_name3.csv; C:\Users\username...\Folder1\Subfolder2\Random_name4.csv;
and so on
%To read all the file names, do this:
location = C:\Users\username...\Folder1\**\;
files= dir([location '*.csv'])
%To read the data and store in a matrx, do this:
for ii = 1:length(files)
data(:,:,ii) = readmatrix([files(ii).folder '\' files(ii).name]);
end
  1 个评论
Image Analyst
Image Analyst 2023-10-13
but for robustness you should use fullfile to construct the file pattern and filename.
% To read all the file names, do this:
location = "C:\Users\username...\Folder1\**\";
filePattern = fullfile(location, "*.csv")
files = dir(filePattern)
% To read the data and store in a 3-D array, do this:
% (NOTE: all data must be the same size 2-D matrix).
for ii = 1 : length(files)
fullFileName = fullfile(files(ii).folder, files(ii).name);
fprintf('Processing %d of %d : "%s".\n' ii, numel(files), fullFileName)
data(:,:,ii) = readmatrix(fullFileName);
end

请先登录,再进行评论。


prasanth s
prasanth s 2019-10-17
编辑:prasanth s 2022-12-14
Use 'dir' function to get the directory and file list of any folder. e.g
D=dir('Raw data');
output 'D' is an structure array contains all foldernames.
use following code to get all csv filenames
A=dir('myfolder\*.csv');
get the filenames from 'A' and
use 'csvread' function to read each csv files

Image Analyst
Image Analyst 2022-12-14
Try this:
% Specify top level folder and file pattern.
topLevelFolder = pwd; % Or whatever you want.
filePattern = fullfile(topLevelFolder, '*.csv')
% Get a list of all files in that folder and within its subfolders.
ds = fileDatastore(filePattern, 'ReadFcn', @readmatrix)
allFileNames = ds.Files

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by