【问题标题】:Input redirection with python使用python进行输入重定向
【发布时间】:2015-12-19 02:54:26
【问题描述】:

我有以下程序来测试 Python 中的输入重定向。

a = int(raw_input("Enter a number: "))
b = raw_input("Enter a string: ")
print "number entered = ", a
print "string entered = ", b

如果我在没有重定向的情况下运行这个程序,输入和输出如下所示:

Enter a number: 100
Enter a string: sample
number entered =  100
string entered =  sample

现在,为了测试输入重定向,我有一个名为 a.txt 的文件,其中包含:

100
sample

但是,当我使用从 a.txt 重定向的输入(如下所示)运行时,我的输入和输出会出现乱码。

python doubt02.py < a.txt
Enter a number: Enter a string: number entered =  100
string entered =  sample

请建议我是否有更好的替代方法来查看(使用输入重定向)如下:

Enter a number: 100
Enter a string: sample
number entered =  100
string entered =  sample

【问题讨论】:

    标签: python input io-redirection


    【解决方案1】:

    您实际上想将标准输入转换为标准输出:

    import sys
    
    class Tee(object):
        def __init__(self, input_handle, output_handle):
            self.input = input_handle
            self.output = output_handle
    
        def readline(self):
            result = self.input.readline()
            self.output.write(result)
    
            return result
    
    if __name__ == '__main__':
        if not sys.stdin.isatty():
            sys.stdin = Tee(input_handle=sys.stdin, output_handle=sys.stdout)
    
        a = raw_input('Type something: ')
        b = raw_input('Type something else: ')
    
        print 'You typed', repr(a), 'and', repr(b)
    

    Tee 类仅实现 raw_input 使用的功能,因此不能保证它适用于 sys.stdin 的其他用途。

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2023-03-06
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      相关资源
      最近更新 更多