[Tutor] reading stdin?

D-Man dsh8290@rit.edu
Fri, 16 Feb 2001 13:30:00 -0500


On Fri, Feb 16, 2001 at 01:17:32PM -0500, Mr 804 wrote:
| 
| how do I read stdin?
| 

>>> data = raw_input( "Please give me some data: " )
Please give me some data: Hello World
>>> type( data )
<type 'string'>
>>> print data
Hello World
>>>


raw_input is good if you want random stuff or text stuff,
if you want other stuff, input can be helpful

>>> data = input( "Enter some data: " )
Enter some data: 2
>>> type( data )
<type 'int'>
>>> print data
2
>>>


However, be careful how you use input() :

>>> data = input( "Enter some data: " )
Enter some data: foo
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<string>", line 0, in ?
NameError: There is no variable named 'foo'
>>>

>>> i = 2
>>> data = input( "Enter some data: " )
Enter some data: lambda x : x + i
>>> type( data )
<type 'function'>
>>> print data
<function <lambda> at 007A8574>
>>> print data( 3 )
5
>>>


input won't always do what you want, if the user inputs bad stuff.
You can use raw_input, then convert the string how you want to.  Ex:

>>> try :
...     data = int( raw_input( "Enter a number: " ) )
... except ValueError , err :
...     print "You didn't enter a valid number"
...
Enter a number: 3
>>> print data
3
>>>
>>> try :
...     data = int( raw_input( "Enter a number: " ) )
... except ValueError , err :
...     print "You didn't enter a valid number"
...
Enter a number: asdf
You didn't enter a valid number
>>>


If you have more questions, just ask.

HTH,
-D