【发布时间】:2013-04-17 01:07:28
【问题描述】:
我有 20 个文本文件,我想使用 matlab 循环来获取每个文件的最后一行,而不考虑其他行。有什么matlab命令可以解决这个问题吗?
【问题讨论】:
-
每个文件的行数不一样,可以是随机的。
我有 20 个文本文件,我想使用 matlab 循环来获取每个文件的最后一行,而不考虑其他行。有什么matlab命令可以解决这个问题吗?
【问题讨论】:
您可以尝试的一件事是将文本文件作为二进制文件打开,查找文件末尾,然后从文件末尾向后读取单个字符(即字节)。此代码将从文件末尾读取字符,直到遇到换行符(如果在文件末尾找到换行符,则忽略换行符):
fid = fopen('data.txt','r'); %# Open the file as a binary
lastLine = ''; %# Initialize to empty
offset = 1; %# Offset from the end of file
fseek(fid,-offset,'eof'); %# Seek to the file end, minus the offset
newChar = fread(fid,1,'*char'); %# Read one character
while (~strcmp(newChar,char(10))) || (offset == 1)
lastLine = [newChar lastLine]; %# Add the character to a string
offset = offset+1;
fseek(fid,-offset,'eof'); %# Seek to the file end, minus the offset
newChar = fread(fid,1,'*char'); %# Read one character
end
fclose(fid); %# Close the file
【讨论】:
它可能效率不高,但对于短文件来说就足够了。
function pline = getLastTextLine(filepath)
fid = fopen(filepath);
while 1
line = fgetl(fid);
if ~ischar(line)
break;
end
pline = line;
end
fclose(fid);
【讨论】: