使用try和except跳过文件

时间:2018-12-28 08:57:25

标签: python numpy try-except

我正在定义两个日期之间的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')时,此代码始终停止。

如何跳过此文件并继续仅串联存在的文件?

谢谢。

3 个答案:

答案 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