2015-12-19 46 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的其他用途。