python二进制浮点数(float32)文件解析(bin文件转csv)

python二进制文件2000x2000 的二维表浮点数(float32)解析(bin文件转csv)

import struct
import numpy as np

filepath='Z_NAFP_C_BABJ_P_HRCLDAS_RT_CHN_0P01_DAY-SSRA-20210517.bin'

def xshow(filename, nx, nz):
    '''
    filename:文件路径
    nx:行
    nz:列
    '''

    f = open(filename, "rb")
    pic = np.zeros((nx, nz))
    for i in range(nx):
        for j in range(nz):
            data = f.read(4)
            elem = struct.unpack("f", data)[0]
            pic[i][j] = elem
    f.close()
    return pic
data_arry = xshow(filepath,2000,2000)
np.savetxt("阿彪.csv", data_arry, delimiter=",")
print('==end==')
您可以使用以下Python代码来实现您的需求: ```python import os import csv import struct def read_binary_files(folder_path, output_folder): for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith(".bin"): file_path = os.path.join(root, file) output_file_path = os.path.join(output_folder, file.replace(".bin", ".csv")) convert_binary_to_csv(file_path, output_file_path) def convert_binary_to_csv(file_path, output_file_path): with open(file_path, "rb") as bin_file, open(output_file_path, "w", newline="") as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow(["Column 1", "Column 2", "Column 3"]) while True: binary_data = bin_file.read(8) if not binary_data: break float_data = struct.unpack("fff", binary_data) csv_writer.writerow(float_data) def tsa_transform(input_csv_file, output_csv_file, window_size): with open(input_csv_file, "r") as input_file, open(output_csv_file, "w", newline="") as output_file: csv_reader = csv.reader(input_file) csv_writer = csv.writer(output_file) csv_writer.writerow(["Transformed Data"]) data = [] for row in csv_reader: data.append(float(row[0])) if len(data) == window_size: transformed_data = perform_tsa_transform(data) csv_writer.writerow([transformed_data]) data.pop(0) def perform_tsa_transform(data): # 在这里实现您的时间序列分析换 # 返回换后的数据 # 指定文件夹路径、输出文件夹路径和窗口大小进行调用 read_binary_files("your_folder_path", "your_output_folder_path") tsa_transform("your_input_csv_file", "your_output_csv_file", window_size) ``` 请替换代码中的 "your_folder_path"、"your_output_folder_path"、"your_input_csv_file"、"your_output_csv_file" 和 window_size 为您实际的文件夹路径、输出文件夹路径、输入CSV文件和窗口大小。 上述代码将首先遍历指定的文件夹及其子文件夹,读取所有的二进制(.bin文件,并将每个文件中的数据换为浮点数后写入对应的CSV文件中。 然后,您可以使用 tsa_transform 函数对第一列数据进行时间序列分析换,并将换后的数据写入另一个CSV文件中。 注意:在 perform_tsa_transform 函数中,您需要实现您自己的时间序列分析换逻辑,这里只是一个示例函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值