Открыть несколько файловых каталогов на python

#python #directory

#python #каталог

Вопрос:

Я хотел бы перебрать и получить доступ к своим файлам типа .bin, каждый из которых содержит три значения типа double (шаг, рыскание, крен). До сих пор я мог получить доступ к одному файлу только с помощью with open('annotations/01/frame_00004_pose.bin', 'rb') as fid:

Я знаю, что мне нужно изменить эту строку кода, чтобы мой цикл работал правильно. Я просто не уверен, как мне поступить. Итак, в моем файле annotations содержится 01-24 файла, каждый из которых содержит множество других файлов типа .bin

Вот что я сделал до сих пор.

 import pandas as pd
import numpy as np
import os

pyr = pd.DataFrame(columns = ['pitch','yaw','roll'])
with os.scandir('annotations') as entries:
    for i in entries:
        with open('annotations/01/frame_00004_pose.bin', 'rb') as fid:
            data_array = np.fromfile(fid, np.float32)
        para = data_array[3:]
        pyr = pyr.append({'pitch':para[0],'yaw':para[1],'roll':para[2]},ignore_index = True)
print(pyr)
 

Любая помощь будет оценена.

Комментарии:

1. используйте glob модуль . простой поиск в Google по модулю python glob даст вам результаты

Ответ №1:

Да, использовать glob — хорошая идея, посмотрите на это:

 import pandas as pd
import numpy as np

import os
import glob

pyr = pd.DataFrame(columns = ['pitch','yaw','roll'])
entries = glob.glob('annotations/**/*.bin', recursive=True)
for entry in entries:
    with open(entry, 'rb') as fid:
        data_array = np.fromfile(fid, np.float32)
    para = data_array[3:]
    pyr = pyr.append({'pitch':para[0],'yaw':para[1],'roll':para[2]},ignore_index = True)
print(pyr)