7 Failist järjendisse lugemine

Seni oleme tegutsenud kahemõõtmeliste järjenditega, mille elemendid kirjutasime programmiteksti sisse, näiteks:

tabel = [[1, 2, 4], [-1, 5, 0]]

või otse käsureal funktsioonile argumente andes, näiteks:

>>> on_bingo_tabel([[1, 30, 34, 55, 75], [10, 16, 40, 50, 67], [5, 20, 38, 48, 61], [4, 26, 43, 49, 70], [15, 17, 33, 51, 66]])

Vähegi suuremate mahtude juures on see ebamugav ja praktikas ka tihti võimatu, sest tahame sama programmi abil töödelda palju erinevaid andmeid. Failist lugemist käsitlesime varem programmeerimise õpikus. Nüüd vaatame, kuidas failist andmed mugavalt kahemõõtmelisse järjendisse saada.

Olgu näiteks õpilaste saadud (täisarvulised) punktid tühikutega eraldatult failis, igal real ühe õpilase punktid. Näiteks:

1 4 5
3 6 8
2 4 8
10 5 0

Enesekontroll (1 küsimus)

 

Kahemõõtmelisse järjendisse saab need andmed näiteks nii:

punktide_tabel = []
 
for rida in fail:  # iga rea jaoks failist
    op_punktid = []  # kogume ühe õpilase punkte
    osad = rida.split() # tühikute kohalt osadeks
    for osa in osad:  # osade kaupa
        op_punktid.append(int(osa)) # järjekordsed punktid juurde
 
    punktide_tabel.append(op_punktid) # õpilase punktide järjend juurde

Enesekontroll (1 küsimus)

Eraldusmärgid andmetes

Eelmises näites olid ühel real olevad andmed eraldatud tühikutega. Ajalooliselt on eraldajaks olnud näiteks koma. Sellest tuleb ka levinud failiformaadi lühend CSV – ingl Comma-separated values. Tegelikult ei pruugi koma alati hästi eraldajaks sobida, kuna võib andmetes tähendada midagi muud, näiteks komadega arve. Levinumad eraldajad on tabulatsioonimärk "\t" ja semikoolon. Ka meie edasistes näidetes on eraldajaks just semikoolon. CSV-failide kasutamisest räägime lisalugemise peatükis.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvaraarendus. 2. trükk on loodud Eno Tõnisson, Tauno Palts, Kaarel Tõnisson, Heidi Meier, Merilin Säde, Ago Luberg, Birgy Lorenz, Einar Kivisalu, Meelis Antoi, ja Säde Mai Krusberg poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut