0

我有一个数据库目录,它读取图像路径以及其他属性,并且有一部分试图在代码中打开数据集,以便如果打开成功,其他进程可以继续,但我遇到了一个关于如何在下面的代码之后告诉进程继续,代码运行顺利,但是当它遇到无法打开的图像时它会停止而不是去开始再次读取数据库并打开新图像。

try:  
    hDataset = gdal.Open( pszFilename, gdal.GA_ReadOnly )  
    except IOError:  
    print("gdalinfo failed - unable to open '%s'." % pszFilename )  
    status = "UPDATE %s SET job = 11  WHERE id = %s" % (table,row[2])  
    setstatus = conn.cursor()  
    setstatus.execute(status)  
    conn.commit()  
    setstatus.close()  
else:  
    print "file opened sucessfully"  
    hDataset.close()
4

1 回答 1

0

GDAL 通常不会抛出异常,这是一种耻辱。gdal.UseExceptions()打开后,它有时会抛出(RuntimeError仅!),但我还没有发现这个功能非常可靠。

如果不成功,一些带有 GDAL 的函数会返回None,而其他函数则返回一个状态整数,其中 0 是好的,非零是错误代码。

我使用的典型形式是这样的:

hDataset = gdal.Open(pszFilename, gdal.GA_ReadOnly)
if hDataset is None:
    raise IOError("Could not open '%s'" % (pszFilename,))

band_num = 1
band = hDataset.GetRasterBand(band_num)
if band is None:
    raise AttributeError("Raster band %s cannot be fetched" % (band_num,))
...
于 2013-01-27T06:41:00.133 回答