Python:无法隐式地将'tuple'对象转换为str

时间:2016-07-03 18:13:36

标签: python json

我正在尝试使用json将代码存储在txt文件中。每次有新消息进入时,它都会将新消息添加到数组中。

结构将是

{
  "Messages": {
    "Test Contact 2": {
      "0": "\"Message 1"
    },
    "Test Contact 1": {
      "0": "\"Message 1\"",
      "1": "\"Message 2\""
    }
  }
}

这是我目前的代码

class PluginOne(IPlugin):
    def process(self):
        try:
            print("Database")
            data_store('Test contact', 'Text Message')
            pass
        except Exception as exc:
            print("Error in database: " + exc.args)


def data_store(key_id, key_info):
    try:
        with open('Plugins/Database/messages.txt', 'r+') as f:
            data = json.load(f)
            data[key_id] = key_info
            f.seek(0)
            json.dump(data, f)
            f.truncate()
        pass
    except Exception as exc:
        print("Error in data store: " + exc.args)

当我尝试运行代码时,出现以下错误

Can't convert 'tuple' object to str implicitly

我在网上看了,我还在努力,我确信这是一个简单的答案,但由于我对Python很新,我无法理解。

先谢谢

1 个答案:

答案 0 :(得分:1)

在您的异常处理程序中,您要将exc.args添加到字符串中。 args属性is a tuple,无法隐式转换为字符串。你可以......

    # print it seperately
    print("Error in data store")
    print(exc.args)

    # or alternatively
    print("Error in data store: " + str(exc.args))

    # or alternatively
    print("Error in data store: " + str(exc))

但是,这是异常处理程序中的问题,问题的根本原因是其他问题,而您当前的异常处理程序在处理它时并不是很好:

  • 没有您的异常处理程序,Python会显示异常根本原因的完整追溯,并暂停您的程序。
  • 使用您的异常处理程序,只打印消息,程序继续。这可能不是你想要的。

最好只有catch您知道可以从中恢复的特定例外。

相关问题