如果您只想复制挑选变量的文件,nccopy是@rewfuss提交的一个很好的工具。
这是一个用^{}的Pythonic(和更灵活的)解决方案。这允许您在写入文件之前打开它进行处理和其他计算。
with netCDF4.Dataset(file1) as src, netCDF4.Dataset(file2) as dst:
for name, dimension in src.dimensions.iteritems():
dst.createDimension(name, len(dimension) if not dimension.isunlimited() else None)
for name, variable in src.variables.iteritems():
# take out the variable you don't want
if name == 'some_variable':
continue
x = dst.createVariable(name, variable.datatype, variable.dimensions)
dst.variables[x][:] = src.variables[x][:]
这不考虑变量属性,例如fill_values。您可以按照文档轻松地完成这项工作。
请注意,netCDF4文件一旦以这种方式写入/创建就无法撤消。修改变量的那一刻,它将被写入with语句末尾的file,或者如果调用.close()上的Dataset。
当然,如果您希望在编写变量之前对其进行处理,则必须注意要创建哪些维度。在新文件中,不创建变量就不要写入变量。另外,不要在没有定义维度的情况下创建变量,如noted in ^{}'s documentation。