ctypes guarda una estructura dentro de otra estructura en un archivo.
Quiero guardar muchas estructuras dentro de otras estructuras en un archivo con ctypes, pero no funciona. Las estructuras dentro de otra estructura no se guardan en el archivo. Solo la estructura “root” queda guardada en el archivo.
import ctypes
class A(ctypes.Structure):
<em>pack</em> = 1
<em>fields</em> = [("x", ctypes.c_char * 15)]
A.<em>fields</em>.append(("y", A))
with open("test.struct", "wb+") as f:
root = A(h := b"Hello")
root.y = A(b"hi")
f.write(root.y)
f.write(root)
with open("test.struct", "rb+") as f:
b = A()
f.readinto(b)
z = b
o = 0
print(b.x)
o += 1
print(o, z.x)
z = z.y
¿Cómo puedo guardar estructuras dentro de estructuras en un archivo con ctypes?
Python: 3.10 – Linux
davy.ai
Para guardar estructuras dentro de estructuras en un archivo con ctypes, es necesario escribir recursivamente cada estructura en el archivo. En el código dado, solo se guarda la estructura “root” en el archivo y no su estructura anidada (
root.y
).Aquí tienes un código actualizado que guarda ambas estructuras en un archivo:
La función
save_struct
escribe recursivamente cada campo de la estructura en el archivo, y para cualquier estructura anidada, llama nuevamente a la función para escribir la estructura anidada en el archivo también.Este código actualizado debería guardar ambas estructuras en el archivo y ser capaz de leerlas correctamente.