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

时间:2013-04-07 08:25:31

标签: python python-2.7 stderr

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

例如,我的程序就像:

print 'hello world'

我想添加一些代码,如:

redirect_output_to_stderr()
print 'hello world'

然后可以将所有输出重定向到stderr

我知道print >> sys.stderr, 'hello world'可以实现我的目标,但这是否可以阻止修改现有代码?

3 个答案:

答案 0 :(得分:18)

在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)

答案 1 :(得分:8)

在您的方法中执行此操作:

import sys
sys.stdout = sys.stderr

答案 2 :(得分:2)

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

请参阅:another question