仅作为脚本运行时打印?

use*_*904 3 python scripting logging

有没有更好的方法只在作为脚本运行时进行打印,何时__name__ == '__main__'

我有一些脚本,我也导入和使用的部分.

像下面这样的东西会起作用但是很难看,并且必须分别在每个脚本中定义:

def printif(s):
    if globals()['__name__'] == '__main__':
        print (s)
    return
Run Code Online (Sandbox Code Playgroud)

我简要介绍了一些python的日志库,但更喜欢两个更轻的解决方案......

编辑:

我最终做了这样的事情:

# mylog.py
import sys
import logging

log = logging.getLogger()

#default logging level
log.setLevel(logging.WARNING)

log.addHandler(logging.StreamHandler(sys.stdout))
Run Code Online (Sandbox Code Playgroud)

并从脚本:

import log from mylog

...
log.info(...)
log.warning(...)
...

if __name__ == '__main__':
    #override when script is run..
    log.setLevel(logger.INFO)
Run Code Online (Sandbox Code Playgroud)

此方案具有最少的代码重复,每个脚本日志级别和项目范围的默认级别......这正是我想要的.

Ger*_*rat 5

run_as_script = False  

def printif(s):  
    if run_as_script:  
        print (s)
    return

if __name__ == '__main__':  
    run_as_script = True
Run Code Online (Sandbox Code Playgroud)