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:

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
