当前位置: 首页 > 面试题库 >

Python HDF5 H5Py打开多个文件时出现问题

樊宏义
2023-03-14
问题内容

我要使用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似乎表明所有文件都包含相同的数据。有人见过这种行为吗?在哪里可以开始调试此问题的任何建议?


问题答案:

我得出的结论是,这是h5py对象作为实例变量的复杂分配行为的奇怪表现。我重新编写了代码,以便在函数调用中处理每个文件,并且不重用变量。使用这种方法,我看不到相同的奇怪行为,而且效果似乎更好。为了清楚起见,该解决方案看起来更像:

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)


 类似资料:
  • 问题内容: 现有2个版本的java系统,1.6版本无法卸载(dll无法运行) 求大神拯救!小白一枚想学习安卓系统 问题答案: 把你想用的那个版本设置环境变量,设置JAVA_HOME=”你安装的JDK路径”

  • 问题内容: 我编写的python程序存在一个小问题,该程序可以从特殊文本文件中提取一些信息。循环(下面的代码)需要执行我的函数,超过500个文件(一个文件列出一个列表),这样我才能构建数据集。 错误:发生的是IOException ,因此由于某种原因python无法访问文件。我已经检查了目录路径名(位置)和文件许可权,它们是正确的(读+写)。有什么想法为什么当文件确实存在且路径名正确时会报告IOE

  • 我正在尝试读取1500 csv文件,但我收到以下错误。 读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“row.names” 代码: 但当单独打开并保存文件时,我可以读取文件。但由于有1500个文件,我需要手动完成。如有任何帮助,我将不胜感激?

  • 我有一个Api,它以以下格式返回数据 我想打印所有这些文件,所以我使用 这会打开多个打印窗口,但在预览中会显示空白文档。 但是当我下载所有这些文件时,它会下载正确的PDF文件。 > 可能是什么问题, 有什么方法可以不打开多个窗口,按顺序打印所有文档?

  • 我有一个Kafka生产者代码在Java,使用java nio WatchService api观看新文件的目录,并采取任何新文件,并推到Kafka主题。火花流消费者阅读Kafka主题。我得到以下错误后,Kafka制作人的工作继续运行一天。制作人每2分钟推送大约500个文件。我的Kafka主题有1个分区和2个复制因子。有人能帮忙吗?

  • 问题内容: 我正在尝试创建一个http客户端程序,它将发出许多http GET请求。我正在使用缓冲通道来限制并发请求的数量。 当我运行程序时,我得到 这是我的程序: 如何确保文件/足球已关闭,以便在发出多个请求时不会出现此错误? 问题答案: 基本上,您生成了数百个goroutine,这些goroutine将在块关闭之前开始连接。 这是一个快速(非常丑陋)的代码: