所以我有一個不和諧的機器人,它保存了我的世界中某些地方的坐標。但是在保存坐標時,我無法正確寫入 JSON 檔案。當我第一次保存時它寫得很好,但是當我再次運行它時它給了我錯誤。
代碼:
@client.command(aliases = ["sc"])
async def save_cords(ctx, name,*, cords):
uploader = ctx.author
data = {"Uploader":f"{uploader}","Cords":f"{cords}","Name":f"{name}"}
with open(f"test.json","a") as f:
json.dump(data, f, indent=4)
await ctx.send(f"Successfully saved cords. | Name: {name} | Cords: {cords}")
寫入一次的 JSON 檔案:
{
"Uploader": "SastaSushi#6366",
"Cords": "-88 0 -110",
"Name": "cords"
}
再次寫入時的 JSON 檔案:
{
"Uploader": "SastaSushi#6366",
"Cords": "-88 0 -110",
"Name": "cords"
}{
"Uploader": "SastaSushi#6366",
"Cords": "-70 0 900",
"Name": "village"
}
這是第二次寫入時的錯誤:

我想確保它以沒有錯誤的方式寫入,并且我可以在需要時讀取資料。
uj5u.com熱心網友回復:
所以,你寫的方式最終是錯誤的,正確的方式是:
@client.command(aliases = ["sc"])
async def save_cords(ctx, name,*, cords):
uploader = ctx.author
with open("test.json",r) as file:
data = json.load(file)
nd = {}
nd["uploader"] = uploader
nd["Cords"] = cords
nd["Name"] = name
with open(f"test.json","a") as f:
json.dump(nd, f, indent=4)
await ctx.send(f"Successfully saved cords. | Name: {name} | Cords: {cords}")
試試這個,如果它不作業回復我有錯誤
uj5u.com熱心網友回復:
因此,有人發布了此問題的答案,但已將其洗掉,并且有效!所以這是現在的代碼:
@client.command(aliases = ["sc"])
async def save_cords(ctx, name, *, cords):
uploader = ctx.author
try:
with open("Data\\file.json") as f:
data = json.load(f)
except FileNotFoundError:
data = []
if isinstance(data, dict):
data = [data]
data.append({"Uploader": f"{uploader}", "Cords": f"{cords}", "Name": f"{name}"})
with open("Data\\file.json","w") as f:
json.dump(data, f, indent=4)
await ctx.send(f"Successfully saved cords. | Name: {name} | Cords: {cords}")```
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/422877.html
標籤:
下一篇:如何制作無限類別的json串列?
