Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Listojen tallennus tiedostoon

Lipton_green [02.11.2016 15:48:52]

#

Hei. Minun olisi tarkoitus tallettaa samaan kansioon.txt useampia listoja. Kuinka saisin sen toteutettua, jotta saisin tiedot helposti myös haettua. Esim nimi, syntymäaika, yms. Kiitos.

PS. Täytyykö lista aina purkaa tiedostoon, eikö se voisi pysyä siellä muuttujana nimilista, ikälista, tms.

nimilista =   ["Aaro", "Bertta"]
ikälista =   ["22", "24"]
osoitelista =   ["kuja", "katu"]

tiedosto = open('tallennus.txt', 'w')
tiedosto.writelines(nimilista)
tiedosto.writelines(ikälista)
tiedosto.writelines(osoitelista)
tiedosto.close()

tiedosto = open("tallennus.txt", "r")
arkisto=tiedosto.readlines()
tiedosto.close()
print(arkisto)

Mod. lisäsi kooditagit!

jlaire [02.11.2016 16:13:33]

#

JSON on kätevä tallennusmuoto.

import json

def tallenna(nimet, iat, osoitteet):
    with open('tiedosto.txt', 'w') as tiedosto:
        tiedosto.write(json.dumps({
            'nimet': nimet,
            'iat': iat,
            'osoitteet': osoitteet,
        }))

def lue():
    with open('tiedosto.txt', 'r') as tiedosto:
        data = json.load(tiedosto)
        nimet = data['nimet']
        iat = data['iat']
        osoitteet = data['osoitteet']
        return nimet, iat, osoitteet


nimet = ["Aaro", "Bertta"]
iat = [22, 24]
osoitteet = ["kuja", "katu"]

tallenna(nimet, iat, osoitteet)
nimet2, iat2, osoitteet2 = lue()

print(nimet2)
print(iat2)
print(osoitteet2)

Tiedosto näyttää tältä:

{"iat": [22, 24], "nimet": ["Aaro", "Bertta"], "osoitteet": ["kuja", "katu"]}

Monesti on muuten kätevämpää käsitellä yhtä listaa usean sijaan, tähän tyyliin:

henkilot = [
    {'nimi': 'Aaro', 'ika': 22, 'osoite': 'kuja'},
    {'nimi': 'Bertta', 'ika': 24, 'osoite': 'katu'},
]

Lipton_green [02.11.2016 17:35:01]

#

Kiitos sinulle oikein paljon.

Lisäys:

Kerrotko vielä miten teet tuon yhden listan, kiitos

jlaire [02.11.2016 22:48:22]

#

import json

def tallenna(henkilot):
    with open('tiedosto.txt', 'w') as tiedosto:
        tiedosto.write(json.dumps(henkilot))

def lue():
    with open('tiedosto.txt', 'r') as tiedosto:
        return json.load(tiedosto)

henkilot = [
    {'nimi': 'Aaro', 'ika': 22, 'osoite': 'kuja'},
    {'nimi': 'Bertta', 'ika': 24, 'osoite': 'katu'},
]

tallenna(henkilot)
henkilot2 = lue()

for henkilo in henkilot2:
    print(henkilo)

Tiedoston sisältö:

[{"nimi": "Aaro", "ika": 22, "osoite": "kuja"}, {"nimi": "Bertta", "ika": 24, "osoite": "katu"}]

Koodin tulostus:

{u'nimi': u'Aaro', u'ika': 22, u'osoite': u'kuja'}
{u'nimi': u'Bertta', u'ika': 24, u'osoite': u'katu'}

Muutos Pythonin listojen ja dictionaryjen ja JSON:n vastaavien rakenteiden välillä on näin helppoa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta