river-sim/read_dat_v2.py
2024-11-07 17:53:11 +08:00

44 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import struct
import pandas as pd
def read_binary_file(file_path):
with open(file_path, 'rb') as f:
# 读取前8个字节表示数据列数
num_columns_bytes = f.read(8)
num_columns = struct.unpack('>q', num_columns_bytes)[0]
print(f"Number of columns: {num_columns}")
# 读取接下来的8个字节表示起始日期
start_date_bytes = f.read(8)
start_date = struct.unpack('>d', start_date_bytes)[0]
print(f"Start date: {start_date}")
# 初始化DataFrame
data = []
timestamps = []
while True:
# 读取每个数据块的分钟数
minute_bytes = f.read(8)
if not minute_bytes:
break # 文件结束
minute = struct.unpack('>d', minute_bytes)[0]
timestamps.append(minute)
# 读取数据行数 * 8 字节的数据
data_bytes = f.read(num_columns * 8)
if not data_bytes:
break # 文件结束
data_values = struct.unpack(f'>{num_columns}d', data_bytes)
data.append(data_values)
# 创建DataFrame
df = pd.DataFrame(data, columns=[f'Column_{i+1}' for i in range(num_columns)])
df.insert(0, 'Timestamp', timestamps)
return df
# 读取文件并打印关键信息
file_path = 'lz.rivqdown.dat'
df = read_binary_file(file_path)
print(df.head())