Python json.load (файл) ошибка с допустимым JSON - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть вопрос, касающийся проблемы, с которой я столкнулся при использовании json lib в Python.

Я пытаюсь прочитать файл json с помощью команды json.load (file), используя следующий код:

import json

filename= '../Data/exampleFile.json'
histFile= open(filename, 'w+')
print(json.load(histFile))

Файл JSON, который я пытаюсь прочитать, действителен в соответствии с найденным мной веб-сайтом: снимок экрана этой проверки, потому что я новичок и все еще не имею репутации ...

Я получаю следующее сообщение об ошибке:

File ".\testLoad.py", line 5, in <module>
print(json.load(histFile))
File "C:\Users\...\Python\Python37\lib\json\__init__.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\...\Python\Python37\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\...\Python\Python37\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\...\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Хорошо, поэтому я считаю, что проблема не в файле, а в других случаях у меня работает json.load (файл).

К сожалению, я не смог самостоятельно разобраться в этом сообщении об ошибке, поэтому было бы удивительно, если бы кто-то с большим опытом работы с Python-JSON мог бы мне помочь.

1 Ответ

0 голосов
/ 08 сентября 2018

Вы открыли файл для записи :

histFile= open(filename, 'w+')
#                        ^^^^

Сначала w режим усекает файл, поэтому файл пуст (здесь не имеет значения, что файл также может быть прочитан, + видит это, но файл тем не менее усечено). См. open() документацию по функциям :

'w': открыть для записи, сначала обрезать файл)

В нем нет данных JSON для анализа. Вот почему исключение говорит вам, что при самом начале файла произошел сбой:

Expecting value: line 1 column 1 (char 0)

Нет данных в первой строке, первом столбце.

Если вы хотите открыть файл для чтения и записи без предварительного его усечения, используйте 'r+' в качестве режима файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...