我试图制作一个简单的Def
,以便我可以轻松地附加我的json
文件。无论我如何尝试,我都无法获得价值。
在顶部我使用
def AppendPersonal_data(X,Y):
with open( username +'.json') as f:
keymaster= X,Y
Personal_data = json.load(f)
Personal_data.update(keymaster)
with open(username + '.json', 'w') as f:
json.dump(Personal_data, f)
然后在我的按钮上按我的菜单
choice = input()
random_number = "1"
if choice == "1":
if random_number == choice:
now = str(datetime.now())
print("YOU PICKED CORRECT!! ")
else:
print("YOU PICKED WRONG!! ")
AppendPersonal_data(random_number,now)
无论我尝试什么,我总是最终得到:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
答案 0 :(得分:1)
您的代码存在多个问题 - 一个是引发错误的问题 - 您尝试使用元组(Personal_data
)更新字典(keymaster
)。您应该将字典更新为:Personal_data[X] = Y
但更重要的是,你不应该同时打开同一个文件的两个文件句柄 - 而是更新已经打开的文件:
import json
def append_personal_data(username, x, y):
with open(username + ".json", "r+") as f:
personal_data = json.load(f)
personal_data[x] = y
f.seek(0) # rewind
f.truncate() # clear the file content
json.dump(personal_data, f)
答案 1 :(得分:0)
经过几个小时的搞乱后,我已经开始工作了 在顶部
def AppendPersonal_data(X):
with open( username +'.json') as f:
Personal_data = json.load(f)
Personal_data.update(X)
with open(username + '.json', 'w') as f:
json.dump(Personal_data, f)
然后按下按钮
choice = input()
random_sound = "1"
if choice == "1":
now = str(datetime.now())
if random_sound == choice:
print("YOU PICKED CORRECT!! ")
guess1= { ''+ str(datetime.now())+'' : ''+ str(random_sound) + '_Y' }
else:
guess1= { ''+ str(datetime.now())+'' : ''+ str(random_sound) + '_X' }
print("YOU PICKED WRONG!! ")
print (guess1)
AppendPersonal_data(guess1)
我切换了datetime和random_sound值,但是将它们切换回来的效果相同。 对所有的丑陋感到抱歉。这是我使用Python的第3天。就像15h一样。 谢谢大家的提示。如果有办法优化这个,请告诉我。