这会产生错误:
ValueError: Expecting value: line 1 column 1 (char 0)
这是我的代码:
...
print("Your phonebook contains the following entries:")
for name, number in phoneBook.items():
print("%s - %s" % (name, number))
while not created:
if not os.path.isfile('phonebook.json'):
with open('phonebook.json', 'wb') as f:
try:
f.write('{}')
except TypeError:
{}
created = True
print('New phonebook created!')
else:
print('Phonebook found!')
created = True
with open('phonebook.json', 'r') as f:
try:
phoneBook_Ori = json.load(f)
phoneBook_Upd = dict(phoneBook_Ori.items() + phoneBook.items())
phoneBook_Ori.write(phoneBook_Upd)
except EOFError:
{}
if EOFError:
with open('phonebook.json', 'w') as f:
json.dump(phoneBook, f)
else:
with open('phonebook.json', 'w') as f:
json.dump(phoneBook_Ori, f)
有没有人知道如何解决这个问题?
我之前也曾就此代码here
提出问题答案 0 :(得分:2)
我将你的代码复制粘贴在python 2.x解释器中。
我收到了关于phonebook.json文件的ValueError
。我创建了一个虚拟文件:
{'sean':'310'}
我的错误是: ValueError:期望属性名称:第1行第2列
这是我能够收到ValueError的唯一方法。 因此,我认为你的问题在于json在phonebook.json中的编写方式。你可以发布其内容或子集吗?
此外,使用phoneBook_Ori.write()
似乎非常值得怀疑,因为json模块没有名为write()
的方法,并且json.load()
上的返回(如果在json对象上使用)是一个字典,也不能write()
。您可能希望使用json.dump()
。
阅读更多内容: https://docs.python.org/2/library/json.html
无论如何,我希望我能提供帮助。
答案 1 :(得分:0)
在使用-fsplit-stack
json.load(var)
包含来自REST API调用的空JSON响应时,我收到此错误。
在您的情况下,JSON响应(var
)必须有记录。这将解决错误。