Unable to open .csv file ("Error using importdata (line 136) Unable to open file")
Ältere Kommentare anzeigen
Hello!
I am using a loop to open a big number of .csv files. I have applied it to a folder with .csv files and it worked. However,I apply it now to another folder with .csv files and it doesn't work.
The loop is the following:
dd = dir('C:\Users\...\csv');
n=numel(dd);
for k=3:n;
filename=dd(k).name;
A=importdata(filename);
...
end
Any idea why it is not working? Thank you in advance!
Antworten (2)
Azzi Abdelmalek
am 28 Apr. 2014
dd = dir('C:\Users\...\*.csv');
n=numel(dd);
for k=3:n;
filename=dd(k).name;
A{k}=importdata(filename);
...
end
1 Kommentar
papafos
am 29 Apr. 2014
Image Analyst
am 29 Apr. 2014
0 Stimmen
If the only difference is the folder and the particular csv files, then perhaps one is corrupted . Can you attach the one that it bombs on?
8 Kommentare
papafos
am 29 Apr. 2014
Image Analyst
am 29 Apr. 2014
Bearbeitet: Image Analyst
am 29 Apr. 2014
That is not a normal csv file - it has at least two sets of data with a bunch of header lines separating the two. I don't think importdata is set up to handle concatenated files like that.
papafos
am 29 Apr. 2014
Image Analyst
am 29 Apr. 2014
I don't understand. First you say that you have a way to handle it, then you say you don't , or at least it doesn't work when it's in a loop (which doesn't make sense).
Image Analyst
am 29 Apr. 2014
As you agree, it doesn't make sense. All I can do is to try it and try to debug it, so if you want, attach your 70 files and m-file in a zip file, and I'll see if I can try it and reproduce what you're seeing.
Image Analyst
am 4 Mai 2014
Well what must have happened is that in the first case where it ran, you must have had the csv files in the current folder so you didn't need the folder name. In the second case the files were not in the current folder, where the m-file was, or even on the search path. So it didn't know where to find them. When you added
filename=[char2 char1];
now you told it the full filename and it could find them. The proper way, more robust way , to do this is:
folder = 'C:\Users\...\csv\';
if exist(folder, 'dir')
for k=3 : n
fullFileName= fullfile(folder, d(k).name);
if exist(fullFileName, 'file')
A=importdata(fullFileName);
end
end
else
errorMessage = sprintf('Error: folder does not exist:\n%s', folder);
uiwait(warndlg(errorMessage));
end
I suggest you make these changes to improve your code.
Kategorien
Mehr zu Large Files and Big Data finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!