[Tutor] readline

Dave Angel davea at davea.name
Wed Jul 31 22:57:29 CEST 2013


On 07/31/2013 04:12 PM, Mike McTernan wrote:
> I am having problems with the readline command in Python 2.7.
>
> I have a text file that has 12 lines of text, each line represents a
> response to a variable called star_sign that is collected via
> raw_input.
>
> However, instead of printing the line 5 it prints the first 5 letters on line 1.
>
> Here is the program:
>
> from sys import argv
>
> script, zodiac = argv
>
> prediction = open(zodiac, "r")
>
> prompt = "> "
>
> def welcome():
>      print "Welcome to your daily horoscope"
>      horoscope()
>
> def horoscope():
>      print "I can predict your future"
>      print "What is your starsign?"
>      star_sign = raw_input(prompt)
>
>      if "Leo" in star_sign:
>          print prediction.readline(5)

That 5 limits the number of bytes that readline() will read to 5.  I 
doubt if that's what you wanted.

>
>      else:
>          print "You gonna die"
>
> welcome()

I suggest instead that you replace the prediction line with

infile = open(zodiac, "r")
predictions = infile.readlines()
infile.close()

And the print line with
                  print predictions[5]

Notice that predictions is now a list of strings, each representing one 
line of the file.  They also have newlines, so you may want to strip() 
them, but that's a minor issue.


-- 
DaveA



More information about the Tutor mailing list