2017-06-20 2 views
1

J'ai un dossier contenant de nombreux fichiers .csv. J'ai besoin de charger un fichier à la fois et effectuer quelques opérations. J'ai essayé de charger des fichiers dans une boucle en utilisant la commande csvread et xlsread mais cela ne fonctionne pas. Mes fichiers sont au format .csv mais csvread ne les lit pas car mes fichiers contiennent du texte et des chiffres. Par conséquent, j'ai utilisé `xlsread 'mais j'ai une erreur en disant que le fichier.csv n'a pas pu être trouvé. Je ne suis pas sûr que le problème IS.I utilisez le code suivant pour lire les fichiers dans une boucle:Erreur lors de l'utilisation de xlsread et de csvread

files=dir('foldername'); 
    N=length(files); 
    for i=1:N 
     thisfile=xlsread(files(i).name); 
    end 

fichiers variables est lu comme une structure et il affiche, nom de fichier, emplacementfichier octets et dates. Dois-je convertir en tableau pour lire le contenu du fichier?

+0

fichiers '(i) .name' donne juste le nom du fichier. Incluez-vous le chemin complet? –

Répondre

2

La sortie de dir comprendra les entrées . et .., ainsi que tout autre sous-dossiers 'foldername', de sorte que vous souhaitez supprimer ces premiers. Vous pouvez le faire comme ceci:

files = dir('foldername'); 
files = files(~[files.isdir]); 

Ou, comme Vahe Tshitoyan suggère, vous pouvez gagner seulement les fichiers .csv comme ceci:

files = dir('foldername\*.csv'); 

Si vous avez d'autres fichiers que vous don 't souhaitez traiter dans le dossier, vous devez certainement utiliser la deuxième approche.

Si vous obtenez une erreur indiquant que le fichier est introuvable dans votre appel à xlsread, cela signifie probablement que vous devez spécifier le chemin d'accès complet au fichier au lieu du nom de fichier. Vous pouvez utiliser le champ 'folder' de la structure retournée par dir et passer ainsi que le nom du fichier à fullfile, comme ceci:

for i = 1:N 
    thisfile = xlsread(fullfile(files(i).folder, files(i).name)); 
    % Subsequent processing 
end 
+0

Je reçois une erreur d'invocation en essayant ceci. Ce code est 'xlsread (fullfile (fichiers (i) .folder, fichiers (i) .name))' essayant de lire les fichiers en tant que .xlsx à partir de mon dossier. Mais mon dossier contient des fichiers .csv – Prasanth

+0

@Prasanth: Qu'est-ce qu'une erreur "invoke"? Que voyez-vous dans 'files (i) .folder' et' files (i) .name'? – gnovice

+0

Il est donc impossible de trouver C: \ Users \ Documents \ MATLAB \ myfolder \ files.xlsx. 'files (i) .folder' affiche le chemin vers myfolder et' files (i) .name' affiche un point '.' – Prasanth