gpt4 book ai didi

python - 如何在 python 中读取 gzip netcdf 文件?

转载 作者:太空狗 更新时间:2023-10-30 00:35:54 27 4
gpt4 key购买 nike

我有一个工作的 python 程序,它使用 netCDF4 模块中的 Dataset 命令读取大量大型 netCDF 文件。以下是相关部分的片段:

from netCDF4 import Dataset
import glob

infile_root = 'start_of_file_name_'

for infile in sorted(glob.iglob(infile_root + '*')):
ncin = Dataset(infile,'r')
ncin.close()

我想修改它以读取 gzip 压缩的 netCDF 文件。文件本身在创建后被 gzip 压缩;它们不是内部压缩的(即文件是 *.nc.gz)。如果我正在阅读 gzip 文本文件,命令将是:

from netCDF4 import Dataset
import glob
import gzip

infile_root = 'start_of_file_name_'

for infile in sorted(glob.iglob(infile_root + '*.gz')):
f = gzip.open(infile, 'rb')
file_content = f.read()
f.close()

在谷歌搜索大约半小时并通读 netCDF4 文档后,我能想到的对 netCDF 文件执行此操作的唯一方法是:

from netCDF4 import Dataset
import glob
import os

infile_root = 'start_of_file_name_'

for infile in sorted(glob.iglob(infile_root + '*.gz')):
os.system('gzip -d ' + infile)
ncin = Dataset(infile[:-3],'r')
ncin.close()
os.system('gzip ' + infile[:-3])

是否可以直接用Dataset命令读取gzip文件?或者不通过操作系统调用 gzip?

最佳答案

从 netCDF4-1.2.8 ( Changelog ) 开始支持从内存中读取数据集:

import netCDF4
import gzip

with gzip.open('test.nc.gz') as gz:
with netCDF4.Dataset('dummy', mode='r', memory=gz.read()) as nc:
print(nc.variables)

参见Dataset documentationmemory参数的说明

关于python - 如何在 python 中读取 gzip netcdf 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27322248/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com