Cvičenie na výnimky a súbory

Budeme pracovať so súbormi. Dávajte extra extra pozor, aby ste si niečo dôležité neprepísali!!

Pripomenutie syntaxe

Vyhodenie výnimky:

raise ExceptionType

Zachytávanie vynimok:

try:
    # prikazy, ktore mozu zlyhat
except ExceptionType:
    # prikazy, ktore sa vykonaju, ked to zlyha

Načítanie súboru:

with open('subor.pripona') as f:
    obsah = f.read()

Prepísanie súboru:

# TOTO VAM PREPISE subor 'subor.pripona', ak existuje
with open('subor.pripona', 'w') as f:
    f.write("TEXT")

link - Módy funkcie open

Na zahriatie

Skoro vírus

Vytvorte program, ktorý:

  1. načíta svoj vlastný kód
  2. na začiatok každého riadku pridá ‘#’
  3. uloží nový kód do nového súboru

Kontrola inputu

Napíšte funkciu, ktorá vezme 1 argument x a skontroluje či je x možná trojica hodnot:

(meno, vek, výška[cm])

Skontrolujte typ a hodnoty (napr. vek -3.14 nie je správny vek, podobne "Osemdesiat" nie je). Ak je input zlý vyhoďte vhodnú výnimku.

Zápis dát

Napíšte funkciu, ktorá bude očakávať rovnaký input ako funkcia z predchádzajúceho cvičenia a pridá dáta do súboru. Pokiaľ súbor neexistuje tak ho vytvorte. Pokiaľ súbor existuje tak pridajte dáta na koniec súboru.

Použite pritom predchádzajúcu funkciu pre kontrolu inputu. Pokiaľ je input zlý nevyhoďte výnimku, len jemne naznačte užívateľovi, že dáta odmietate zapísať do súboru.

parser

Napíšte parser na váš súbor, t.j. premeňte súbor naspäť na trojice dát (meno, vek, výška[cm])

UFO

V št. materiáloch na ISe nájdete súbor, v ktorom sú dokumentované pozorovania UFO:

(Data som našiel na: https://github.com/planetsig/ufo-reports)

Vašou úlohou bude vytvoriť program, ktorý nájde v súbore všetky záznamy, ktoré sa týkajú Česka a Slovenska, a zapíše ich do iného súboru.