当文件不存在时如何继续循环?

时间:2017-06-08 08:42:39

标签: matlab

此脚本下载许多文件。但是,我希望循环在找不到任何文件时继续:找到文件mot。

for ii=1:length(t2)
   d=t2(ii);
   if year(d)>=2011
       download(d)

 end
end 

有什么想法吗?谢谢

3 个答案:

答案 0 :(得分:2)

我猜测download是一个从服务器下载内容的功能,因此我不知道exist将如何运作。无论哪种方式,您只需使用try catch块:

for ii=1:length(t2)
    d=t2(ii);
    if year(d)>=2011
        try
            download(d)
        catch
        end
    end
end

答案 1 :(得分:0)

您可以添加' if' download(d)语句之前的语句,询问文件是否存在。类似的东西:

for ii=1:length(t2)
   d=t2(ii);
   if year(d)>=2011
       if exist(d)   % where d is the file
          download(d)
       else
          continue  % Jump to next loop iteration if file doesn't exist
       end
   end
end 

假设' d'是您要下载的问题文件。您可能需要使用文件的整个地址来确保Matlab能够找到它。

答案 2 :(得分:0)

除了下载前的检查,您还可以执行try-catch。如果文件丢失或某些内容(download确实存在,则此load可能会引发错误,但我没有download)。您收到load的错误:

使用加载时出错 无法阅读文件' lala.m'。没有这样的文件或目录。

现在与try-catch相同:

try
   load('lala.m')
catch
   disp('No such file')
end 

它会显示No such file,这可能不是load引发的真正错误,但您可以执行多次捕获。

当唯一可能出错的事情是"文件不存在"时,这并没有很大的优势,但如果你有多个可能的失败点,你可以拥有单个{{1} (如果你不关心出了什么问题,只是做了些什么),而不是try-catch检查一切的长级联。