Hogyan erősít 'str „objektum nincs attribútuma»olvasni«” hiba

szavazat
-1

Letesztelem funkció, ami azt kell átalakítani a JSON a sima szöveget.

Megnéztem hasonló szálak, de a legfontosabb, amit találtam, problémák tényleges működését. Én egyáltalán nem kényelmes JSON vagy Python ami azt illeti, de úgy gondolom, hogy a probléma abban rejlik, hogy hogyan használja ezt a funkciót, nem pedig a tényleges funkciója.

JSON-fájl hoztam létre, és megpróbálta konvertáló a következőképpen néz ki:

person = {}

person ['Name'] = {
    'name': 'Name',
    'adress': 'Somewhere',
    'phone_no': '0700000000',
    'email_id': None
}

Ez a funkció én tesztelés:

def json_to_plaintext(json_file, attribute):
    json_tmp = json.loads(json_file.read())
    attr = json_tmp[attribute]  # collect attribute
    txt_file = open(json_attribute.txt, w+)
    attr = str(attr)  # make string of object
    txt_file.write(attr)
    txt_file.close()

return txt_file

Ennek tesztelésére I run

plain_text.json_to_plaintext(r'C:\Desktop\Tests\test2', 'person')

„Test2” a JSON fájlban hoztam létre, és a „személy”, amit hiszek egy attribútum.

Amikor futtatni ezt a következő hibaüzenetet kapom:

json_tmp = json.loads(json_file.read())
AttributeError: 'str' object has no attribute 'read'
A kérdést 10/10/2019 00:37
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

json_fileegy fájlnév, nem egy fájlt. Be kell, hogy nyissa meg a fájlt, hogy elolvassa.

Ön is használja json.load()helyett json.loads(). Ez olvasható a fájl maga.

def json_to_plaintext(filename, attribute):
    with open(filename) as json_file:
        json_tmp = json.load(json_file)
    attr = json_tmp[attribute]  # collect attribute
    with open("json_attribute.txt", "w+") as txt_file:
        attr = str(attr)  # make string of object
        txt_file.write(attr)

Azonban a fájlt mutat nem a megfelelő JSON fájlt. A JSON fájlban kell kinéznie:

{ "person": {
    "name": "Name",
    "adress": "Somewhere",
    "phone_no": "0700000000",
    "email_id": null
    }
}

Amit megmutatta egy Python szkript, amely meghatározza a változó nevű person. Ha azt szeretnénk, hogy olvasni és végrehajtani egy másik forgatókönyvet, akkor használja import.

Válaszolt 10/10/2019 00:46
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more