Zdrojové soubory, práce s textovým souborem

Zdrojové soubory

Projekt v programu Pycharm generuje složky. Soubor *.py lze nalézt ve složce s názvem projektu. Pro účely předmětu PVA používáme verzi 3.9.

Zdrojové soubory Python projektu

Připojení k textovému souboru

Výstup programu nemusí být jen do Console. K výstupu se používají textové soubory, u složitějších projektů i databáze.

Aby bylo možné zapisovat do, nebo číst z, textového souboru, je nutné soubor nejprve připojit k programu a vytvořit instanci. Tímto principem fungují všechny externality, které se k programu připojují.

Připojení textového souboru k programu je možné pomocí příkazu with.

Připojení souboru do Pythonu

Pokud lokace souboru neexistuje, vytvoří se automaticky nový soubor.


Zápis do souboru

Do připojeného souboru se zapisuje velmi jednoduše. K zápisu se používá funkce write() vázaná na instanci souboru.

Příklad:

a_file.write("Mám nový text v souboru! ")

Pokud chcete, aby se řádek po jednom vložení zalomil, vložte přímo do řetězce na konec stringu "\n".


Mód zápisu

Mód zápisu slouží k určení, zda při každém zapsání chcete přemazat stávající data, nebo chcete stávající data zachovat a zapisovat na jejich konec.

Rozlišujeme dva druhy, které se píší při připojení textového souboru do programu.

Označení móduNázev móduJak mód funguje?
wwritePřepisuje stávájící data
aappendData přidává na konec stávajícího souboru

Čtení ze souboru

Čtení ze souboru je možné dvěma variantami. Pro načtení celého souboru do jednoho řetězce (v tomto případě do proměnné retezecTextu) je možné využít funkci read() také vázanou na instanci souboru.

Pro načtení souboru je vždy nutné mít instanci souboru nastavenou na mód r (read).

Příklad instance pro čtení:

with open("test.txt", mode="r", encoding="utf-8") as a_file:


Příklad:

retezecTextu = a_file.read()


V praxi se ovšem mnohem více používá čtení souboru po řádcích pomocí cyklu.

Příklad:

for radek in a_file:

Poté lze k jednotlivým řádkům přistupovat pomocí instance cyklu radek.

Čtení po řádcích se většinou načítá do pole, to se ovšem naučíme až později.


Zdrojový kód

Zdrojový kód ke stažení - soubor.py


#Připojení k souboru - mód smazání předchozího a zápis
with open('test.txt', mode='w', encoding='utf-8') as a_file:

    #Zápis do souboru
    a_file.write("Mám nový text v souboru! ")


#Připojení k souboru - mód zápisu na konec souboru
with open("test.txt", mode="a", encoding="utf-8") as a_file:

    #Zápis do souboru
    a_file.write("Mám druhou část textu! ")
    a_file.write("A teď zapisuj ty! ")

#Připojení k souboru - mód čtení ze souboru
with open("test.txt", mode="r", encoding="utf-8") as a_file:

    #Čtení ze souboru - celý soubor najednou
    retezecTextu = a_file.read()
    print(retezecTextu)

    #Čtení ze souboru - po řádcích
    for radek in a_file:
        print(radek)