python3:根据服务器禁用print语句

时间:2014-11-07 20:28:52

标签: django python-3.x

如何根据服务器环境禁用buildin print function?下面的代码似乎正在起作用 但我正在寻找一种更清洁的方式来做到这一点。我想在django应用程序中使用它。 如果print继续在localhost上工作,那就太好了。

import sys

class MyFileWrapper(object):
    def write(self, *args):
        pass
    def flush(self):
        pass

if __name__=='__main__':
    print('will be printed')
    sys.stdout = MyFileWrapper()
    print("won't be printed ")

1 个答案:

答案 0 :(得分:1)

如果您只想停止所有写入stdout,您可以执行sys.stdout = None(或者,如果您想要稍微迂腐,sys.stdout = open(os.devnull))。至于根据您的环境改变行为,您可以根据(例如)socket.gethostname()的结果区分它们。或者,您可以在服务器或本地框(但不是两者)上设置环境变量,然后测试os.environ以获取变量的存在或值。

使用内置logging模块而非print()调用可能会更好。这将允许更精细地控制记录哪些内容以及日志的位置。