76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
检查pickle文件的基本信息
|
|
"""
|
|
import pickle
|
|
import sys
|
|
import os
|
|
|
|
def inspect_pickle_file(filepath):
|
|
"""检查pickle文件的基本结构"""
|
|
print(f"检查文件: {filepath}")
|
|
print(f"文件大小: {os.path.getsize(filepath)} bytes")
|
|
|
|
try:
|
|
with open(filepath, 'rb') as f:
|
|
# 只读取文件头信息
|
|
magic = f.read(2)
|
|
print(f"Pickle协议版本: {magic}")
|
|
|
|
# 尝试读取基本结构
|
|
f.seek(0)
|
|
try:
|
|
data = pickle.load(f)
|
|
print(f"成功加载! 类型: {type(data)}")
|
|
|
|
if isinstance(data, list):
|
|
print(f"列表长度: {len(data)}")
|
|
|
|
if len(data) > 0:
|
|
print(f"第一个元素类型: {type(data[0])}")
|
|
|
|
if isinstance(data[0], dict):
|
|
print(f"第一个样本的键: {list(data[0].keys())}")
|
|
|
|
# 检查各个字段
|
|
for key, value in data[0].items():
|
|
if hasattr(value, 'shape'):
|
|
print(f" {key}: 形状 {value.shape}, 类型 {type(value)}")
|
|
elif isinstance(value, list):
|
|
print(f" {key}: 列表长度 {len(value)}, 类型 {type(value)}")
|
|
else:
|
|
print(f" {key}: {type(value)}")
|
|
|
|
elif isinstance(data, dict):
|
|
print(f"字典键: {list(data.keys())}")
|
|
|
|
except Exception as e:
|
|
print(f"加载失败: {e}")
|
|
|
|
# 尝试只读取前几个字节来了解结构
|
|
f.seek(0)
|
|
header = f.read(100)
|
|
print(f"文件头: {header[:50]}...")
|
|
|
|
except Exception as e:
|
|
print(f"文件读取错误: {e}")
|
|
|
|
def main():
|
|
result_file = '/data/infer_test/20251120_124755/one_batch_results.pkl'
|
|
|
|
if not os.path.exists(result_file):
|
|
print(f"文件不存在: {result_file}")
|
|
# 查找可能的其他文件
|
|
import glob
|
|
possible_files = glob.glob('/data/infer_test/*/*.pkl')
|
|
if possible_files:
|
|
print(f"找到 {len(possible_files)} 个pickle文件:")
|
|
for f in possible_files:
|
|
print(f" {f}")
|
|
result_file = possible_files[-1]
|
|
|
|
inspect_pickle_file(result_file)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|