fprintf file timestamp to csv
2 次查看(过去 30 天)
显示 更早的评论
Hi All, I have a directory with unknown number of text files.
fid = dir('*.txt');
How do I fprintf the timestamps (file.date) of all of these files to a csv file? I tried using the datestr() function,datetime(),cell2mat(), brackets {} and [], & cell2str() functions but they don't work and generate errors when I tried to fprinf it to the csv.
Any pointers would help.
Thanks,
0 个评论
采纳的回答
dpb
2016-9-12
编辑:dpb
2016-9-12
fid isn't good variable name for a directory list; too much associated with a file handle.
d=dir('*.txt'); % the directory structure
fid=fopen('file.date','w'); % open an output file
cellfun(@(s) fprintf(fid,'"%s"\n',s),cellstr(char(d.date))) % and write them out quote-delimited
fid=fclose(fid); % done--close file
2 个评论
Walter Roberson
2016-9-13
You do not need to use a cellfun to handle the printing: the solution I gave using a temporary variable handles the task without using cellfun.
The timestamps include characters such as '-' and ':' and spaces that are not valid numbers. The format for csv files requires that strings in csv files be enclosed in double-quotes. The double-quotes being used there are not for the purpose of getting MATLAB to emit strings: they are there to get MATLAB to emit strings that are properly-formatted csv
更多回答(1 个)
Walter Roberson
2016-9-13
d = dir('*.txt');
dates = {d.date};
fid = fopen('file.csv', 'wt');
fprintf(fid, '"%s"\n', dates{:});
fclose(fid);
No loop is needed.
19 个评论
dpb
2016-9-16
I had presumed not; wondered, though, about an array then...guess they're more classes/objects overhead to deal with, then. At this stage of the game I wonder why also but would likely have been preference over the cellstr route they took first...
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!