import sys from contextlib import contextmanager from io import StringIO @contextmanager def captured_output(): new_out = StringIO() old_out = sys.stdout try: sys.stdout = new_out yield sys.stdout finally: sys.stdout = old_out print("bonjour") with captured_output() as out: print("pas bonjour") print("au revoir") with captured_output() as out2: print("pas bonjour 2") output = out.getvalue() print("my output", output) output2 = out2.getvalue() print("my output", output2)