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.
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.
Pokud lokace souboru neexistuje, vytvoří se automaticky nový soubor.
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 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ódu | Název módu | Jak mód funguje? |
---|---|---|
w | write | Přepisuje stávájící data |
a | append | Data přidává na konec stávajícího 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 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)