Я пытаюсь написать программу, которая периодически считывает данные из сотен файлов YAML и сохраняет определенную информацию, содержащуюся в файлах, в какой-то таблице.Программа будет по существу анализировать каждый файл YAML в данном каталоге и извлекать соответствующую информацию, пока каждый файл не будет успешно проанализирован.
Пример содержимого одного из файлов YAML:
%YAML:1.0
camera_rotation_wrt_base: !!opencv-matrix
cols: 3
data: [-0.0159428846, 0.0246045925, 0.999570131, -0.999774337, -0.0144301597, -0.0155909406,
0.0140403481, -0.999593139, 0.024829099]
dt: f
rows: 3
camera_translation_wrt_base: [0.4445618987083435, 0.11700689047574997, 1.5018157958984375]
object_rotation_wrt_base: !!opencv-matrix
cols: 3
data: [-0.74130547, -0.0615471229, 0.668339849, 0.669196069, -0.144052029, 0.728989482,
0.0514085107, 0.987654269, 0.147973642]
dt: f
rows: 3
object_rotation_wrt_camera: !!opencv-matrix
cols: 3
data: [-0.6565323818253673, 0.1588616842697038, -0.737379262582055, -0.07928983462501557,
-0.9866892288165471, -0.14197683014545748, -0.7501189077886223, -0.03474571781315458,
0.6603895951165363]
dt: f
rows: 3
object_translation_wrt_base: [1.1534364223480225, 0.05951927974820137, 1.3502429723739624]
object_translation_wrt_camera: [0.04407151401699165, 0.16979082390232392, 0.705698973194305]
template_id: 1965
Я хотел бы иметь возможность сохранить ключ данных из ключа object_rotation_wrt_camera, а также ключ object_translation_wrt_camera,в CSV-файле, например, так:
observation,rotation,translation
1,[-0.53434, 0.023343, .....],[0.54545,0.34344,....]
2,[-0.52234, 0.3433, .....],[0.65645,0.8787344,....]
3,[0.32234, 0.6453, .....],[0.622645,0.1787344,....]
В приведенной выше таблице номер наблюдения относится к файлу yaml, и поэтому для каждого файла в CSV-файле хранится наблюдение как для поворота, так и для поворота.переменная перевода.(примечание: периоды, используемые в таблице, просто указывают, что переменные поворота и перемещения продолжаются, так как они довольно длинные).
Наконец, я хотел бы создать окончательный файл CSV, который аналогичен приведенному выше, однако вместо этого все значения вращения и перевода разделены (это означает, что вместо одного столбца для перевода и одного для вращения,есть 3 для перевода, относящихся к 3 значениям в списках предыдущего файла CSV, и 9 столбцов, относящихся к каждому из 9 значений в списках предыдущего файла CSV), например:
observation,tran1,tran2,tran3,rot1,rot2,rot3,rot4,rot5,rot6,rot7,rot8,rot9
1,-0.545434,4.54545,0.343434,.............................................
2,-0.4543,3.3434,0.3534,..................................................