h5py не может прочитать файл fast5

Я пытаюсь записать данные из файла fast5 в текстовый файл. Я могу сделать это, перейдя в каталог, где находятся файлы, и используя этот код:

for filename in os.listdir(os.getcwd()):
    if filename.endswith('.fast5'):
        with h5py.File(filename, 'r') as hdf:
            with open(new_txt, 'a') as myfile:
               myfile.write('%s \t' % (filename))

Однако сейчас я пытаюсь получить доступ к файлам через основной каталог, перебирая определенные подпапки, в которых расположены файлы, и получая доступ к файлам таким образом, используя этот код:

for root, dirs, files in os.walk(path):     
    for d in dirs:
        if d.startswith('pass') or d.startswith('fail')
            for rootfolder, blankdirs, fast5files in os.walk(d):                                                                                                                                                                                                          
                for filename in fast5files:
                    if filename.endswith('.fast5'):
                        with h5py.File(filename, 'r') as hdf:                
                            with open(new_txt, 'a') as myfile:                    
                                myfile.write('%s \t' % (filename))

Этот код дает ошибку:

IOError: Unable to open file (Unable to open file: name = 'minion2_chip61_re_n90_yt2_2644_1_ch108_file0_strand.fast5', errno = 2, error message = 'no such file or directory', flags = 0, o_flags = 0) 

что меня смущает, поскольку он может получить имя файла, но почему-то не может его прочитать, что он мог бы сделать в исходном коде. Ошибка возникает в этой строке:

with h5py.File(filename, 'r') as hdf: 

Почему h5py не может открыть/прочитать файл таким образом?


person j2120    schedule 23.10.2015    source источник


Ответы (1)


вам нужно добавить каталог, который os.walk в настоящее время проходит, к имени файла:

....
if filename.endswith('.fast5'):
    hdf5_path = os.path.join(root, filename)
    with h5py.File(hdf5_path, 'r') as hdf: 
        ...
person hiro protagonist    schedule 23.10.2015
comment
ха-ха, я понял это незадолго до того, как прочитал ваш ответ. ваш метод намного чище, чем мой, так что спасибо! - person j2120; 23.10.2015