Budou nás zajímat (zatím) textové soubory.
Textové soubory se skládají ze znaků převedených na bajty nějakým kodováním, nejčastěji:
ASCII ("anglicka abeceda" o 95 znacích)
iso-8859-2 (navíc znaky vychodoevropských jazyků)
cp1250 / windows-1250 (něco podobného specifického pro Windows)
UTF-8 (vícebajtové znaky, pokrývají většinu jazyků světa)
Soubor je členěn na řádky. Každý řádek končí speciálním znakem konce řádku. V Pythonu je to znak \n
.
(Různé operační systémy ukončují řádky různě, ale Python to překládá).
Hey Jude, don't make it bad.
Take a sad song and make it better.
Remember to let her into your heart,
Then you can start to make it better.
Hey Jude, don't be afraid.
You were made to go out and get her.
The minute you let her under your skin,
Then you begin to make it better.
And anytime you feel the pain, hey Jude, refrain,
Don't carry the world upon your shoulders.
For well you know that it's a fool who plays it cool
By making his world a little colder.
Postup práce se soubory:¶
otevřít soubor - operace se souborem - zavřít soubor
Načtení obsahu souboru:
f = open("hey_jude.txt")
obsah = f.read()
f.close()
V proměnné obsah
máme načtený obsah celého souboru, se kterým můžeme pracovat, i po zavření souboru.
print(obsah)
Hey Jude, don't make it bad. Take a sad song and make it better. Remember to let her into your heart, Then you can start to make it better. Hey Jude, don't be afraid. You were made to go out and get her. The minute you let her under your skin, Then you begin to make it better. And anytime you feel the pain, hey Jude, refrain, Don't carry the world upon your shoulders. For well you know that it's a fool who plays it cool By making his world a little colder.
f.read(n)
- přečte dalších n znakůf.read()
- přečte všechny zbývající znakyf.readline()
- přečte další řádek (včetně \n
, .strip()
) f.readlines()
- načte řádky do seznamu řádekSoubor f
si pamatuje pozici, na které se čte.
open
s parametrem "w"
otevře soubor pro zápis:
f = open("soubor.txt", "w")
f.write("obsah mého prvního souboru")
f.close()
Můžeme si vypsat, co jsme vytvořili:
f = open("soubor.txt")
obsah = f.read()
f.close()
print(obsah)
obsah mého prvního souboru
Jak zapsat do souboru nový řádek:
f.write("\n")
f.write("obsah\n")
open
- parametry¶open
otevírá soubor, dostává:
jméno souboru
mod přístupu
Mody přístupu:
r
= čtení (read)w
= zápis, založí / vyprázdní soubor (write)a
= zápis na konec (append)
rb
= binarní čtení (bajty, ne text)
encoding
=kodování (default: podle OS)Otevření souboru pro zápis v kódování utf-8
:
f = open("vystup.txt", "w", encoding="utf-8")