【发布时间】: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