Home > Software design >  Im getting this error in python: IndexError: list index out of range
Im getting this error in python: IndexError: list index out of range

Time:03-25

Im getting is error in python for some reason i don't understand how these are outside of the index when there are 7 elements to the file attack = user_stats.readlines()[2] IndexError: list index out of range

this is the code:

with open(username   '.txt', 'r') as user_stats:
    level = user_stats.readlines()[1]
    attack = user_stats.readlines()[2]
    health = user_stats.readlines()[3]
    max_health = user_stats.readlines()[4]
    exp = user_stats.readlines()[5]
    money = user_stats.readlines()[6]

this is the txt file:

username
1
1
25
25
0
0

CodePudding user response:

The first call to readlines() reads the full file and reaches the end of the file. Each subsequent call returns an empty string because you've already reached the end of the file.

There is no need to call readlines() multiple times.

CodePudding user response:

well ive figured it out, idk that its the best way but it works

with open(username   '.txt', 'r') as user_stats:
    level = user_stats.readlines()[1]
with open(username   '.txt', 'r') as user_stats:
    attack = user_stats.readlines()[2]
with open(username   '.txt', 'r') as user_stats:
    health = user_stats.readlines()[3]
with open(username   '.txt', 'r') as user_stats:
    max_health = user_stats.readlines()[4]
with open(username   '.txt', 'r') as user_stats:
    exp = user_stats.readlines()[5]
with open(username   '.txt', 'r') as user_stats:
    money = user_stats.readlines()[6]

CodePudding user response:

Firstly, as person above said the code should look something like that

with open('username.txt', 'r') as user_stats:
    lines = user_stats.readlines()
    level = lines[1]
    attack = lines[2]
    health = lines[3]
    max_health = lines[4]
    exp = lines[5]
    money = lines[6]
    print(username, level, attack, health, max_health, exp, money) #print to check if everything is right

Secondly, such things as stats should be stored inside objects but from what i can remember there are some limitations to python constructors, so i cannot really help much here. more about constructors

  • Related