我有一个python IRC Bot,允许用户在irc聊天中玩游戏并定义术语和昵称等。
我的问题是,每当有人定义一个术语或昵称时,它会保存,直到程序重新启动(当我更新它)时,当它加入时它会丢失所有内容并在控制台中输出错误,说明它无法加载数据。在之前使用该版本发布的人的帮助下,我设法弄清楚这是我正在加载的文本文件的json问题。
这是要加载的代码:
nicks = dict()
f = open("nicks.txt", "r") # read-only
print("[INFO]LOADING NICKS...")
time.sleep(1)
for line in f.readlines():
try:
if len(line.strip())>0:
user, nick= json.loads(line.strip())
nicks[user] = json.dumps(nick)
except:
print("[ERROR]Cant load nick: %s" % line)
f.close()
这是保存昵称的代码
elif (used_prefix and cmd == "nick"): ##making sure the prefix was used for the function
try:
if args:
nick = args
user=user.name
user ,nick = user.lower(),nick.lower()##Lowers the characters in user nickname
nicks[user] = json.dumps(nick)
file = open("nicks.txt", 'a')
file.write(""+nick+ '\n')
file.close()
room.message(user +", I'll now call you "+nick)
except:
room.message("failed -_-")
固定代码:
print("[SAVE] SAVING NICKS...")
f = open("Nicks.txt", "w")
for user in nicks:
nick = json.loads(nicks[user])
f.write(json.dumps([user, nick])+"\n")
f.close()
我只是不明白该怎么做。我是python编码的新手。
编辑:我解决了我遇到的问题。我用固定代码和破坏的代码更新了问题。希望它能帮助其他用户答案 0 :(得分:1)
您使用json加载文件但不保存文件。你也没有正确加载它(你的方式太复杂了)。
使用类似的东西进行保存:
with open('your_file.json', mode='w', encoding='utf-8') as f:
json.dump(your_data, f)
这样的东西用于加载:
with open('your_file.json', 'r', encoding='utf-8') as f:
loaded_data = json.load(f)