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