Как мне остановить эту ошибку декодирования в Python Json - PullRequest
0 голосов
/ 11 января 2019

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

import json

def get_num():
    filename = 'numberssfresdfs.json'
    try:
        with open(filename) as num:
            number = json.load(num)
    except FileNotFoundError:
        favorite_num = input("Please enter your favorite number ")
        with open(filename, 'w') as num:
            json.dump(favorite_num, num)
            print("Your favorite number is " )
    else:
        print("I know your favorite number, its " + str(number))

get_num()

Я получаю эту ошибку

Traceback (most recent call last):
File "remember_favorite_num.py", line 16, in <module>
  get_num()
File "remember_favorite_num.py", line 7, in get_num
  number = json.load(num)
File "C:\Users\kenda\AppData\Local\Programs\Python\Python36- 
  32\lib\json\__init__.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\kenda\AppData\Local\Programs\Python\Python36- 
  32\lib\json\__init__.py", line 354, in loads
  return _default_decoder.decode(s)
File "C:\Users\kenda\AppData\Local\Programs\Python\Python36- 
  32\lib\json\decoder.py", line 339, in decode
  obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\kenda\AppData\Local\Programs\Python\Python36- 
  32\lib\json\decoder.py", line 357, in raw_decode
  raise JSONDecodeError("Expecting value", s, err.value) from None
  json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

1 Ответ

0 голосов
/ 11 января 2019

Вы никогда не получите код в своем блоке кроме, потому что numberssfresdfs.json существует.

Вы получаете сообщение об ошибке json.load, так как numberssfresdfs.json не содержит действительный json или пусто.

Вы можете использовать json linter ( один онлайн-линтер ), чтобы проверить, что ваш файл содержит действительный json.

Как только вы подтвердите, что работаете с действительным json, вы можете работать с остальной частью вашей логики.

...