Python считает, что json является локальной переменной - PullRequest
0 голосов
/ 05 июля 2018

Эта функция должна манипулировать значениями в словаре, хранящемся в файле. Я получаю

"локальная переменная 'json', указанная перед присваиванием"

в четвертой строке: "dictio = json.loads ()."

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

def updateTally(lefty):                                          #Tally records responses to each question
    global num, total, thisQ 
    rf = open("20QTally.json", "r")
    dictio = json.loads(rf.read())
    rf.close()

    dictio[str(0)] += 1
    total = dictio[str(0)]
    if lefty == 1:
        dictio[str(num)] +=1
    thisQ = dictio[str(num)]

    json = json.dumps(dictio)
    wf = open("20QTally.json", "w")
    wf.write(json)
    wf.close()

def record_score (оценка): # Открывает, читает, записывает и закрывает файл результатов, 20QScores.txt (имя файла) глобальный итог scoref = open (filename, "r") # Записывает и сообщает ответы отдельных лиц sf = json.loads (scoref.read ()) # Json помогает при записи и чтении файлов в виде строк и целых чисел. ключ = str (оценка) если ввести в sf: SF [ключ] + = 1 еще: sf [ключ] = 1 # и т. д.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Это потому, что вы скрываете модуль json, объявляющий переменную с тем же именем. Только не делайте этого, получите какое-то уникальное имя в рамках.

0 голосов
/ 05 июля 2018

вы пытаетесь присвоить значение json здесь

json = json.dumps(dictio)

изменить имя переменной

...