There was a redirect_output function in IPython.utils, and there was a %%capture magic function, but these are now gone, and this thread on the topic is now outdated.
I'd like to do something like the following:
from IPython.utils import io
from __future__ import print_function
with io.redirect_output(stdout=False, stderr="stderr_test.txt"):
while True:
print('hello!', file=sys.stderr)
Thoughts? For more context, I am trying to capture the output of some ML functions that run for hours or days, and output a line every 5-10 seconds to stderr. I then want to take the output, munge it, and plot the data.
@Ben, just replacing
sys.stderr
did not work, and the full flush logic suggested in the post was necessary. But thank you for the pointer as it finally gave me a working version:It would have been nice if Jupyter kept the
redirect_output()
function and/or the%%capture
magic.You could probably try replacing
sys.stderr
with some other file descriptor the same way as suggested here.