Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 发出将数据集写入for循环中的.hdf5文件的命令_Python_File_H5py - Fatal编程技术网

Python 发出将数据集写入for循环中的.hdf5文件的命令

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(“

我迭代了许多文件并读取了我想要的信息,这些信息存储在一个numpy数组中,然后我用一个唯一的名称(例如outputdataset_1,outputdataset_2…)写入一个h5py文件对象,但是当脚本运行时,它只将最终的数据集写入文件(outputdataset_numFiles)

为了简单起见,所有的文件解析都被抽象为一个if循环和函数“get_data”,假设当代码到达文件末尾时,pts数据结构包含所有正确的值是公平有效的

用于范围内的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
值。我想你需要用一个更简单的例子来练习,在这个例子中,你可以详细地跟踪迭代。我的错误是,我把代码简化得太多了,我可以向你保证,从文件中收集的数据工作得很好。我现在将编辑示例。