【问题标题】:python create netCDF with attributespython创建带有属性的netCDF
【发布时间】:2016-10-20 08:23:12
【问题描述】:

我有一个 XML 文件,我想将其用作 netCDF 文件的基础。我可以在 python 中读取 XML 文件和创建 netCDF 文件。

XML 文件中的每个组或变量都有属性,我想将它们添加到 netCDF 文件中。我的问题是我不知道属性的名称,这整个事情需要是自动的。

在 python 中为 netCDF 创建和添加属性的常用方法如下:

grp.attr = 'name'

我现在需要自动执行此操作,我不知道“attr”到底是什么。如果我使用“attr”作为变量名,“attr”将被添加到 netCDF 文件中,而不是实际名称。

我将尝试说明这一点。假设我的组有三个属性,称为:

<attribute name="alphabet" value="abc"/>
<attribute name="number" value="42"/>
<attribute name="version" value="ncc1701"/>

我希望这些属性在文件中,但在撰写本文时,我不知道哪个属性将在哪里,它的名称是什么等。所以我遍历所有属性并编写类似于此的代码:

for att in list_attributes:
  attr_name = att.name
  attr_value = att.value
  grp.attr_name = attr_value

如果我这样做,我的 netCDF 文件中会出现 一个 属性,名称为“attr_name”,值为“ncc1701”,而不是预期的三个属性。

任何想法如何解决这个问题?谢谢。

【问题讨论】:

  • 你使用netCDF4包吗?
  • @C.Dlp,是的,我使用 python 的 netCDF4 包。
  • 如果您为循环中的每个属性创建一个新的 netCDF 变量,通常它会起作用
  • @C.Dlp 您能否更详细地解释一下?你的意思是创建一个变量而不是一个属性?谢谢
  • 是的,你可以实现类似的东西:for att in list_att: evar = ncfile.createVariable(name, vtype, dim, fill_value=_FillValue) evar[:] = att.value

标签: python xml netcdf


【解决方案1】:

在循环中使用 netCDF4 包中的setncattr 方法。

【讨论】:

  • 也许有人反对,因为可以改进如何使用 netCDF4 包的 Dataset/Group/Variable 实例的 setncattr 方法。它类似于 Python 的 setattr,此外还可以使用 setncatts 创建许多属性
猜你喜欢
  • 2021-11-28
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
相关资源
最近更新 更多