Как преобразовать структуру ctypes с вложенными структурами и массивами в Python DictPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать структуру ctypes с вложенными структурами и массивами в Python Dict

Сообщение Anonymous »

У меня есть структура (Марк Толонен, большое спасибо ему!). (Я решил не переписать его здесь, чтобы избежать дублирования кода с этим постом). Особенность этой структуры заключается в том, что структура может включать в себя другие структуры и массивы и даже массив со структурами. Вот попытка: < /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»