Im getting this error in python: IndexError: list index out of range

Viewed 100

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
3 Answers

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.

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]

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