Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中更改和重新pickle值_Python_Pickle - Fatal编程技术网

如何在python中更改和重新pickle值

如何在python中更改和重新pickle值,python,pickle,Python,Pickle,我正在尝试向我的程序中添加一个函数,该函数可以保存所有运行时间的用户名和高分。该函数应该加载以前玩游戏时的高分,并且能够将用户/分数元组附加到列表分数。根据我的理解,下面的代码应该可以工作,但由于某些原因,它只会显示程序运行的当前时间的用户/分数集。如何编辑此代码以实现此目的。对不起,我是新来的,我只是想了解 import pickle score = 12 def scor_func(score): scores = [] name = input(

我正在尝试向我的程序中添加一个函数,该函数可以保存所有运行时间的用户名和高分。该函数应该加载以前玩游戏时的高分,并且能够将用户/分数元组附加到列表分数。根据我的理解,下面的代码应该可以工作,但由于某些原因,它只会显示程序运行的当前时间的用户/分数集。如何编辑此代码以实现此目的。对不起,我是新来的,我只是想了解

import pickle

    score = 12

    def scor_func(score):
      scores = []
      name = input("Please enter your name: ")
      entry = (name, score)
      scores.append(entry)
      f = open("Triviascores.bat", "wb")
      pickle.dump(scores, f)

      f.close()

      f = open("Triviascores.bat", "rb")
      scores = pickle.load(f)
      f.close()
      return scores

    scores = scor_func(score)
    print(scores)

你在这里调换了你的行动

您的代码创建一个空的
分数
列表,添加一个条目,然后保存该列表。之后,再次加载文件,因此只加载刚刚创建的新列表

您需要首先加载以前的分数,附加新分数,然后保存数据:

def scor_func(score):
    name = input("Please enter your name: ")
    entry = (name, score)

    scorefile = "Triviascores.bat"
    if os.path.exists(scorefile):
        with open(scorefile, 'rb') as sf:
            scores = pickle.load(sf)
    else:
        scores = []

    scores.append(entry)

    with open(scoresfile, "wb") as sf:
        pickle.dump(scores, sf)

    return scores

卸下(装载)。做出改变。腌菜(倾倒)。订单问题。非常感谢,我终于把它解决了。我对“酸洗”这个概念还不熟悉。仍在努力掌握它的工作原理。