Tavs šīs stundas izaicinājums: Piešķirt savai programmai "bezmirstību". Tu iemācīsies izmantot Failu I/O (Input/Output), lai saglabātu informāciju (piemēram, spēles progresu vai rezultātu tabulas) cietajā diskā. Mēs apskatīsim trīs galvenos formātus: TXT, JSON un CSV.
SR 2.4.14. (Failu lasīšana un rakstīšana)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.
dienasgramata.py.with open("notes.txt", "w", encoding="utf-8") as f: un ieraksti atbildi failā, izmantojot f.write(atbilde)."r" režīmā.saturs = f.read()) un izvadi to terminālī: print(f"Ieraksts: {saturs}").game_save.py un faila augšā importē json bibliotēku.speletajs ar datiem: vārds, HP, zelts.json.dump(speletajs, f, indent=4) "w" bloka, lai saglabātu to failā progress.json."r" bloku), kas nolasa šo failu, izmantojot json.load(f).csv moduli failā rezultati.py."a" režīmu, lai atvērtu failu top_rezultati.csv (ar papildus parametru newline="").writer = csv.writer(f) un writer.writerow([vards, punkti]), lai saglabātu datus."r" režīmā un aprēķini vidējo punktu skaitu.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": "Drosmīgais", "hp": 100, "inventars": ["lāpa"]}
# 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("Spēle saglabāta!")
# 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 varonis: {ieladetie_dati['vards']}")