Python 发出将数据集写入for循环中的.hdf5文件的命令
我迭代了许多文件并读取了我想要的信息,这些信息存储在一个numpy数组中,然后我用一个唯一的名称(例如outputdataset_1,outputdataset_2…)写入一个h5py文件对象,但是当脚本运行时,它只将最终的数据集写入文件(outputdataset_numFiles) 为了简单起见,所有的文件解析都被抽象为一个if循环和函数“get_data”,假设当代码到达文件末尾时,pts数据结构包含所有正确的值是公平有效的Python 发出将数据集写入for循环中的.hdf5文件的命令,python,file,h5py,Python,File,H5py,我迭代了许多文件并读取了我想要的信息,这些信息存储在一个numpy数组中,然后我用一个唯一的名称(例如outputdataset_1,outputdataset_2…)写入一个h5py文件对象,但是当脚本运行时,它只将最终的数据集写入文件(outputdataset_numFiles) 为了简单起见,所有的文件解析都被抽象为一个if循环和函数“get_data”,假设当代码到达文件末尾时,pts数据结构包含所有正确的值是公平有效的 用于范围内的num(1,num文件): 将h5py.File(“
用于范围内的num(1,num文件):
将h5py.File(“outputFileName.hdf5”,“w”)作为f:
打开(“文件地址”+str(num))作为文件:
lineNum=0
尽管如此:
line=file.readline(lineNum)
如果不是line和lineNum!=0:
s='outputdataset_u'+str(num)
dset=f.create_数据集(s,pts.shape,data=pts)
打破
如果行==标准:
pts=获取数据(pts,行)
lineNum+=1
问题是范围(…)中num的行和带有h5py.File(…)
的行的顺序;按照您编写的方式,每次加载新文件时都会关闭该文件,并且由于使用模式'w'
调用h5py.file()
,因此它将(正确)覆盖每个循环中的“outputfilename.hdf5”
解决方案:只需切换这些线路
或者(但这可能需要更多的代码!)您可以使用“附加”文件模式,即将h5py.file(“outputFileName.hdf5”,“a”)作为f
——但如果您多次(迭代)运行脚本,则可能会遇到运行时错误:“无法创建链接(名称已存在)”
。当然,您可以编写额外的代码来检查hdf5
文件中预先存在的路径,并实现某种更新/替换逻辑,但这可能需要一些时间来编码。您可以为每个输入文件打开(并覆盖)输出文件。您读取一个非空行,并将值放入pts
。但你什么都不做。您不应该从多行中收集值吗?仅写入最后一个pts
值。我想你需要用一个更简单的例子来练习,在这个例子中,你可以详细地跟踪迭代。我的错误是,我把代码简化得太多了,我可以向你保证,从文件中收集的数据工作得很好。我现在将编辑示例。