0

刚接触编码,只学习了一个月的 Python。

我正在解开一个文件,其中包含一个存储用户名、分数和他们完成测试的时间的元组列表。该列表最多可容纳 10 个元组,但是当我解开并使用此 for 循环时,我只能显示一个元组。我希望它连续显示它们。它可能很小,但我一无所知,无法弄清楚,所以希望有人能提供帮助。

目前这是运行时的样子:

_______HighScore Board_______
NAME    SCORE   TIME OF ENTRY
bill 28.02 03:27PM 23-November-2012

它不显示任何其他保存的分数,所以我需要创建另一个循环来继续运行列表并打印元组吗?

代码片段如下:

提前致谢

4

1 回答 1

1

您的评论“它会覆盖腌制列表而不是添加到它吗?” 是正确的。如果您考虑一下,它不能做任何其他事情:

open (..., 'w') 将打开一个文件进行写入,如果它已经存在,则将其截断为长度 0。换言之,先前的内容被丢弃。

pickle 将创建一个数据包,您可以将其存储或通过网络传递。在这种情况下,您将其写入打开和截断的文件。然后这个文件只包含你刚刚腌制的东西。

因此,在检索内容时,它只会看到您最后输入的内容,因为您在打开文件时删除了其余内容。

你可以做两件事。如果您打开文件进行追加('ab' 而不是 'wb'),您可以一个接一个地写几个腌制的东西。您还应该能够逐个阅读它们。不过,我不建议这样做,除非文件打算太大以至于您不想将其全部加载到内存中。

通常,在向板添加内容时,您需要读取当前板,将项目添加到列表中,然后将生成的板写回文件(故意覆盖旧板)。

于 2012-11-23T18:34:51.553 回答