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

发布于 2021-01-29 14:11:19

我从一个需要标准输入重定向的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

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

输入内容:您好

您输入了:您好

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

关注者
0
被浏览
110
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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争论的重点。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看