2015-12-19 13 views
6

Tôi có chương trình sau để kiểm tra chuyển hướng đầu vào bằng Python.Chuyển hướng đầu vào bằng python

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

Nếu tôi chạy chương trình này mà không cần chuyển hướng, đầu vào và đầu ra được trình bày dưới đây:

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

Bây giờ, để kiểm tra chuyển hướng đầu vào, tôi có một a.txt file có tên có chứa:

100 
sample 

Tuy nhiên, khi tôi chạy với đầu vào được chuyển hướng từ a.txt (như dưới đây), đầu vào và đầu ra của tôi bị cắt xén.

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

Xin gợi ý nếu tôi có một lựa chọn tốt hơn để xem (với chuyển hướng đầu vào) như sau:

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

Trả lời

6

Bạn có thực chất muốn tee stdin vào stdout:

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) 

Các Tee lớp thực hiện chỉ những gì sử dụng raw_input, do đó, nó không được bảo đảm để làm việc cho các ứng dụng khác của sys.stdin.

Các vấn đề liên quan