Vous pouvez intercepter stdout
avant d'être inscrit à partir de votre code C
, puis traiter la valeur de sortie.
import sys
import StringIO
buffer = StringIO.StringIO()
# redirect stdout to a buffer
sys.stdout = buffer
# call the c code with ctypes
# process the buffer
# recover the old stdout
sys.stdout = sys.__stdout__
Cependant, il serait plus facile et plus agréable de passer un tampon au code C, et au lieu de printf
-ment les valeurs de sortie que vous le feriez dans le tampon fourni.
Ou, mieux encore, vous pouvez passer un byref
c_char_p
, allouer de la mémoire pour l'intérieur du code C
, mettez à jour la mémoire tampon avec la valeur de sortie puis utilisez le tampon dans Python
. N'oubliez pas de libérer la mémoire (vous devriez créer un wrapper ctypes
pour la fonction free
).
Souhaitez-vous surcharger le C printf en Python? – luc
En cas de surcharge, sur quel système d'exploitation? – Arlaharen
Si la surcharge résoudrait mon problème, j'essaierais. J'utilise Ubuntu 9.10. – Framester