2

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
4

1 に答える 1

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

あなたの質問の他の部分は、他の質問ですでに回答されている思います(walkNodes機能を使用できます)。

于 2012-05-10T16:14:24.833 に答える