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

前端之家收集整理的这篇文章主要介绍了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似乎表明所有文件都包含相同的数据.以前有人见过这种行为吗?我有什么建议可以开始调试这个问题吗?

最佳答案
我的结论是,这是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)

猜你在找的Python相关文章