使用 try 和 except 跳过一个文件
Use try and except to skip a file
我正在定义 2 个日期之间的 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’)时停止。
如何跳过此文件并继续仅连接存在的文件?
提前致谢。
你的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
您需要将 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
如果您还考虑其他方法,这里有一个简单的方法可以达到您的目的。
用这个来操作系统
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 个日期之间的 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’)时停止。
如何跳过此文件并继续仅连接存在的文件?
提前致谢。
你的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
您需要将 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
如果您还考虑其他方法,这里有一个简单的方法可以达到您的目的。
用这个来操作系统
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]))