Python 在标准库中为您提供了一些帮助程序,请查看contextlib
:
>>> import io, sys\n>>> from contextlib import redirect_stdout, redirect_stderr\n>>> from tqdm import tqdm\n>>> def foo():\n... print(\'spam to stdout\')\n... print(\'spam to stderr\', file=sys.stderr)\n... \n>>> out = io.StringIO()\n>>> err = io.StringIO()\n>>> with redirect_stdout(out), redirect_stderr(err):\n... for x in tqdm(range(3), file=sys.__stdout__):\n... print(x) # more spam\n... foo()\n... \n100%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 3/3 [00:00<00:00, 29330.80it/s]\n>>> out.getvalue()\n\'0\\nspam to stdout\\n1\\nspam to stdout\\n2\\nspam to stdout\\n\'\n>>> err.getvalue()\n\'spam to stderr\\nspam to stderr\\nspam to stderr\\n\'\n
Run Code Online (Sandbox Code Playgroud)\n