Stundas uzdevums: Piešķirt savai programmai "bezmirstību". Apgūsi, kā izmantot Failu I/O (Input/Output), lai saglabātu informāciju (piemēram, spēles progresu vai rezultātu tabulas) cietajā diskā. Apskatīsim trīs galvenos formātus: TXT, JSON un CSV.
SR 2.4.14. (Failu lasīšana un rakstīšana)70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
Atverot failu, mums ir jāpasaka Python, ko mēs plānojam darīt. Katram režīmam ir sava loma un riski.
| Režīms | Nosaukums | Ko tas dara? | Bīstamība |
|---|---|---|---|
"r" |
Read | Atver failu tikai lasīšanai. | Izmetīs kļūdu, ja fails neeksistē. |
"w" |
Write | Izveido jaunu failu vai pārraksta esošo. | Viss iepriekšējais saturs tiks neatgriezeniski izdzēsts! |
"a" |
Append | Pieraksta jaunus datus faila beigās. | Drošs - saglabā esošo saturu. |
Šī konstrukcija nodrošina, ka fails tiek automātiski aizvērts, tiklīdz beidzas ar atkāpi rakstītais koda bloks (pat tad, ja programmā rodas kļūda). Tas novērš failu korupciju.
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 6.1 Failu I/O; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
temats = "6.1 Failu I/O"
print("Iesildīšanās:", temats)
print("Pirmais rezultāts:", 2 + 3)
main.py failā un palaid no termināļa.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.
punkti, gajiens, atbilde, rezultats vai parbauda_ievadi().Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
1.encoding="utf-8"trūkums: Neaizmirsti šo parametruopen()funkcijā, citādi latviešu burti (ā, č, ē) failā pārvērtīsies par "ķeburiem".
2. Write vs Append (w pret a): Atceries, ka"w"izdzēsīs visu Tavu faila vēsturi! Ja gribi tikai pievienot jaunu rindiņu, izmanto"a".
3. Aizmirstsimport: Tu nevari izmantotjson.dump()vaicsv.writer(), ja faila pirmajā rindā nav veikts attiecīgais imports.
import json
dati = {"vards": "Anna", "punkti": 100, "materiali": ["marķieris"]}
# Datu saglabāšana diskā
with open("save.json", "w", encoding="utf-8") as f:
# indent=4 padara failu viegli lasāmu cilvēkiem
json.dump(dati, f, indent=4)
print("Rezultāts saglabāts!")
# Datu nolasīšana (ielādēšana)
with open("save.json", "r", encoding="utf-8") as f:
ieladetie_dati = json.load(f)
print(f"Ielādēts profils: {ieladetie_dati['vards']}")