Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

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

V minulej 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 založme 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("soubor.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("soubor.txt", "w", encoding="utf-8") as f:
    f.write("První řádek\n")
    f.write("Tento text je na druhém řádku\n")
    f.write("A do třetice.\n")

Po spustení sa vytvorí soubor.txt v priečinku s naším programom. Ako sa správne v Pythone vysporiadať s cestou k súboru a právami sme si už ukazovali 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 - 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ť, postačí nám vedieť, že nami zapísané riadky môžu zostať chvíľu vo vyrovnávacej pamäti. Pokiaľ 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 handlere 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(). Pokiaľ ho nastavíme na "a", vykoná sa tzv. append (pripísanie). Takto do existujúceho súboru pripíšeme nový riadok:

with open("soubor.txt", "a", encoding="utf-8") as f:
    f.write("Připsaný řádek")

Čí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 handlere 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("soubor.txt", "r", encoding="utf-8") as f:
    for radek in f.readlines():
        print(radek.strip()) # Odstraníme "\n"

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

# zápis do souboru
with open("soubor.txt", "w", encoding="utf-8") as f:
    f.write("První řádek\n")
    f.write("Tento text je na druhém řádku\n")
    f.write("A do třetice.\n")
print("Do souboru bylo zapsáno.")

# připsání textu do existujícího souboru
with open("soubor.txt", "a", encoding="utf-8") as f:
    f.write("Připsaný řádek")
print("Do souboru bylo připsáno.")

# výpis obsahu souboru
print("Vypisuji soubor:")

with open("soubor.txt", "r", encoding="utf-8") as f:
    for radek in f.readlines():
        print(radek.strip()) # Odstraníme "\n"

A výsledok:

Konzolová aplikácia
Do souboru bylo zapsáno.
Do souboru bylo připsáno.
Vypisuji soubor:
První řádek
Tento text je na druhém řádku
A do třetice.

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 budú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é 162x (998 B)
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:
Ešte nikto nehodnotil, buď prvý!
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity