[Tutor] readline

Alan Gauld alan.gauld at btinternet.com
Wed Jul 31 23:05:33 CEST 2013


On 31/07/13 21:12, Mike McTernan wrote:
> I am having problems with the readline command in Python 2.7.

 > script, zodiac = argv
 > prediction = open(zodiac, "r")

This code is very fragile, you should check that zodiac is actually 
being set by the user and ideally that it is a real file before using 
it. Alternatively use a try/except block to catch any error. The latter 
is probably the most Pythonic approach.

       if "Leo" in star_sign:
           print prediction.readline(5)


> instead of printing the line 5 it prints the first 5 letters on line 1.

What made you think it would read line 5? The help clearly says:

readline(...)
     readline([size]) -> next line from the file, as a string.

     Retain newline.  A non-negative size argument limits the maximum
     number of bytes to return (an incomplete line may be returned then).
     Return an empty string at EOF.
(END)

So the '5' limits the number of *bytes* read not the lines.

The program is working exactly as you should expect.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list