如何根据服务器环境禁用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 ")
答案 0 :(得分:1)
如果您只想停止所有写入stdout,您可以执行sys.stdout = None
(或者,如果您想要稍微迂腐,sys.stdout = open(os.devnull)
)。至于根据您的环境改变行为,您可以根据(例如)socket.gethostname()
的结果区分它们。或者,您可以在服务器或本地框(但不是两者)上设置环境变量,然后测试os.environ
以获取变量的存在或值。
使用内置logging
模块而非print()
调用可能会更好。这将允许更精细地控制记录哪些内容以及日志的位置。