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

dan*_*mai 7 python redirect stdin

我正在开始一个Python项目,其中stdin重定向是必要的,使用类似于下面的代码:

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)
Run Code Online (Sandbox Code Playgroud)

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

输入内容:输入:Hello

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

输入内容:你好

你输入了:你好

我一直在寻找高低,但尚未找到答案.如果有人有想法我真的很感激.谢谢!

Ian*_* B. 3

我不确定你为什么需要这样做,但你总是可以这样做:

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

话又说回来,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
Run Code Online (Sandbox Code Playgroud)

当然,这可能会使重定向 stdin 的意义变得毫无意义。