循环遍历一堆H5文件并创建一个新列表

时间:2017-03-22 09:41:41

标签: python python-2.7

import os

import h5py

os.chdir('C:\Users\dew')

file_names = ['3DSND_12MAY2016_0000_L1B_SA1.h5', '3DSND_12MAY2016_0100_L1B_SA1.h5', '3DSND_12MAY2016_0200_L1B_SA1.h5', '3DSND_12MAY2016_0300_L1B_SA1.h5', '3DSND_12MAY2016_0500_L1B_SA1.h5', 
            '3DSND_12MAY2016_0600_L1B_SA1.h5', '3DSND_12MAY2016_0600_L1B_SA1.h5', '3DSND_12MAY2016_0700_L1B_SA1.h5', '3DSND_12MAY2016_0800_L1B_SA1.h5',
             '3DSND_12MAY2016_0900_L1B_SA1.h5', '3DSND_12MAY2016_1000_L1B_SA1.h5', '3DSND_12MAY2016_1200_L1B_SA1.h5', '3DSND_12MAY2016_1300_L1B_SA1.h5', 
            '3DSND_12MAY2016_1400_L1B_SA1.h5', '3DSND_12MAY2016_1500_L1B_SA1.h5', '3DSND_12MAY2016_1700_L1B_SA1.h5', '3DSND_12MAY2016_1900_L1B_SA1.h5', 
            '3DSND_12MAY2016_2000_L1B_SA1.h5', '3DSND_12MAY2016_2100_L1B_SA1.h5', '3DSND_12MAY2016_2200_L1B_SA1.h5']

new = list()

new = list()

for file_name in file_names:
    print file_name
    new = (h5py.File(file_name, 'r'))
    print new

运行此命令时,得到以下输出:

3DSND_12MAY2016_0000_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0000_L1B_SA1.h5" (mode r+)>
3DSND_12MAY2016_0100_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0100_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0200_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0200_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0300_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0300_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0500_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0500_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0600_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0600_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0600_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0600_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0700_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0700_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0800_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0800_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_0900_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_0900_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1000_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1000_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1200_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1200_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1300_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1300_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1400_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1400_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1500_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1500_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1700_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1700_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_1900_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_1900_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_2000_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_2000_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_2100_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_2100_L1B_SA1.h5" (mode r)>
3DSND_12MAY2016_2200_L1B_SA1.h5
<HDF5 file "3DSND_12MAY2016_2200_L1B_SA1.h5" (mode r)>

我这样做了,为了一起读取一堆H5文件并将它们分配给另一个列表。不幸的是,新列表在运行时只显示其中包含的单个文件。

但是在单独调用新列表时,只返回单个h5文件。

#output

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题。 如果您只想将名称复制到另一个新列表中,这就是它的工作原理

import java.util.ArrayList;
import java.util.List;

public class DynamicClassList {

    public <T> List<T> myFunction(Class<T> inputClass) {

        List<T> items = new ArrayList<T>();

        for(int i = 0; i < 5; i++) {

            try {
                T myT = inputClass.getConstructor().newInstance();
                items.add(myT);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return items;

    }

    public static void main(String[] args) {
        DynamicClassList dynamicClassList = new DynamicClassList();
        List<Student> s = dynamicClassList.myFunction(Student.class);
        List<Teacher> t = dynamicClassList.myFunction(Teacher.class);
        List<Course> c = dynamicClassList.myFunction(Course.class);
    }
}

您可以在此处找到有关列表的有用文档: https://docs.python.org/2/tutorial/datastructures.html

或者您想阅读HDF5文件的内容并将它们添加到一个HDF5文件中吗?然后,需要一个小信息HDF5-Files中的内容以及您想要的结果。 基本上你必须阅读你的一堆HDF5文件中的每个数据集,并将它们添加到另一个。 或者您想从HDF5文件中读取一个或多个数据集并将其添加到列表中?在此示例中,每个h5-File都有一个名为&#39; A&#39;。

的数据集
new = []
for file_name in file_names:
    new.append(file_name)