Ошибка при загрузке файла json

При попытке загрузить существующий файл через data - json.load(filename) выдает ошибки:

Traceback (most recent call last):
  File "D:\PythonProject1\TG_channel_tabel.py", line 106, in <module>
    manager.load_from_file("data/allReport.json")
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\PythonProject1\TG_channel_tabel.py", line 90, in load_from_file
    data = json.loads(file.read())
  File "C:\Users\vanon\AppData\Local\Programs\Python\Python313\Lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "C:\Users\vanon\AppData\Local\Programs\Python\Python313\Lib\json\decoder.py", line 345, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\vanon\AppData\Local\Programs\Python\Python313\Lib\json\decoder.py", line 363, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Хотя, когда файла нет, все проходит хорошо. Формат сохранения правильный, без ошибок.
В чем может быть проблема?


Ответы (1 шт):

Автор решения: Vitalizzare

Рискну предположить, что вы пытаетесь прочесть пустой файл. Пример, как это происходит:

import json
try:
    d = json.loads('')
except Exception as e:
    print(repr(e))

# Output:
# JSONDecodeError('Expecting value: line 1 column 1 (char 0)')

Если файл не пустой, тогда до вызова метода file.read() в файле "TG_channel_tabel.py" уже было произведено чтение всего содержимого file, после чего последующие попытки чтения будут возвращать пустую строку, попытка парсить которую возвращает указанную выше ошибку.

→ Ссылка