在Python中处理netCDF文件时出错

时间:2018-04-18 09:24:19

标签: python-3.x netcdf

我使用Python代码从netCDF文件中提取数据。我需要检查netCDF文件是否与CORDEX标准一致(CORDEX是协调工作以进行区域气候模型的建模实验)。为此,我需要访问netCDF文件的属性。如果找不到该属性,则代码应转到下一个文件。

我的代码的snipet如下:

import netCDF4

cdf_dataset = netCDF4.Dataset(file_2read)

try:
    cdf_domain = cdf_dataset.CORDEX_domain
    print(cdf_domain)

except:
    print('No CORDEX domain found. Will exit')
    ....some more code....

当属性" CORDEX_domain"一切都很好。如果该属性不可用,则会引发以下异常。

AttributeError: NetCDF: Attribute not found

这是第三方例外,我认为这应该作为一般处理,但事实并非如此,因为我无法得到我的" print"在"里面除了"声明工作或其他任何事情。任何人都能指出我处理这个问题的方法吗?感谢。

1 个答案:

答案 0 :(得分:1)

不需要try/except块; netCDF4.Dataset有一个方法ncattrs,它返回所有全局属性,您可以测试所需的属性是否在那里。例如:

if 'CORDEX_domain' in cdf_dataset.ncattrs():
    do_something()

您可以执行相同的操作来测试是否存在(例如)所需的变量:

if 'some_var_name' in cdf_dataset.variables:
    do_something_else()

p.s。:"赶上所有人"通常是一个坏主意......,例如Python: about catching ANY exception

修改

您可以对变量属性执行相同的操作,例如:

var = cdf_dataset.variables['some_var_name']
if 'some_attribute' in var.ncattrs():
    do_something_completely_else()