2015-12-19 22 views
6

我有以下程序在Python中测试输入重定向。使用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 

回答

6

你基本上要标准输入开球到标准输出:

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的其他用途。