Práca so súbormi

Vstupné súbory k týmto cvičeniam nájdete v tomto zipe.

Úloha 0

V súbore uloha0.txt je text, ktorý má obrátené poradie riadkov (pôvodný text je z článku o pythone na Wikipédii). Napíšte program, ktorý vytvorí nový súbor riesenie0.txt, ktorého obsah bude rovnaký ako uloha0.txt, ale poradie riadkov bude obrátené.

Ako čítať zo súboru

Aby sme nemuseli riešiť zatváranie súborov, odporúčam otvárať súbory s pomocou konštruktu with. Ak chceme zo súboru čítať, otvoríme ho pomocou open(<nazov suboru>, 'r') (argument 'r' hovorí, že chceme čítať (read)).

with open('uloha0.txt', 'r') as f:
  <prikazy pracujuce so suborom f>

<pokracovanie programu>

Čítať zo súboru sa dá niekoľkými spôsobmi:

with open('uloha0.txt', 'r') as f:
  lines = f.readlines()              # načíta celý súbor a vráti pole, v ktorom každý prvok je jeden riadok zo súboru

print(lines)

with open('uloha0.txt', 'r') as f:
  line = f.readline()                # načíta iba jeden riadok zo súboru
  print(line)

with open('uloha0.txt', 'r') as f:
  for line in f:                     # prechádza postupne všetky riadky súboru. Na rozdiel od readlines(), nemusíme mať celý súbor v pamäti naraz
    print(line)

with open('uloha0.txt', 'r') as f:
  text = f.read()                    # načíta celý súbor do jedného stringu
  print(text)

Keď otvárame súbor na zapisovanie, namiesto argumentu 'r' dáme funkcii open() hodnotu 'w' (write). Ak súbor s daným názvom neexistuje, open() nám ho vytvorí. Do súboru zapisujeme pomocou metódy .write().

with open('riesenie0.txt', 'w') as f:
  f.write('ahoj svet\n')            # zapíše do súboru

Úloha 1

Bol raz jeden súbor s textom. Tento text sme rozdelili do viacerých súborov:

  1. Najprv sme ho rozdelili na riadky.
  2. Niektoré riadky sme dali do zvlášť súborov, ostatné sme rozdelili na slová.
  3. Niektoré slová sme uložili do zvlášť súborov, ostatné sme rozdelili na písmená.
  4. Každé písmeno sme uložili do samostatného súboru.

Výsledok tohto besnenia nájdete v adresári uloha1. Zistite, ako vyzeral pôvodný súbor.

Môže sa vám zísť

V tejto úlohe sa vám zídu nasledujúce volania z balíčka os (na začiatku programu teda musíte napísať import os):

Prípadne ďalšie (nebojte sa googliť).