python - предотвращать IOError: [Errno 5] Ошибка ввода / вывода при работе без stdout
У меня есть скрипт, который автоматически запускается на сервере через cronjob, и он импортирует и запускает несколько других скриптов.
Некоторые из них используют принты, что естественно создаетIOError: [Errno 5] Input/output error
потому что скрипт выполняется без подключения к SSH / терминалу, поэтому нет правильной настройки stdout.
Есть много вопросов на эту тему, но я не смог найти никого, кто на самом делерешать это, при условии, что я не могу удалить печать или изменить выполненные сценарии.
Я пробовал несколько вещей, в том числе:
class StdOut(object):
def __init__(self):
pass
def write(self, string):
pass
sys.stdout = StdOut()
sys.stderr = StdOut()
а также
from __future__ import print_function
import __builtin__
def print(*args, **kwargs):
pass
__builtin__.print = print
Но ничего из этого не работает. Я предполагаю, что это влияет только на сам модуль, а не на модули, которые я импортирую / запускаю позже.
Итак, как я могу создать заглушку stdout, которая повлияет навсе модули в процессе? Как я уже сказал, я не хочу менять скрипты, которые выполняются из основного модуля, но я могу изменить все внутри модуля импорта. И просто, чтобы прояснить - все импортируется, новые процессы не запускаются и т. Д.
Спасибо,