Lecture d'un lot de fichiers
Il est courant de disposer d'un ensemble de fichiers de données expérimentales à traiter.
Vous trouverez ici un dossier de fichiers de données CSV, que l'on souhaite traiter par lot :
Dossier contenant des fichiers CSV [zip]
Vous pouvez télécharger et décompresser cette archive pour disposer des fichiers CSV d'exemple.
La fonction dir
permet de récupérer la liste des fichiers contenus dans un répertoire, en les filtrant selon leur extension.
Syntaxe :
La fonction dir
prend comme argument une chaîne de caractères représentant le chemin vers un répertoire. Ce chemin peut comporter le symbole *
(wildcards), qui est ce que l'on appelle un méta-caractère ou un joker : il permet de remplacer n'importe quel caractère ou groupe de caractères.
1 | liste = dir ( 'repertoire/*' ) |
La fonction renvoie alors une structure correspondant à l'ensemble des fichiers se trouvant dans le répertoire indiqué, et respectant le filtre précisé. Cette structure comporte différents champs permettant de connaître principalement le nom du fichier, sa taille et la date de sa création.
Exemple :
La commande suivante renvoie dans la variable listeFichiersCSV
une structure correspondant à tous les fichiers du répertoire DATAS
ayant pour extension csv
.
1 | listeFichiersCSV = dir ( './DATAS/*.csv' ) ; |
Exemple :
Dans l'exemple qui suit, une fois que l'on a la liste des fichiers qui nous intéressent, c'est-à-dire correspondant aux données expérimentales que l'on veut représenter, une simple structure for
permet alors de parcourir l'ensemble des fichiers pour les traiter.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | %% % Fabien Baillon et Jean-Louis Dirion - Nov.2014 % Exemple de traitement par lot % clear all clc % experience = 'ManipsLS5' ; extension = 'csv' ; %% % Récupération de la liste des fichiers de données présents dans le dossier % d'expérience filelist = dir ([experience, '/*' ,extension]); nfiles = length (filelist); % % Pour chaque fichier, on récupère les infos (dates, heures) et les données % les données sont stockées dans des tableaux RAIES et DATAS LEGENDS = []; for ifile = 1:nfiles disp ([ 'Traitement du fichier n° ' ,sprintf( '%d' ,ifile)]) probname = filelist(ifile).name; probdate = filelist(ifile).date; tmp= csvread ([experience, '/' ,probname]); % if ~exist( 'DATAS' ) RAIES = tmp(:,1); DATAS = tmp(:,2); else DATAS = [DATAS tmp(:,2)]; end % LEGENDS = [LEGENDS; [experience, ' : ' ,probdate]]; end %% % plot (RAIES,DATAS); legend (LEGENDS); xlabel ( '\lambda (cm^{-1})' ); ylabel ( 'Intensité I (UA)' ); title ( 'Spectres RAMAN' ); |