IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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. Sa súbory s príponou .txt ste sa iste všetci už stretli. Text je v nich uložený jednoducho na jednotlivých riadkoch. Na oddelenie riadkov sa využíva špeciálnych znakov, 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. K zapisovanie do textových súborov nám poslúži funkcie 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" - pripisovania do súboru
Najprv vytvorme blok with a založme v ňom nový file handler pre 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 zmazanie sa do súboru zapíše). Do parametrov funkcie napíšeme cestu k nášmu súboru, mód a kódovanie. 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. Nasledovne:

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 zložke s našim 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 naozaj obsahuje náš text:

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

Po dokončení zápise 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. 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 Handler 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ísania). 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 podobné, namiesto metódy write() použijeme na file Handler readlines(), ktorá vracia všetky riadky textu zo súboru. Jednotlivé riadky vypíšeme vo for cykle. Kód k výpisu 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 článku sme opomenuli odchytávanie výnimiek a kontrolu práv. Do súborov tiež budeme chcieť väčšinou ukladať skôr objekty, než 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é 158x (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