1

Функция, которая создает словарь из json файла. При компиляции ошибка, что "локальная переменная wordict используется раньше, чем была объявлена. (UnboundLocalError: local variable 'wordict' referenced before assignment)

В чем может быть ошибка?

def main(): 
    try:
        wordict = eval(json.load())
    except:
        print "You have to enter all parameters.\nExample: python wordrepeater.py yourdictionary.json"
        raw_input("")
    mode = raw_input("Choose mode:\n\t1:Word To Translation;\n\t2:Translation To Word.\n>> ");
    if mode == "2": wordict = {wordict[k]:k for k in wordict.keys()}
    elif mode == "":
        print "Exit"
        sys.exit()
    keysToValues(wordict)
1
  • Вы уверены, что строчка: wordict = eval(json.load()) отрабатывает как надо? Там кидается исключение, поэтому wordict неинициализирован. Может быть вы хотели загружать json из файла, но забыли про это сказать вашей программе? Добавьте полученный файл в json.load() и если поймали исключение - сразу же выход с соответствующим сообщением
    – BOPOH
    28 мая 2014 в 8:54

1 ответ 1

1

eval тут не нужен. loads вообще работает немного не так. Вот пример:

x = json.loads(open('my_json_file.json').read())
print(x)
1
  • 1
    Используется не json.loads, а json.load - она в качестве первого аргумента принимает указатель на файл, поэтому читать файл не обязательно. Я на это и указал ТС - он пытается загрузить "ни откуда", отсюда исключение, отсюда необъявленная переменная
    – BOPOH
    28 мая 2014 в 12:14

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.