¿Cómo capturar la salida de stdout de una llamada de función Python?

Estoy usando una biblioteca de Python que hace algo a un objeto

do_something(my_object)

y lo cambia. Mientras lo hace, imprime algunas estadísticas a la salida estándar, y me gustaría obtener un control sobre esta información. La solución adecuada sería cambiar.do_something() para devolver la información relevante,

out = do_something(my_object)

pero pasará un tiempo antes que los desarrolladores dedo_something() llegar a este problema Como una solución, pensé en analizar lo que seado_something() escribe a stdout.

¿Cómo puedo capturar la salida de la salida estándar entre dos puntos en el código, por ejemplo,

start_capturing()
do_something(my_object)
out = end_capturing()

?

Respuestas a la pregunta(2)

Su respuesta a la pregunta