加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:17:29 所属栏目:Python 来源:网络整理
导读:我使用64位版本的Enthought Python来处理多个HDF5文件中的数据.我在64位Windows上使用h5py版本1.3.1(HDF5 1.8.4). 我有一个对象为我的特定数据层次提供了方便的接口,但是测试h5py.File(fname,r)会产生相同的结果.我正在遍历一个长列表(一次约100个文件)并尝

我使用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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读