11

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

例如,我的程序是这样的:

print 'hello world'

我想添加一些代码,例如:

redirect_output_to_stderr()
print 'hello world'

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

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

4

3 回答 3

20

在 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)
于 2013-04-07T08:38:54.660 回答
8

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

import sys
sys.stdout = sys.stderr
于 2013-04-07T08:31:39.680 回答
1

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

见:另一个问题

于 2013-04-07T08:32:36.990 回答