Python app无法正确加载文件中的数据

时间:2015-08-10 14:07:15

标签: python

我有一个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编码的新手。

编辑:我解决了我遇到的问题。我用固定代码和破坏的代码更新了问题。希望它能帮助其他用户

1 个答案:

答案 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)