我正在定义两个日期之间的nc文件列表:
inlist = ['20180101.nc’, ‘20180102.nc’, ‘20180103.nc’]
假设中间的文件('20180102.nc')不存在。
我正在尝试使用一个异常并跳过它,然后继续其余的操作,但是我无法处理。
这是我的代码。请注意,ncread(i)[0]是一个读取一个变量的函数,该变量随后在xap中串联:
xap = np.empty([0])
try:
for i in inlist:
xap=np.concatenate((xap,ncread(i)[0]))
except IOError as e:
print "I/O error({0}): {1}".format(e.errno, e.strerror)
continue
当尝试读取不存在的文件('20180102.nc')时,此代码始终停止。
如何跳过此文件并继续仅串联存在的文件?
谢谢。
答案 0 :(得分:2)
您的try / except放在错误的级别,您想尝试读取,当读取失败时,继续循环。这意味着try / except必须在循环内:
xap = np.empty([0])
for i in inlist:
try:
xap=np.concatenate((xap,ncread(i)[0]))
except IOError as e:
print "I/O error({0}): {1}".format(e.errno, e.strerror)
continue
答案 1 :(得分:0)
如果您还考虑另一种方法,这是达到目的的一种简单方法。
import os
filelist=os.listdir("./")
inlist = ['20180101.nc', '20180102.nc', '20180103.nc']
xap = np.empty([0])
for i in inlist:
##** only read the "i" in filelist**
if i in filelist: xap=np.concatenate((xap,ncread(i)[0]))
答案 2 :(得分:-1)
您需要将IOError
更改为FileNotFoundError
:
xap = np.empty([0])
try:
for i in inlist:
xap=np.concatenate((xap,ncread(i)[0]))
except FileNotFoundError as e:
print "FileNotFoundError({0}): {1}".format(e.errno, e.strerror)
continue