Expecting value: line 1 column 1 (char 0) при банальном json.load()?

вот в этом куске кода гружу json файл
def set_mat(id):  
            global users_mat
            if not str(id) in os.listdir('mat/'):
                os.mkdir(str('mat/'+str(id)))
                with open("mat/" + str(id) + "/users_mat.json", 'w+') as f:
                    json.dump({'mats':{},'send_time' : {'hour': 9, 'min': 0, 'is_on': 1}, 'last_time':{'day':time.strptime(time.asctime()).tm_yday-1}}, f)
            with open("mat/" + str(id) + "/users_mat.json", 'r') as f:
                users_mat = json.load(f)
                print (str(json.load(f)))
            return users_mat
        def mat_filter(message):  #
            def mat_write(message, word):
                set_mat(message.chat.id)
                for mat in cfg.mat_list:
                    if mat.lower() in word.lower():
                        if not str(message.from_user.id) in users_mat['mats'].keys():
                            with open("mat/" + str(message.chat.id) + "/users_mat.json", 'w+') as f:
                                users_mat['mats'][str(message.from_user.id)] = 0
                                json.dump(users_mat, f)
                with open("mat/" + str(message.chat.id) + "/users_mat.json", 'w+') as f:
                    users_mat['mats'][str(message.from_user.id)] = users_mat['mats'][str(message.from_user.id)] + 1
                    json.dump(users_mat, f)
            wordm = ''
            x = 0
            for i in message.text:
                x += 1
                if x == len(message.text):
                    mat_write(message, wordm)
                    wordm = ''
                    break
                if i == '\n':
                    continue
                if i != ' ':
                    wordm += i

                else:
                    mat_write(message, wordm)
                    wordm = ''
я вызываю функцию mat_filter , которая в свою очередь вызывает set_mat , в нутри которой я создаю джейсн файл формата {'hour': 9, 'min': 0, 'is_on': 1}, 'last_time':{'day':time.strptime(time.asctime()).tm_yday-1}} , а потом читаю его но при чтении (json.load()) вылетает ошибка :
020-11-17 16:48:36,384 (util.py:75 WorkerThread1) ERROR - TeleBot: "JSONDecodeError occurred, args=('Expecting value: line 1 column 1 (char 0)',)
Traceback (most recent call last):
File "C:\Users\abraham\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 69, in run
task(*args, **kwargs)
File "C:/Users/abraham/Desktop/...", line 186, in reaction
mat_filter(message)
File "C:/Users/abraham/Desktop/...", line 46, in mat_filter
mat_write(message, wordm)
File "C:/Users/abraham/Desktop/...", line 31, in mat_write
set_mat(message.chat.id)
File "C:/Users/abraham/Desktop/...", line 27, in set_mat
print (str(json.load(f)))
File "C:\Users\abraham\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Users\abraham\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\abraham\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\abraham\AppData\Local\Programs\Python\Python38-32\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)

и да , я уверен что условие по созданию файла проходит , так как я его специально удаляю! после ошибки - файл остается пустым ...
  • Вопрос задан
  • 749 просмотров
Решения вопроса 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
users_mat = json.load(f)
print (str(json.load(f)))


Прочитали файл до конца, распарсили, а потом пытаетесь распечатать результат парсинга конца файла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы