On 2007-12-20, Tim Roberts wrote:

>>As a test, I tried this:
>>
>>   for line in fileinput.input():
>>      print '**', line
>>
>>and found that it would print nothing until I hit Ctl-D, then print
>>all the lines, then wait for another Ctl-D, and so on (until I pressed
>>Ctl-D twice in succession to end the loop).
>
> Note that you are doing a lot more than just reading from a file here. This
> is calling a function in a module.  Fortunately, you have the source to
> look at.
>
> As I read the fileinput.py module, this will eventually call
> FileInput.next(), which eventually calls FileInput.readline(), which
> eventually calls stdin.readlines(_bufsize).  The default buffer size is
> 8,192 bytes.

OK, I think I've got this figured out!

I'll keep using fileinput.input() for the normal case (reading from
files named as arguments) and use sys.stdin.readline() for testing
(reading from the keyboard, when no filenames are given).

Thanks to you and Jonathan for your advice.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to