Python 保存最后 3 个分数
Python saving the last 3 scores
当我 运行 mu 代码时,它说:
分数文件中的行:
ValueError:I/O 对已关闭文件的操作。
我已经尝试了很多事情,但它不会改变结果。我的代码如下所示:
SCORE_FILENAME = "Class1.txt"
MAX_SCORES = 3
try: scoresFile = open('Class1.txt', "r+")
except IOError: scoresFile = open('Class1.txt', "w+") # File not exists
actualScoresTable = []
for line in scoresFile:
tmp = line.strip().replace("\n","").split(",")
for index, score in enumerate(tmp[1:]):
tmp[1+index] = int(score)
actualScoresTable.append({
"name": tmp[0],
"scores": tmp[1:],
})
scoresFile.close()
new = True
for index, record in enumerate( actualScoresTable ):
if record["name"] == pname:
actualScoresTable[index]["scores"].append(correct)
if len(record["scores"]) > MAX_SCORES:
actualScoresTable[index]["scores"].pop(0) # OR del actualScoresTable[index]["scores"][0]
new = False
break
if new:
actualScoresTable.append({
"name": pname,
"scores": [correct],
})
scoresFile = open(SCORE_FILENAME, "w+") # Truncating file (write all again)
for record in actualScoresTable:
for index, score in enumerate(record["scores"]):
record["scores"][index] = str(score)
scoresFile.write( "%s,%s\n" % (record["name"],(record["scores"])) )
scoresFile.close()
谁能帮我解决这个问题。
将 scoresFile.close()
移出您的 for 循环。您将在阅读第一行后关闭它。
问题似乎出在第一个 for 循环中的 scoresFile.close()
行。如果文件多于一行,则在您尝试访问第二行时它将关闭。我认为如果将该行移到循环之外,这个错误就会消失。
当我 运行 mu 代码时,它说:
分数文件中的行: ValueError:I/O 对已关闭文件的操作。
我已经尝试了很多事情,但它不会改变结果。我的代码如下所示:
SCORE_FILENAME = "Class1.txt"
MAX_SCORES = 3
try: scoresFile = open('Class1.txt', "r+")
except IOError: scoresFile = open('Class1.txt', "w+") # File not exists
actualScoresTable = []
for line in scoresFile:
tmp = line.strip().replace("\n","").split(",")
for index, score in enumerate(tmp[1:]):
tmp[1+index] = int(score)
actualScoresTable.append({
"name": tmp[0],
"scores": tmp[1:],
})
scoresFile.close()
new = True
for index, record in enumerate( actualScoresTable ):
if record["name"] == pname:
actualScoresTable[index]["scores"].append(correct)
if len(record["scores"]) > MAX_SCORES:
actualScoresTable[index]["scores"].pop(0) # OR del actualScoresTable[index]["scores"][0]
new = False
break
if new:
actualScoresTable.append({
"name": pname,
"scores": [correct],
})
scoresFile = open(SCORE_FILENAME, "w+") # Truncating file (write all again)
for record in actualScoresTable:
for index, score in enumerate(record["scores"]):
record["scores"][index] = str(score)
scoresFile.write( "%s,%s\n" % (record["name"],(record["scores"])) )
scoresFile.close()
谁能帮我解决这个问题。
将 scoresFile.close()
移出您的 for 循环。您将在阅读第一行后关闭它。
问题似乎出在第一个 for 循环中的 scoresFile.close()
行。如果文件多于一行,则在您尝试访问第二行时它将关闭。我认为如果将该行移到循环之外,这个错误就会消失。