在循环内追加:跳过不存在的文件

append within loop: Skipping non-existing files

这个问题是关于:Import timeseries via loop (pot. generic)

我想导入位于同一目录中的任意数量的文件,但不是连续标记的,例如:file_1、file_4、file_3001

我有一个小型导入脚本,适用于类似于以下内容的连续文件:

scalar first = 1 #the first file is file_1.tsv
scalar last = 5000 #the last file
base_path = "c:/results/file_"
sprintf temp_path "%s%d.tsv",base_path,first
open @temp_path --preserve
setobs 1 1 --special-time-series    
loop for (i=first+1;i<=last;i+=1) --quiet
    sprintf temp_path "%s%d",base_path,i
    append @temp_path 
endloop

现在,当我在上述设置(缺少文件)上使用它时,出现错误并且脚本停止:

Couldn't open ...

是否有可能以某种方式继续/捕获错误并"continue"?

我认为 "catch" 命令可以满足您的需求。看看下面的代码:

# Creating files
open australia.gdt
store 0.gdt PAU
store 1.gdt PUS
store 2.gdt E
store 4.gdt IAU
store 8.gdt IUS
store 10.gdt le

# Opening created files
open 0.gdt
loop i = 1..10
    catch append $i.gdt
endloop