打开json文件时,unicode对象不可调用

时间:2013-12-03 15:17:30

标签: python json unicode

为什么这段代码:

input_file  = file( os.path.join(os.path.abspath(__file__), "res/channels.json"))                
j = json.loads(input_file.read())

生成此错误:

 input_file  = file( os.path.join(os.path.abspath(__file__), "res/channels.json"))                
TypeError: 'unicode' object is not callable

我只想一劳永逸地理解这类问题。

1 个答案:

答案 0 :(得分:0)

有三种选择可以解决您看到的错误:

  1. 您将os.path.abspath绑定到unicode值
  2. 您将os.path.join绑定到unicode值
  3. 您将file绑定到unicode值
  4. 在这三个中,最后一个是最有可能的。

    要么不在代码中的其他地方分配file,要么删除内置的file全局屏蔽:

    del file
    

    您使用recommends的Python文档open() function。我还使用json.load()(no s)直接加载文件内容,以及with语句以确保文件对象自动关闭:

    with open(os.path.join(os.path.abspath(__file__), "res/channels.json")) as input_file:
        j = json.load(input_file)