मेरा पहला कार्यक्रम एक गेम खेलना है और एक फाइल में जीत का उच्च स्कोर रखना है। मैं JSON का उपयोग करना चाहता हूं और मैं एक फ़ाइल बनाने में सक्षम हूं यदि यह पहले से मौजूद नहीं है, लेकिन इसमें जोड़ने में सक्षम नहीं है (और गेमिंग सत्र अभी भी वही है)।

मुझे त्रुटि मिलती है: AttributeError: 'str' object has no attribute 'dumps'

कोड है:

score = {
    "score" : round_counter,
    "name" : player["name"],
    "hp left" : player["hitpoints"]
}

if os.path.isfile('score.json'):

    print("your score has been added")
    json = json.dumps(score)
    f = open("score.json","a")
    f.write(json)
    f.close()

else :
    print ("database doesn't exist so it was created!")
    json = json.dumps(score)
    f = open("score.json","x")
    f.write(json)
    f.close()

ऐसा लगता है कि समस्या केवल तब है जब टर्मिनल अपने वर्तमान सत्र में है कि यह यह त्रुटि देता है, जिसका अर्थ है कि यदि मैं टर्मिनल को बंद करता हूं और एक नया गेम चलाता हूं तो यह पहली बार अपेक्षित व्यवहार करेगा, फिर AttributeError: 'str' object has no attribute 'dumps' प्रकट होता है दूसरे स्कोर की बचत पर।

1
S3P3HR 5 फरवरी 2020, 11:11

1 उत्तर

सबसे बढ़िया उत्तर

यहाँ आपकी त्रुटि है:

json = json.dumps(score)

आप नाम स्थान में json पैकेज को अधिलेखित कर दें। उस लाइन के बाद, json कोई पैकेज नहीं है, यह एक साधारण स्ट्रिंग है।

आप अपने json वैरिएबल को दूसरा नाम देकर आसानी से ठीक कर सकते हैं, json_dump ठीक होना चाहिए।


score = {
        "score" : round_counter,
        "name" : player["name"],
        "hp left" : player["hitpoints"]
    }

if os.path.isfile('score.json'):

    print("your score has been added")
    json_dump = json.dumps(score)
    f = open("score.json","a")
    f.write(json_dump)
    f.close()  

else :
    print ("database doesn't exist so it was created!")
    json_dump = json.dumps(score)
    f = open("score.json","x")
    f.write(json_dump)
    f.close() 
3
Valentin M. 5 फरवरी 2020, 11:20