Python TypeError:应为字符串或缓冲区
我需要帮助。 具有名为arglist的数据列表,例如:Python TypeError:应为字符串或缓冲区,python,json,python-2.7,Python,Json,Python 2.7,我需要帮助。 具有名为arglist的数据列表,例如: ['dlink','des','1210','c',24]您试图加载一个文件对象,而json.loads需要一个字符串。你可以用 z = json.loads(open("test", "r").read()) 或者更好: with open("test") as f: z = json.load(f) 在第一个示例中,文件是打开的,但从未关闭(错误做法)。在第二个示例中,上下文管理器在离开上下文块后关闭文件。您试图加载的是文件
['dlink','des','1210','c',24]您试图加载一个文件对象,而json.loads需要一个字符串。你可以用
z = json.loads(open("test", "r").read())
或者更好:
with open("test") as f:
z = json.load(f)
在第一个示例中,文件是打开的,但从未关闭(错误做法)。在第二个示例中,上下文管理器在离开上下文块后关闭文件。您试图
加载的是文件对象,而不是字符串。如果您想处理文件而不是字符串,您应该只使用json.load
和json.dump
。调试的第一条规则是假设错误告诉您的是事实真相。它期待一个字符串,但你没有给它一个。因此,从为什么要传递非字符串的内容,或者为什么要使用需要字符串的函数开始调查。你说得对。太明显了。谢谢您的帮助。.read()
在这里很重要。open
内置函数返回一个文件对象,而不是字符串。为了澄清这一点,json.load(open(…).read()可以工作,json.load(open(…)也可以工作<使用s
加载
需要一个字符串,而不使用s
加载则需要一个文件.read()
将文件转换为字符串。
z = json.loads(open("test", "r").read())
with open("test") as f:
z = json.load(f)