Login | Register
Nerd ParadiseArtisanal tutorials since 1999
If you've tried to take in input by piping a file into a python script and reading it via raw_input, you've probably run across the terrible EOF exception that arises at the end:

C:\Users\Blake\Desktop>script.py < nums.txt
Blah
Blah
Blah
Traceback (most recent call last):
  File "C:\Users\Blake\Desktop\script.py", line 10, in <module>
    line = raw_input()
EOFError: EOF when reading a line

C:\Users\Blake\Desktop>


After scouring the internet to find the "correct" fix for this thinking "gee, once I find this it'll make a great blog post" I am sorry to report that, alas, I could not find one. So I give you the best "half-assed" fix:

while True:
  try:
    value = raw_input()
    do_stuff(value) # next line was found
  except (EOFError):
    break #end of file reached


Sadly this seems to be the proper usage of raw_input when dealing with the end of the stream of input from piped input. I guess the strongly-typed, unit-testing, check-for-every-null software developer in me cringes at the idea of using exceptions under normal usage circumstances. In pretty much every other development platform, using exceptions are reserved for when things Really Go Wrong.

Oh well, Python can't be perfect in every way.
Hey, there, Python folks. Hope you enjoyed the post. I just wanted to give a quick shout-out for a weekly Python code golf that I recently started up over on StringLabs.io. If you like Python puzzles please come check it out!