【发布时间】:2016-07-07 05:34:12
【问题描述】:
我有一个通过 cronjob 在服务器上自动运行的脚本,它导入并运行其他几个脚本。
其中一些使用打印,这自然会创建 IOError: [Errno 5] Input/output error,因为脚本在没有连接任何 SSH/终端的情况下运行,因此没有正确的标准输出设置。
关于这个主题有很多问题,但我找不到真正解决它的人,假设我无法删除打印或更改执行的脚本。
我尝试了几件事,包括:
class StdOut(object):
def __init__(self):
pass
def write(self, string):
pass
sys.stdout = StdOut()
sys.stderr = StdOut()
和
from __future__ import print_function
import __builtin__
def print(*args, **kwargs):
pass
__builtin__.print = print
但这些都不起作用。我认为它只影响模块本身,而不影响我稍后导入/运行的模块。
那么如何创建一个会影响进程中的所有模块的存根标准输出?就像我说的,我不想更改从主模块执行的脚本,但我可以更改导入模块中的所有内容。并且只是为了澄清 - 一切都被导入,没有产生新的进程等。
谢谢,
【问题讨论】:
标签: python python-2.7 stdout