У меня есть структура (Марк Толонен, большое спасибо ему!). (Я решил не переписать его здесь, чтобы избежать дублирования кода с этим постом). Особенность этой структуры заключается в том, что структура может включать в себя другие структуры и массивы и даже массив со структурами. Вот попытка: < /p>
def _process_ctypes(self, ctypes_obj):
if isinstance(ctypes_obj, ctypes.Structure):
data_dict = {}
for field_name, field_type in ctypes_obj.get_fields():
field_value = getattr(ctypes_obj, field_name)
if isinstance(field_value, (ctypes.Structure, ctypes.Array)):
data_dict[field_name] = self._process_ctypes(field_value)
else:
data_dict[field_name] = field_value
return data_dict
elif isinstance(ctypes_obj, ctypes.Array):
data_list = []
for element in ctypes_obj:
if isinstance(element, (ctypes.Structure, ctypes.Array)):
data_list.append(self._process_ctypes(element))
else:
data_list.append(element)
return data_list
< /code>
Но он выглядит довольно уродливым Imho. И невозможно добавить некоторые данные к конечному выводу, только вне функции. Ввод - всегда ctypes.structure, output - всегда python.dictionary.
Кроме того, было бы здорово преобразовать каждый массив в словаре, просто используя некоторые конкретные строки в качестве клавиш.
Подробнее здесь: https://stackoverflow.com/questions/767 ... ython-dict
Как преобразовать структуру ctypes с вложенными структурами и массивами в Python Dict ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение