在Python中保存json的问题:TypeError:';int';对象不可下标

在Python中保存json的问题:TypeError:';int';对象不可下标,python,json,Python,Json,我当前在尝试保存到.json文件并稍后重新加载时遇到问题。程序似乎保存得有点正确,但我在稍后尝试重新加载时出错。我不确定我做错了什么,并且已经尝试了大约30分钟来修复它。请注意,我是Python的新手,希望得到简化的回答 这是json文件(永远不会是相同的) 这是我稍后尝试重新加载json文件时遇到的错误: Traceback (most recent call last): File "C:\Users\oiest\Desktop\Code\Minecraft Editor\v1.0.0\

我当前在尝试保存到.json文件并稍后重新加载时遇到问题。程序似乎保存得有点正确,但我在稍后尝试重新加载时出错。我不确定我做错了什么,并且已经尝试了大约30分钟来修复它。请注意,我是Python的新手,希望得到简化的回答

这是json文件(永远不会是相同的)

这是我稍后尝试重新加载json文件时遇到的错误:

Traceback (most recent call last):
  File "C:\Users\oiest\Desktop\Code\Minecraft Editor\v1.0.0\MCEditor.py", line 91, in <module>
    MainMenu()
  File "C:\Users\oiest\Desktop\Code\Minecraft Editor\v1.0.0\MCEditor.py", line 26, in MainMenu
    EditWorld()
  File "C:\Users\oiest\Desktop\Code\Minecraft Editor\v1.0.0\MCEditor.py", line 51, in EditWorld
    EditProcess()
  File "C:\Users\oiest\Desktop\Code\Minecraft Editor\v1.0.0\MCEditor.py", line 69, in EditProcess
    print('stat.timeSinceDeath is currently ' + str(data['stat.timeSinceDeath']))
TypeError: 'int' object is not subscriptable

该错误意味着数据文件中的内容只是一个整数。怎么会这样?问题是:

jsonFile.write(json.dumps(data))
jsonFile.seek(0)  # rewind
jsonFile.write(json.dumps(data['stat.timeSinceDeath']))
jsonFile.truncate()
你写下新文件,然后倒带,只写下上面的时间间隔。这是一个整数。因此,下次运行脚本时,JSON数据只是整数,因此您会收到关于订阅整数的错误

您甚至可以从您的
print(data)
通话中非常清楚地看到这一点。(好主意,添加一个
print
来帮助调试。但实际上最好注意它!)


为了避免这种情况,请不要仅用整数覆盖数据文件。把这两条中间线去掉。并将原始JSON放回文件中。

请将原始程序缩减为可能完整的小程序,以解决问题。(10-20行通常就足够了。)将整个简短程序复制粘贴到你的问题中。有关详细信息,请参阅和ᵩ 我已经更新了代码。您的代码仍然不完整。请提供一个简短完整的程序来演示这个问题。@Robᵩ 这是演示问题的代码。。不,它依赖于外部文件,而我们没有。如何将JSON放回原始文件?关闭。在覆盖文件之前,您仍然需要倒带文件。事实上,我发现删除第三行就解决了我的问题。我仍然需要第二行,但我的程序现在似乎正在运行。
    with open(stats_path + json_file, "r+") as jsonFile:
        data = json.load(jsonFile)
        print(data)
        print('')

        print('What do you wish to edit?')
        print('stat.timeSinceDeath')
        user_input = input('Edit Stat: ')
        if user_input == 'stat.timeSinceDeath':
            print('stat.timeSinceDeath is currently ' + str(data['stat.timeSinceDeath']))
            print('')
            user_input = int(input('New Stat: '))





            data['stat.timeSinceDeath'] = user_input
            jsonFile.write(json.dumps(data))
            jsonFile.seek(0)  # rewind
            jsonFile.write(json.dumps(data['stat.timeSinceDeath']))
            jsonFile.truncate()
            print(data['stat.timeSinceDeath'])
jsonFile.write(json.dumps(data))
jsonFile.seek(0)  # rewind
jsonFile.write(json.dumps(data['stat.timeSinceDeath']))
jsonFile.truncate()