Sam*_*uel 7 python io python-2.x
我想将其重定向stdout到文件.但这会影响到raw_input.我需要将输出重定向raw_input到stderr而不是stdout.我怎样才能做到这一点?
aba*_*ert 16
唯一的问题raw_input是它将提示输出到stdout.而不是试图拦截它,为什么不自己打印提示,并raw_input在没有提示的情况下调用,这对stdout没有任何打印?
def my_input(prompt=None):
if prompt:
sys.stderr.write(str(prompt))
return raw_input()
Run Code Online (Sandbox Code Playgroud)
如果你想raw_input用这个代替:
import __builtin__
def raw_input(prompt=None):
if prompt:
sys.stderr.write(str(prompt))
return __builtin__.raw_input()
Run Code Online (Sandbox Code Playgroud)
(有关更多信息,请参阅文档__builtin__,存储的模块raw_input和其他内置函数.您通常不需要import它,但文档中没有任何内容可以保证,因此最好是安全...)
在Python 3.2+中,模块被命名builtins而不是__builtin__.(当然3.x raw_input首先没有,它已被重命名input,但可以在那里使用相同的想法.)
stdout暂时重定向stderr,然后恢复。
import sys
old_raw_input = raw_input
def raw_input(*args):
old_stdout = sys.stdout
try:
sys.stdout = sys.stderr
return old_raw_input(*args)
finally:
sys.stdout = old_stdout
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3230 次 |
| 最近记录: |