What is the best way to toggle python prints?

前端 未结 6 1082
一个人的身影
一个人的身影 2021-01-12 06:28

I\'m running Python 2.4 in a game engine and I want to be able to turn off all prints if needed. For example I\'d like to have the prints on for a debug build, and then turn

6条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-12 07:00

    If you really want to toggle printing:

    >>> import sys
    >>> import os
    >>> print 'foo'
    foo
    >>> origstdout = sys.stdout
    >>> sys.stdout = open(os.devnull, 'w')
    >>> print 'foo'
    >>> sys.stdout = origstdout
    >>> print 'foo'
    foo
    

    However, I recommend you only use print for throwaway code. Use logging for real apps like the original question describes. It allows for a sliding scale of verbosity, so you can have only the important logging, or more verbose logging of usually less important details.

    >>> import logging
    >>> logging.basicConfig(level=logging.DEBUG)
    >>> logging.debug('foo')
    DEBUG:root:foo
    

    For example, usage might be to put debugging logs throughout your code. Then to silence them, change your level to a higher level, one of INFO, WARN or WARNING, ERROR, or CRITICAL or FATAL

    >>> logging.root.setLevel(logging.INFO)
    >>> logging.debug('foo')
    >>>
    

    In a script you'll want to just set this in the basicConfig like this:

    import logging
    logging.basicConfig(level=logging.INFO)
    
    logging.debug('foo') # this will be silent
    

    More sophisticated usage of logging can be found in the docs.


提交回复
热议问题