'' Str 'düzeltmek nesne yok özniteliği nasıl' hatası 'okundu'

oy
-1

Ben düz metne bir json dönüştürmek gerekiyordu bir işlev test ediyorum.

Ben de benzer konuları kontrol ettim, ama buldum en ilgili gerçek işlevinde sorunlar oldu. Ben bu konuda hiç json ile rahat veya Python değilim, ama benim tahminim sorun ben gerçek işlevi yerine işlevini kullanın nasıl yatıyor olmasıdır.

json dosyası benim yarattığım ve aşağıdaki gibi dönüştürme görünüyor denedim:

person = {}

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

Bu test ediyorum fonksiyonudur:

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

Bu gitmem sınamak için

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

Test2 benim yarattığım json dosya ve 'kişi: çünkü ben bir niteliktir inanıyoruz.

Bunu çalıştırdığınızda hata iletisi:

json_tmp = json.loads(json_file.read())
AttributeError: 'str' object has no attribute 'read'
Oluştur 10/10/2019 saat 00:37
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

json_fileBir dosya adı değil, bir dosyadır. Okumak için dosyayı açmak gerekir.

Ayrıca kullanabilirsiniz json.load()yerine json.loads(). Dosyanın kendisinden okuyacaktır.

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)

Ancak, göstermek dosya uygun bir JSON dosyası değil. JSON dosyası aşağıdaki gibi görünmelidir:

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

Ne gösterdi adında bir değişken tanımlayan bir Python komut dizisidir person. Başka bir senaryoyu okuyup yürütmek istiyorsanız, kullanabileceğiniz import.

Cevap 10/10/2019 saat 00:46
kaynak kullanıcı

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