Python HDF5 H5Py会发出打开多个文件的问题

时间:2011-10-06 14:32:27

标签: python hdf5 h5py

我使用的是64位版本的Enthought Python来处理多个HDF5文件中的数据。我在64位Windows上使用h5py版本1.3.1(HDF5 1.8.4)。

我有一个对象为我的特定数据层次提供了方便的接口,但是测试h5py.File(fname,'r')会产生相同的结果。我正在遍历一个长列表(一次约100个文件)并尝试从文件中提取特定的信息。我遇到的问题是我从几个文件中获取相同的信息!我的循环看起来像:

files = glob(r'path\*.h5')
out_csv = csv.writer(open('output_file.csv', 'rb'))

for filename in files:
  handle = hdf5.File(filename, 'r')
  data = extract_data_from_handle(handle)
  for row in data:
     out_csv.writerow((filename, ) +row)

当我使用hdfview之类的东西检查文件时,我知道内部结构是不同的。但是,我得到的csv似乎表明所有文件都包含相同的数据。以前有人见过这种行为吗?我有什么建议可以开始调试这个问题吗?

1 个答案:

答案 0 :(得分:4)

我得出结论,这是Perplexing assignment behavior with h5py object as instance variable的奇怪表现。我重新编写了我的代码,以便在函数调用中处理每个文件,并且不重用该变量。使用这种方法,我没有看到相同的奇怪行为,它似乎工作得更好。为清楚起见,解决方案看起来更像:

files = glob(r'path\*.h5')
out_csv = csv.writer(open('output_file.csv', 'rb'))

def extract_data_from_filename(filename):
    return extract_data_from_handle(hdf5.File(filename, 'r'))

for filename in files:
  data = extract_data_from_filename(filename)
  for row in data:
     out_csv.writerow((filename, ) +row)