44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
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()) |