在Python中保存json的问题:TypeError:';int';对象不可下标
我当前在尝试保存到.json文件并稍后重新加载时遇到问题。程序似乎保存得有点正确,但我在稍后尝试重新加载时出错。我不确定我做错了什么,并且已经尝试了大约30分钟来修复它。请注意,我是Python的新手,希望得到简化的回答 这是json文件(永远不会是相同的) 这是我稍后尝试重新加载json文件时遇到的错误:在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\
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()