在python中,我可以将print函数的输出重定向到stderr吗?



我的程序中有很多print函数(python 2.7)。有没有办法我可以添加几行,然后所有的输出可以重定向到stderr ?我想要的是python代码,而不是linux管道。

例如,我的程序是这样的:
print 'hello world'

我想添加一些代码,如:

redirect_output_to_stderr()
print 'hello world'

则所有输出都可以重定向到stderr

我知道print >> sys.stderr, 'hello world'可以实现我的目标,但它是任何方法,可以防止修改现有的代码?

在python 2.7中可以这样做:

import sys
print >> sys.stderr, "To stderr."

或者您可以从3.x:

导入行为
from __future__ import print_function
import sys
print('To stderr.', file=sys.stderr)

在你的方法中这样做:

import sys
sys.stdout = sys.stderr

重新定义print是Python 3+的特性。但是,您可以将sys.stdout更改为std.stderr

参见:另一个问题

最新更新