我有一个巨大的.txt文件和我要解析的部分文件(使用文本扫描),比如我有10000行数据和从300行开始的部分,该部分也有10行的标题,我怎么能跳过前300行(当然不使用文本扫描的标题功能,因为我无法获得我的实际10行标题)或者是否有一种方法可以跳转到第300行并从中开始文本扫描好像301线是第一线。
答案 0 :(得分:0)
因此,假设您的数据是由以下内容生成的(因为您尚未提及问题中的格式如何):
fid = fopen('datafile.txt', 'w');
for i=1:300
fprintf(fid, 'ignore%d\n', i);
end
for i=301:310
fprintf(fid, 'header%d\n', i);
end
for i=311:10000
fprintf(fid, '%d\n', i);
end
fclose(fid);
您可以首先使用fgetl
前进到第300行,然后使用textscan
两次获取标题信息和数据来读取数据。基本上,要记住的是textscan
从fid
指向的地方开始工作。因此,如果它指向第301行,它将从那里开始扫描。所以,这里是从第301行开始读取上述文件的代码:
fid = fopen('datafile.txt', 'r');
for i=1:300
fgetl(fid);
end
scannedHeader = textscan(fid, '%s', 10);
scannedData = textscan(fid, '%d');
fclose(fid);
NB:如果数据始终采用相同的格式,您可以使用ftell
知道要跳到的位置,然后使用fseek
转到该偏移量。< / p>