Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 试图将JSON保存到文件,但获取AttributeError:“str”对象没有属性“dumps”_Python_Json - Fatal编程技术网

Python 试图将JSON保存到文件,但获取AttributeError:“str”对象没有属性“dumps”

Python 试图将JSON保存到文件,但获取AttributeError:“str”对象没有属性“dumps”,python,json,Python,Json,我的第一个程序是玩一个游戏,并在文件中保持较高的胜利分数。我想使用JSON,如果它不存在,我可以创建一个文件,但不能添加到它,游戏会话仍然是相同的 我得到错误:AttributeError:'str'对象没有属性'dumps' 代码是: score = { "score" : round_counter, "name" : player["name"], "hp left" : player["hitpoints"] } if os.path.isfile('score

我的第一个程序是玩一个游戏,并在文件中保持较高的胜利分数。我想使用JSON,如果它不存在,我可以创建一个文件,但不能添加到它,游戏会话仍然是相同的

我得到错误:AttributeError:'str'对象没有属性'dumps'

代码是:

score = {
    "score" : round_counter,
    "name" : player["name"],
    "hp left" : player["hitpoints"]
}

if os.path.isfile('score.json'):

    print("your score has been added")
    json = json.dumps(score)
    f = open("score.json","a")
    f.write(json)
    f.close()

else :
    print ("database doesn't exist so it was created!")
    json = json.dumps(score)
    f = open("score.json","x")
    f.write(json)
    f.close()
似乎只有当终端在其当前会话中时才会出现此错误,这意味着如果我关闭终端并运行新游戏,它将第一次按预期运行,那么AttributeError:“str”对象没有属性“dumps”将在第二次记分保存时出现。

以下是您的错误:

json=json.dumpsscore
覆盖命名空间中的json包。 在这一行之后,json不是一个包,而是一个简单的字符串

您可以通过为json变量指定另一个名称来轻松修复它,json_dump应该可以

分数={ 分数:圆形计数器, 姓名:玩家[姓名], hp左:玩家[生命值] } 如果os.path.isfile'score.json': 打印您的分数已添加 json_dump=json.dumpsscore f=openscore.json,a f、 writejson_转储 f、 接近 其他: 打印数据库不存在,因此它已创建! json_dump=json.dumpsscore f=openscore.json,x f、 writejson_转储 f、 接近 以下是您的错误:

json=json.dumpsscore
覆盖命名空间中的json包。 在这一行之后,json不是一个包,而是一个简单的字符串

您可以通过为json变量指定另一个名称来轻松修复它,json_dump应该可以

分数={ 分数:圆形计数器, 姓名:玩家[姓名], hp左:玩家[生命值] } 如果os.path.isfile'score.json': 打印您的分数已添加 json_dump=json.dumpsscore f=openscore.json,a f、 writejson_转储 f、 接近 其他: 打印数据库不存在,因此它已创建! json_dump=json.dumpsscore f=openscore.json,x f、 writejson_转储 f、 接近
我尝试了这段代码,效果很好,如果您在终端中执行此操作,请确保不要将json.dumpsscore twicerename json=json.dumpsscore用于其他字符串=json.dumpsscore。它可能会解决问题,如果没有看到更多的代码,就不能说更多。@wishmaster:代码不正常。@martineau我用自己的dict运行了代码4次,没有错误。无论如何,问题已经编辑了很多次,现在我试过代码,效果很好,如果在终端中执行此操作,请确保不要将json.dumpsscore twicerename json=json.dumpsscore用于其他字符串=json.dumpsscore。它可能会解决问题,如果不看更多的代码,就不能说更多。@wishmaster:代码不太好。@martineau我用自己的dict运行了4次代码,没有错误。无论如何,问题已经被编辑了很多次now@wishmasterOP说它只在第一次起作用,所以这可能是Valentin M说的问题。@wishmaster我假设这个代码示例位于函数或while循环中。如果不是问题,则需要更多代码来解决此问题。您将覆盖命名空间中的json包。在这一行之后,json不是一个包,而是一个简单的字符串。这正是我的问题所在。现在我解开了帽子。谢谢。@wishmaster OP说它只在第一次工作,所以这可能是Valentin M说的问题。@wishmaster我假设这个代码示例在函数或while循环中。如果不是问题,则需要更多代码来解决此问题。您将覆盖命名空间中的json包。在这一行之后,json不是一个包,而是一个简单的字符串。这正是我的问题所在。现在我解开了帽子。谢谢