此脚本下载许多文件。但是,我希望循环在找不到任何文件时继续:找到文件mot。
for ii=1:length(t2)
d=t2(ii);
if year(d)>=2011
download(d)
end
end
有什么想法吗?谢谢
答案 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
检查一切的长级联。