如何在Numpy中自动处理升序文件名和数组名:
我有一系列名为的
的HDF5文件20120101.hdf5, 20120102.hdf5, 20120103.hdf5, ..., 20120130.hdf5, 20120131.hdf5
每个hdf5文件都包含几个命名的数组:
array1, array2, array3, ..., array24
我想单独修改每个数组,然后创建相应的新hdf5文件。例如,使用20120101.hdf5
:
import numpy
import tables
file = openFile("20120101.hdf5","r")
b1 = file.root.array1
c1 = (b1<=1)
new20120101_array1 = creatArray('/','1',c1)
c2 = ((b1<=2) and (b>1))
new20120101_array1 = creatArray('/','2',c2)
.
.
.
c20 = ((b1<=20) and (b>19))
new20120101_array1 = creatArray('/','20',c20)
并重复数组2-24。因此,我希望:
new20120101.hdf5 ---- new20120101_array1 ---- 1
2
...
20
---- new20120101_array2 ---- 1
...
20
...
---- new20120101_array24 --- 1
...
20
new20120102.hdf5
....
new20120131.hdf5
答案 0 :(得分:2)
如果目录中有多个文件,则可以使用os.listdir
函数,该函数返回包含目录中条目名称的列表。
示例:
import os
import tables
direc = '/Users/cg/' # the working directory (where your files are stored)
dirs = os.listdir(direc)
for idir in dirs: # this will iterate over the files in your working directory
if idir.endswith('.he5'): # only for HDF5 files...
hdf5 = tables.openFile(os.path.join(direc,idir))
#### DO WHAT YOU WANT WITH EACH FILE!
hdf5.close()
您的问题的其他部分已在您的other question中得到解答,我猜(您可以使用walkNodes
功能)。