一尘不染

如何在Python中显示重定向的stdin?

python

我从一个需要标准输入重定向的Python项目开始,使用类似于以下的代码:

import sys
import StringIO

s = StringIO.StringIO("Hello")
sys.stdin = s
a = raw_input("Type something: ")
sys.stdin = sys.__stdin__
print("You typed in: "+a)

问题是,代码运行后,将显示以下内容:

输入内容:您输入的内容:Hello

有没有办法修改我的代码,以便显示以下内容?

输入内容:您好

您输入了:您好

我一直在搜寻高低,但尚未找到答案。如果有人有主意,我将不胜感激。谢谢!


阅读 265

收藏
2021-01-20

共1个答案

一尘不染

我不确定为什么需要这样做,但是您可以始终这样做:

a = raw_input("Type something: ")
if sys.stdin is not sys.__stdin__:
    print(a)
print("You typed in: "+a)

再说一次,raw_input根据需要交换自己的实现可能会更有意义。

编辑:好的,根据您的评论,看来您想进行一些猴子修补。像这样:

old_raw_input = raw_input

def new_raw_input(prompt):
    result = old_raw_input(prompt)
    if sys.stdin is not sys.__stdin__:
        print result
    return result

raw_input = new_raw_input

当然,这可能是重定向stdin争论的重点。

2021-01-20