How to read Multiple CSV files in multiple sub folders
조회 수: 8 (최근 30일)
이전 댓글 표시
Hi,
I want to read multiple csv files in a subfolder(s). I have a main folder, in this main folder many sub folders (here two). I want to read each sub folder, and merge all csv in that subfolder. The merged CSV file name should be the respective subfolder name.
I use the following code, but I am unable to proceed after that, I do not know how to read each subfolder and merge the CVS files.
After merged, I want to read each CSV from output folder, and extract the data in column E (Score).
Kindly some one help.
clc;
clear all;
close all;
inputFolder='D:\Mekala_Backupdata\Matlab2010\InputData';
outputFolder='D:\Mekala_Backupdata\Matlab2010\OutputData';
expList=dir(inputFolder);
isub=[expList(:).isdir];
expID={expList(isub).name};
댓글 수: 0
채택된 답변
Image Analyst
2016년 4월 28일
편집: Image Analyst
2016년 4월 28일
You need to use genpath() to generate a list of all subfolders. Then you can use fullfile() and dir() to get a list of csv files in each one. See attached demo.
댓글 수: 0
추가 답변 (2개)
J. Webster
2016년 4월 28일
Not sure exactly how you want to merge the csvs, but the basic way to run through all the directories is this...
inputFolder='D:\Mekala_Backupdata\Matlab2010\InputData';
cd(inputFolder);
directories = getDirs()
for i=1:length(directories);
mergeFilename = strcat(directory(i).name,'.csv'); %new filename is subfolder name with csv extention.
cd(directory(i).name);
files = dir('*.csv'); %you want just .csv
for j=1:length(files)
...merge your csv files here...
end
cd ..; % or cd(inputFolder);
end
댓글 수: 0
Meade
2017년 3월 2일
This may get you started:
mainFolder = uigetdir(); % Selectyour Main folder
[~,message,~] = fileattrib([mainFolder,'\*']);
fprintf('\n There are %i total files & folders.\n',numel(message));
allExts = cellfun(@(s) s(end-2:end), {message.Name},'uni',0); % Get exts
CSVidx = ismember(allExts,'csv'); % Search ext for "CSV" at the end
CSV_filepaths = {message(CSVidx).Name}; % Use CSVidx to list all paths.
fprintf('There are %i files with *.CSV exts.\n',numel(CSV_filepaths));
for ii = 1:numel(CSV_filepaths)
file(ii)= importdata(CSV_filepaths{ii}) % Your parsing will be different
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 File Name Construction에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!