Keď počítač ukladá informácie, vždy ich ukladá ako súbory. Textové súbory sú jedným z najjednoduchších a najstarších typov súborov — obsahujú iba znaky, ktoré možno prečítať v akomkoľvek textovom editore.
Čo je textový súbor?
Textový súbor (plain text file) ukladá informácie ako postupnosť znakov zakódovaných v niektorom textovom kódovaní (napríklad ASCII alebo UTF-8). Neobsahuje žiadne formátovanie — žiadne tučné písmo, žiadne farby, žiadne obrázky.
Príklady textových súborov:
.txt— poznámky, jednoduché dokumenty.csv— tabuľkové dáta oddelené čiarkou.py— zdrojový kód Pythonu.html— kód webovej stránky.json— dáta vo formáte JSON
Zdrojový kód každého programu — v Pythone, Jave, C++ alebo JavaScripte — je v skutočnosti textový súbor. Programátor napíše text, kompilátor alebo interpret ho prečíta a vykoná inštrukcie.
Ako sa ukladá textový súbor?
Každý znak v textovom súbore je uložený ako jeho číselný kód (ASCII alebo Unicode). Napríklad súbor obsahujúci slovo „Ahoj" bude uložený takto:
'A' = 65
'h' = 104
'o' = 111
'j' = 106
To sú 4 bajty. Ak súbor obsahuje nový riadok (Enter), pridá sa špeciálny znak — v systéme Windows je to dvojica \r\n, v Linuxe a macOS iba \n.
# Vytvorenie a čítanie textového súboru v Pythone
# Zápis do súboru
with open("pozdrav.txt", "w", encoding="utf-8") as subor:
subor.write("Ahoj, svet!\n")
subor.write("Toto je textový súbor.")
# Čítanie zo súboru
with open("pozdrav.txt", "r", encoding="utf-8") as subor:
obsah = subor.read()
print(obsah)
Vždy uvádzaj kódovanie encoding="utf-8" pri otváraní súborov v Pythone. Predídeme tak problémom s diakritikou na rôznych operačných systémoch.
Textové súbory vs. binárne súbory
| Vlastnosť | Textový súbor | Binárny súbor |
|---|---|---|
| Obsah | Znaky (text) | Ľubovoľné bajty |
| Čitateľnosť | Čitateľný ľuďmi | Iba pre programy |
| Príklady | .txt, .py, .html | .jpg, .mp3, .exe |
| Editácia | Textový editor | Špeciálny program |
Formát CSV — tabuľky v textovom súbore
CSV (Comma-Separated Values — hodnoty oddelené čiarkou) je textový formát na ukladanie tabuľkových dát. Každý riadok zodpovedá jednému záznamu, stĺpce sú oddelené čiarkou.
meno,vek,trieda
Peter,14,8A
Jana,13,7B
Martin,15,9C
import csv
# Čítanie CSV súboru
with open("ziaci.csv", "r", encoding="utf-8") as subor:
citac = csv.DictReader(subor)
for riadok in citac:
print(f"{riadok['meno']} má {riadok['vek']} rokov.")
Textové súbory sú síce čitateľné, ale nemusia byť efektívne. Číslo 1 000 000 zaberá v textovom súbore 7 bajtov (7 znakov), ale v binárnom súbore stačia 4 bajty (32-bitové celé číslo). Pre veľké dátové súbory to môže byť dôležité.
Cvičné príklady
Koľko bajtov zaberá textový súbor obsahujúci slovo 'počítač' v kódovaní UTF-8? (Nápoveď: základné latinské znaky majú 1 bajt, znaky s diakritikou 2 bajty.)
Zobraziť odpoveď
Prečo sa zdrojový kód programov (napr. v Pythone) ukladá ako textový súbor a nie ako binárny?