簡體   English   中英

在Python中處理netCDF文件時出錯

[英]Error handling netCDF file in Python

我正在使用Python代碼從netCDF文件中提取數據。 我需要檢查netCDF文件是否與CORDEX標准一致(CORDEX是協調進行帶有區域氣候模型的模擬實驗的工作)。 為此,我需要訪問netCDF文件的屬性。 如果找不到該屬性,則代碼應轉到下一個文件。

我的代碼摘要如下:

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

這是第三方例外,我認為應該將其作為一般例外處理,但事實並非如此,因為我無法在“ except”語句或其他任何內容中使用我的“打印件”。 誰能指出我的處理方式? 謝謝。

不需要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()

ps:“ catch alls”通常是個壞主意……例如, Python:關於捕獲任何異常

編輯

您可以對變量屬性執行相同的操作,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM