【Python】读取数据(nc,hdf,二进制)

这篇博客介绍了如何使用Python读取和解析不同类型的文件,包括netCDF4、HDF以及二进制文件。提供了详细的代码示例,分别展示了通过netCDF4库读取nc文件、使用h5py库读取HDF5文件以及利用struct模块解析二进制文件的头部信息。
摘要由CSDN通过智能技术生成

目录

读取nc文件相应变量:

读取hdf文件:

解析二进制文件 :



读取nc文件相应变量:

# H8data = H8data['latitude','longitude','CLTYPE']  这样提取是不对的
def read_file(file, key='Ic'):
    with netCDF4.Dataset(file, 'r') as f:
        lat = f['lat'][:]
        lon = f['lon'][:]
        lev = f['lev'][:]
        var = f[key][:]
    return lat, lon, lev, var

若不用 with as,则需要用close

# H8data = Dataset(z_file)
# z_file.close()

读取hdf文件:

 方法1

#  读取hdf4 hdf5
import netCDF4

with netCDF4.Dataset(file, 'r') as f:
    vars = f.variables
    for var in vars:
    print(var) #查看变量
    data = f['lat'][:]  

方法2 

with h5py.File(file, 'r') as f:
    f.keys()
    a = f['data'][:]

方法3

def get_data_y(file):
    """
    获取数据
    1.读取数据
    2.清洗数据
    :param file:
    :return:
    """

    # 读取经纬度
    f = HDF(file, SDC.READ)
    vs_data = f.vstart() # Initialize the VS API over the file and return a VS instance
    data_lat = vs_data.attach('Latitude')
    data_lon = vs_data.attach('Longitude')

    lat = np.array(data_lat[:])
    lon = np.array(data_lon[:])

    data_lat.detach()   # "close" the data
    data_lon.detach()   # "close" the data
    vs_data.end()    # terminate the data interface
    f.close()

    # 2.读取产品信息
    file_data = SD(file1, SDC.READ)
    # 定位数据集
    sds_obj_re = file_data.select('RO_liq_effective_radius')
    sds_obj_lwc = file_data.select('RO_liq_water_content')
    # 获取数据
    Re = sds_obj_re.get()
    LWC = sds_obj_lwc.get()
    # 打印数据信息
    sds_info_re = sds_obj_re.info()
    sds_info_lwc = sds_obj_lwc.info()
    print(sds_info_re, sds_info_lwc)
    pprint.pprint(sds_obj_re.attributes())
    pprint.pprint(sds_obj_lwc.attributes())

解析二进制文件 :

def read_t1729(file):
    with open(file, 'rb') as f:
        # ======解析标头文件(0-360字符)======
        tmp = f.read()
        header = struct.unpack('360s', tmp[:360])[0].decode('GBK')
        print(header)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值