Что лучший способ состоит в том, чтобы переключить печать Python?

Kubelet запускается как демон systemd внутри рабочих узлов EKS. Вы можете подключиться по SSH к рабочему экземпляру EC2 и попробовать запустить systemctl status kubelet.

8
задан SilentGhost 2 April 2009 в 00:52
поделиться

4 ответа

да, можно присвоиться sys.stdout к чему Вы хотите. Создайте немного класса с a write метод, который ничего не делает:

class DevNull(object):
    def write(self, arg):
        pass

import sys    
sys.stdout = DevNull()
print "this goes to nirvana!"

С той же техникой можно было также зарегистрировать печать в файл путем установки sys.stdout к открытому объекту файла.

12
ответ дан 3 November 2019 в 12:56
поделиться

Я знаю, что ответ был уже отмечен как корректный, но Python имеет флаг отладки, который предоставляет более чистое решение. Вы используете его как это:

if __debug__:
    print "whoa"

Если Вы вызываете Python с-O или - OO (как Вы обычно были бы для сборки конечных версий), __debug__ установлен на False. То, что еще лучше, является этим __debug__ особый случай для интерпретатора; это на самом деле разделит, что код, когда это запишет pyc/pyo файлы, делая получающийся код меньшим/быстрее. Обратите внимание, что Вы не можете присвоить значения __debug__, таким образом, это полностью базируется от тех параметров командной строки.

10
ответ дан 3 November 2019 в 12:56
поделиться

Не используйте печать, но делайте консольный класс, который обрабатывает всю печать. Просто выполните вызовы к консоли, и консоль может решить, распечатать ли на самом деле их. Консольный класс также полезен для вещей как ошибка и предупреждающие сообщения или перенаправление, куда вывод идет.

3
ответ дан 3 November 2019 в 12:56
поделиться

Регистрирующийся модуль является "лучшим" путем.. хотя я довольно часто просто использую что-то простое как..

class MyLogger:
    def _displayMessage(self, message, level = None):
        # This can be modified easily
        if level is not None:
            print "[%s] %s" % (level, message
        else:
            print "[default] %s" % (message)

    def debug(self, message):
        self._displayMessage(message, level = "debug")
    def info(self, message):
        self._displayMessage(message, level = "info")

log = MyLogger()
log.info("test")
9
ответ дан 3 November 2019 в 12:56
поделиться
Другие вопросы по тегам:

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