Перенаправление вывода с ноутбука Jupyter

VS утверждает, что оба аргумента в вызове метода выше имеют объект типа, тогда как метод принимает только Func. Но значение обоих элементов рабочего листа имеет тип Func

Да, но объявленный тип - object. Компилятор не может знать, что фактический тип выполнения будет Func<object>, поэтому необходим явный приведение.

0
задан GuillaumeA 1 March 2019 в 21:45
поделиться

1 ответ

Вы можете использовать contextlib.

from contextlib import contextmanager
import sys
@contextmanager
def stdout_redirector():
    class MyStream:
        def write(self, msg):
            prefix = 'augmented:' if msg.strip() else ''
            old_stdout.write( prefix + msg)
        def flush(self):
            old_stdout.flush()
    old_stdout = sys.stdout
    sys.stdout = MyStream()
    try:
        yield
    finally:
        sys.stdout = old_stdout

output

Лучше использовать оператор with для управления перенаправлением. Если это невозможно в вашем случае, вызов методов __enter__() и __exit__() объекта перенаправителя также работает. Вы также можете поместить эти коды перенаправителя в функцию-ловушку pre_run_cell и post_run_cell в IPython.

0
ответ дан gdlmx 1 March 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: