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