Reading Multiple CSV Files in a Sequence

19 views (last 30 days)
I wrote a code to read and process 55 csv files.
The first step was to read the data and save it in a cell structure in away that each csv file would be saved in a cell a table:
d=dir('*.csv'); % list all csv files in working directory
n = length(d); % number of files in the directory
tempdata=cell(1,n); % preallocate a cell array to hold results
for i=1:n
tempdata{i}=readtable(d(i).name); % read each file
I expected that the 1st. csv file will be stored in tempdata{1,1}, 2nd in cell tempdata{1,2}, etc.. but I noticed that:
tempdata{1,1} = file1.csv
tempdata{1,2} = file10.csv
tempdata{1,3} = file11.csv
tempdata{1,12} = file2.csv
How can I change the sequence of saved files so:
tempdata{1,1} = file1.csv
tempdata{1,2} = file2.csv
tempdata{1,3} = file3.csv
tempdata{1,10} = file10.csv
tempdata{1,55} = file55.scv
Appreciate the time and efforts that you put to answer this question.

Accepted Answer

Mathieu NOE
Mathieu NOE on 16 Feb 2023
that's the Achille heel of the native dir command
it will not sort the file names correctly
my example below :
%% read multiple files
P = pwd; % currrent directory
S = dir(fullfile(P,'*.csv')); % get list of files in directory
S = natsortfiles(S); % sort folders / file names into order (
for k = 1:numel(S);
F = fullfile(P, fileNames_sorted{k});
S(k).data = csvimport(F); % or READTABLE or whatever.
% Take a look in the structure S: it contains all of your file data and the corresponding filenames, just as you require.
% For example, the 2nd filename and its data:
% Accessing and processing this will be much simpler than messing around with dynamically named variables.
Usama Al-Saffar
Usama Al-Saffar on 16 Feb 2023
Thank you Stephen. I already figure that out and downloaded the function.

Sign in to comment.

More Answers (0)


Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by