In python, can I redirect the output of print function to stderr?

南楼画角 提交于 2019-12-18 21:22:13

问题


There're lots of print function (python 2.7) in my program. Is there any way I can add a few lines then all the output can be redirected to stderr? What I want is python codes but not linux pipeline.

For example, my program is like:

print 'hello world'

I would like to add some codes like:

redirect_output_to_stderr()
print 'hello world'

Then all the output can be redirected to stderr.

I know print >> sys.stderr, 'hello world' can achieve my goal, but is it any way that can prevent from modifying the existed codes?


回答1:


Do this in your method:

import sys
sys.stdout = sys.stderr



回答2:


In python 2.7 you can do:

import sys

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

Or you can import the behavior from 3.x:

from __future__ import print_function
import sys

print('To stderr.', file=sys.stderr)



回答3:


Redefinition of print is feature of Python 3+. However, you can change sys.stdout to std.stderr.

See: another question



来源:https://stackoverflow.com/questions/15860372/in-python-can-i-redirect-the-output-of-print-function-to-stderr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!