【问题标题】:python3: disabling print statement depending on serverpython3:根据服务器禁用打印语句
【发布时间】:2014-11-07 20:28:51
【问题描述】:

如何根据服务器环境禁用内置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 ")

【问题讨论】:

  • 考虑使用日志库,而不是打印语句?
  • @IsmailBadawi 我尝试了一次日志记录模块,但遇到了问题,使用打印太容易了。但我想我会再试一次。

标签: django python-3.x


【解决方案1】:

如果您只想停止所有 写入标准输出,您可以使用sys.stdout = None(或者,如果您想稍微迂腐一点,请使用sys.stdout = open(os.devnull))。至于根据您的环境改变行为,您可以根据(例如)socket.gethostname() 的结果来区分它们。或者,您可以在服务器或本地机器(但不能同时)上设置环境变量,然后测试 os.environ 以了解该变量的存在或值。

您最好使用内置的logging 模块而不是print() 调用。这将允许更细粒度地控制记录哪些内容以及日志的去向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多