2015-12-19 24 views
6

Python'da giriş yönlendirmeyi sınamak için aşağıdaki program var. Ben yeniden yönlendirme olmadan bu programı çalıştırırsanızPython ile giriş yönlendirmesi

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

, giriş ve çıkış aşağıda gösterilmiştir:

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

Şimdi, giriş yönlendirmeyi test etmek, ben içeren adında bir dosya a.txt vardır:

Ben (aşağıda) a.txt yönlendirildi girişi olan çalıştırdığınızda
100 
sample 

Ancak, benim giriş ve çıkış bozuk alır.

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

Ben (giriş yönlendirmesiyle ilgili) görmek için daha iyi bir alternatif var sanki aşağıda önermek edin:

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

cevap

6

Sen aslında Stdout'a içine stdin'nin maça istiyorum:

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 sınıf sadece raw_input'un ne kullandığını uygular, bu nedenle sys.stdin'un diğer kullanımları için çalışması garanti edilmez.