csv file reading limits question
    4 views (last 30 days)
  
       Show older comments
    
Hello, I'm trying to import the data from multiple csv files. My csv files have different numbers of heading lines. for example:
File one:
DATE = 20020414
TIME = 0723
Data 1, Data 2,
1,2
3,4...
File two:
DATE = 20020414
Data 1, Data 2,
1,2
3,4
4,5...
I have a code that works for a single csv file, using csvread/dlmread where I manually assign the row and column limits, but I would like to write a general code that can search for the number of headers in a specific file and adapt limits for file reading accordingly. Is there an easy way to do this? Should I be using a different function to read my data? (textscan, etc?)
2 Comments
  Jan
      
      
 on 26 Jan 2011
				How do you distinct header lines from data lines? Do header lines never start with a number character, but data lines always do?
Answers (2)
  Walter Roberson
      
      
 on 26 Jan 2011
        Provided that you have the same number of columns in each of the files:
fid = fopen(CurrentFileName,'rt');
failed = 0;
if fid < 0
  disp(sprintf('Failed to open file: %s', CurrentFileName))
  failed = 2;
else
  while true
    pos_at_line = fseek(fid);
    this_line = fgetl(fid);
    if ~ischar(this_line)
      disp(sprintf('File has no dataset: %s', CurrentFileName))
      failed = 1;
      break
    elseif any(this_line == '=')
      continue
    else
      fseek(fid,pos_at_line,'bof');
      break
    end
end
if failed == 0
  inputdata = textscan(fid, ...... );  %use an appropriate format
end
if failed <= 1
  fclose(fid);
end
0 Comments
See Also
Categories
				Find more on Text Files in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

