I Python% run игнорировать команды печати - PullRequest
0 голосов
/ 31 марта 2020

Я использую несколько ноутбуков Jupyter для разделения задач между разными модулями. В моей основной записной книжке я называю другой модуль %run another_module.ipynb, который загружает все мои данные. Тем не менее, он также печатает и печатает все, что у меня есть в another_module.ipynb .

Я хочу сохранить графики в another_module.ipynb , чтобы помочь мне визуализировать данные, но я не хочу перепечатывать все при вызове run another_module.ipynb. Есть ли возможность предотвратить печать этого?

Спасибо

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете:

  1. Переопределить функцию print и отключить ее:
_print_function = print  # create a backup in case you need it later
globals()["print"] = lambda *args, **kwargs: None
Запустите файл с флагом -i. Без -i файл запускается в новом пространстве имен, поэтому ваши изменения глобальных переменных теряются; при -i файл запускается в текущем пространстве имен.
%run -i another_module.ipynb

Если вы используете другие методы для печати журналов (например, sys.stdout.write(), logging) было бы сложнее создавать для них издевательства. В этом случае я бы предложил перенаправить канал stdout или stderr на /dev/null:

import os
import sys
sys.stdout = fopen(os.devnull, "w")
%run -i another_module.ipynb

Оба метода считаются хаки и должны использоваться только тогда, когда вы знаете последствия. Здесь лучше изменить код в записной книжке, либо добавить флаг --verbose для управления журналом, либо использовать некоторую библиотеку журналов (например, logging), которая поддерживает полное отключение журналирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...