Python - ValueError:期望值:第1行第1列(char 0)

时间:2015-03-02 22:23:52

标签: python

这会产生错误:

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

提出问题

2 个答案:

答案 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)必须有记录。这将解决错误。