我的程序中有很多print
函数(python 2.7
)。有什么方法可以添加几行,然后所有输出都可以重定向到stderr
?我想要的是python代码,但不是linux管道。
例如,我的程序就像:
print 'hello world'
我想添加一些代码,如:
redirect_output_to_stderr()
print 'hello world'
然后可以将所有输出重定向到stderr
。
我知道print >> sys.stderr, 'hello world'
可以实现我的目标,但这是否可以阻止修改现有代码?
答案 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