Есть ли лучший способ печати только при запуске в виде скрипта, когда __name__ == '__main__'
?
У меня есть несколько сценариев, которые я также импортирую и использую части.
Нечто похожее на приведенное ниже будет работать, но уродливо, и его придется определять в каждом сценарии отдельно:
def printif(s):
if globals()['__name__'] == '__main__':
print (s)
return
Я кратко рассмотрел некоторые из библиотек журналов python, но предпочел бы более легкое решение ...
редактирование:
Я закончил тем, что делал что-то вроде этого:
# mylog.py
import sys
import logging
log = logging.getLogger()
#default logging level
log.setLevel(logging.WARNING)
log.addHandler(logging.StreamHandler(sys.stdout))
А из сценария:
import log from mylog
...
log.info(...)
log.warning(...)
...
if __name__ == '__main__':
#override when script is run..
log.setLevel(logger.INFO)
Эта схема имеет минимальное дублирование кода для уровней журналов сценариев и уровень по умолчанию для всего проекта ... это именно то, что я хотел.