Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

3. diel - Práca s textovými súbormi v Pythone

V predchádzajúcej lekcii, Úvod do práce so súbormi v Pythone, sme si ukázali, ako fungujú prístupové práva v systémoch Windows.

Najjednoduchšou cestou, ako uložiť dáta aplikácie na pevný disk, je využiť textové súbory. So súbormi s príponou .txt ste sa určite všetci už stretli. Text je v nich uložený jednoducho na jednotlivých riadkoch. Na oddelenie riadkov sa využívajú špeciálne znaky, ktoré sú bohužiaľ špecifické pre každý operačný systém.

Zápis textu do nového súboru

Najprv si poďme vytvoriť nový textový súbor a niečo do neho zapísať. Vytvorte si nový "projekt" s názvom main.py. Na zapisovanie do textových súborov nám poslúži funkcia open(), ktorú sme si už spomenuli minule. Súbor pomocou nej môžeme otvoriť v nasledujúcich 3 módoch:

  • "w" - zápis (vytvorenie nového súboru alebo prepísanie existujúceho)
  • "r" - čítanie
  • "a" - pripisovanie do súboru

Najprv vytvorme blok with a vytvorme v ňom nový file handler na zápis pomocou funkcie open(). Ako už vieme z predchádzajúcich lekcií, with sa nám automaticky postará o zatvorenie súboru po dokončení zápisu/čítania (bez bloku with by sa o to postaral až garbage collector, ktorý zmaže file handler a až pri zmazaní sa do súboru zapíše). Do parametrov funkcie napíšeme cestu k nášmu súboru, módu a kódovaniu. Pretože chceme súbor vytvoriť, mód bude "w" (zápis):

with open("file.txt", "w", encoding="utf-8") as f:
    pass

Náš file handler je teraz nasmerovaný na správny súbor. Nový riadok zapíšeme pomocou metódy write().

Kód sa nám teda rozrástol a môže vyzerať napr. takto:

with open("file.txt", "w", encoding="utf-8") as f:
    f.write("The first line.\n")
    f.write("This text is on the second line.\n")
    f.write("And the third one.\n")

Po spustení sa vytvorí file.txt v priečinku s naším programom. Ako sa správne v Pythone vysporiadať s cestou k súboru a právami sme prebrali v lekcii Úvod do práce so súbormi v Pythone a tu to pre jednoduchosť zanedbáme. Vidíme, že súbor existuje a skutočne obsahuje náš text:

Vytvorenie nového textového súboru v Pythone - Práca so súbormi v Pythone

Po dokončení zápisu Python automaticky zavolá metódu flush(), ktorá sa stará o vyprázdnenie bufferu. S tým sa tu nebudeme zaťažovať, stačí nám vedieť, že nami zapísané riadky môžu zostať chvíľu vo vyrovnávacej pamäti. Ak by ste z nejakého dôvodu potrebovali vynútiť počas zápisu okamžité zapísanie dát do súboru, môžete flush() na file handleri zavolať aj ručne.

Pripísanie textu do existujúceho súboru

Ak súbor neexistuje, kód vyššie ho vytvorí. Ak existuje, bude prepísaný. Toto správanie môžeme zmeniť pomocou 2. parametra funkcie open(). Ak ho nastavíme na "a", vykoná sa tzv. append (pripísanie). Takto do existujúceho súboru pripíšeme nový riadok:

with open("file.txt", "a", encoding="utf-8") as f:
    f.write("An appended line.")

Čítanie existujúceho súboru

Zostáva nám už len vedieť súbor načítať. Nie je to o nič zložitejšie, než zápis. Použitie je obdobné, namiesto metódy write() použijeme na file handleri readlines(), ktorá vracia všetky riadky textu zo súboru. Jednotlivé riadky vypíšeme vo for cykle. Kód na výpis obsahu súboru do konzoly by vyzeral takto:

with open("file.txt", "r", encoding="utf-8") as f:
    for line in f.readlines():
        print(line.strip()) # Removes "\n"

Kód celého nášho programu vyzerá teraz asi takto:

# writing to the file
with open("file.txt", "w", encoding="utf-8") as f:
    f.write("The first line.\n")
    f.write("This text is on the second line.\n")
    f.write("And the third one.\n")
print("The file has been successfully written.")

# appending a text to the file
with open("file.txt", "a", encoding="utf-8") as f:
    f.write("An appended line.")
print("A new line has been successfully appended into the file.")

#  printing the contents of the file
print("Printing file contents:")

with open("file.txt", "r", encoding="utf-8") as f:
    for line in f.readlines():
        print(line.strip()) # Removes "\n"

A výsledok:

Konzolová aplikácia
The file has been successfully written.
A new line has been successfully appended into the file.
Printing file contents:
The first line.
This text is on the second line.
And the third one.
An appended line.

V lekcii sme zabudli odchytávanie výnimiek a kontrolu práv. Do súborov tiež budeme chcieť väčšinou ukladať skôr objekty ako riadky textu. To všetko si ukážeme v nasledujúcej lekcii, Uloženie objektov do CSV v Pythone.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 25x (1.7 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Úvod do práce so súbormi v Pythone
Všetky články v sekcii
Práca so súbormi v Pythone
Preskočiť článok
(neodporúčame)
Uloženie objektov do CSV v Pythone
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
76 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity