read multiple csv files from different subfolders

4 visualizaciones (últimos 30 días)
Jiaqi Wang
Jiaqi Wang el 17 de Oct. de 2019
Comentada: Image Analyst el 13 de Oct. de 2023
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?

Respuestas (3)

prasanth s
prasanth s el 17 de Oct. de 2019
Editada: prasanth s el 14 de Dic. de 2022
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 el 14 de Dic. de 2022
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

Four Eyes
Four Eyes el 13 de Oct. de 2023
Editada: Four Eyes el 13 de Oct. de 2023
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 comentario
Image Analyst
Image Analyst el 13 de Oct. de 2023
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

Iniciar sesión para comentar.

Categorías

Más información sobre File Operations 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