7

I have the following program to test input redirection in Python.

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

If I run this program without redirection, the input and output are shown below:

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

Now, to test input redirection, I have a file a.txt named that contains:

100
sample

However, when I run with input redirected from a.txt (as below), my input and output gets garbled.

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

Please suggest if I have a better alternative to see (with input redirection) as below:

Enter a number: 100
Enter a string: sample
number entered = 100
string entered = sample
asked Dec 19, 2015 at 2:54

1 Answer 1

6

You essentially want to tee stdin into 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)

The Tee class implements only what raw_input uses, so it's not guaranteed to work for other uses of sys.stdin.

answered Dec 19, 2015 at 3:04
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.