5. cvičení

  • Práce se soubory

Python: 1. čtení ze souboru

Na dnešním cvičení si ukážeme, jak v Pythonu číst ze souborů. Vytvoř si v IDE Thonny soubor text.txt a překopírujte do něj 5 Vámi vygenerovaných odstavců ze stránky  http://www.lorem-ipsum.cz/. Soubor uložte v adresáři, kde dále vytvoříte soubor ZPD1cv05read.py.

Generátor textu: Lorem ipsum


Vygenerovaný text


Řešení


Vysvětlení

Funkce open() vrací hodnotu, která představuje otevřený soubor. Tato hodnota má vlastní metody. V příkladu jsme si vyzkoušeli metodu read(), která najednou přečte celý obsah souboru a vrátí ho jako řetězec. Nakonec metoda close() otevřený soubor zase zavře.

Práce se soubory: Nastavení automatického zavírání souborů

Programátoři často zapomenou na korektní zavření souboru. Z těchto důvodů nám Python poskytuje příkaz with, který soubory zavírá automaticky.

Vyzkoušejte si následující kus zdrojového kódu.

Vytvoř v IDE Thonny nový soubor, ulož ho na "Plochu" pod jménem ZPD1t05with.py


Příkaz with vezme otevřený soubor, ten vrací funkce open, a přiřadí ho do proměnné soubor. Pak následuje odsazený blok kódu, kde se souborem můžeme pracovat - v tomhle případě metodou read přečíst obsah jako řetězec. Jakmile se Python dostane na konec odsazeného bloku, soubor automaticky zavře.


Procházení souboru po řádcích

Vytvoř si v IDE Thonny soubor rikanka.txt a napiš tam libovolnou říkanku, kterou znáš nebo ji nejdi na internetu.


Otevřené soubory můžeme použít s příkazem for. Sekvence kódu for i in range poskytuje za sebou jdoucí čísla. Stejné je to u řetězce for i in 'brdc' poskytuje jednotlivé znaky řetězce. U souborů mám sekvence kódu for radek in soubor poskytne do proměnné radek jednotlivé řádky čtené ze souboru.

Zajímavost

Jednotlivé řádky, které čteme končí znakem nového řádku, '\n', který známe z minulého cvičení o řetězcích. Pokud procházíme soubor v Pythonu, tak tento znak nechává na konci řetězce radek. Funkce print nám přidá další nový řádek, pokud nedostane argument end=''.

Zápis do souboru

Do souboru můžeme v Pythonu i zapisovat. Musíme soubor otevřít s pojmenovaným argumentem mode='w' (z angl. write). Dejte si pozor, pokud soubor už existuje, otevřením s mode='w' se veškerý obsah souboru smaže. Po zavření souboru bude v souboru jen to, co jsme do něj zapsali. Informace pak do souboru zapíšeme známou funkcí print, a to s pojmenovaným argumentem file.


Samostatná práce

1) Napište program, který Vám po načtení souboru vrátí počet znaků v souboru.

2) Najdi na internetu text tvé oblíbené písně , zkopíruj si ho do souboru a zjisti, kolikrát se v něm vyskytuje písmeno A.

Studijní materiály

Heineman G., Pollice G., Selkow S., Algorithms in a Nutshell , O'Reilly, USA 2008

Lutz, Mark, Learning Python , Sebastopol : O'Reilly 2009

Pilgrim, Mark, Ponořme se do Python(u) 3 , Edice CZ.NIC 2010

Beazley, David M.; Jones, Brian K., Python cookbook , Sebastopol : O'Reilly 2013

Summerfield, Mark, Python 3 : výukový kurz , Brno : Computer Press 2010

Pokud se zajímáte o Python více napište mi na email níže :)

Něco málo o mě

Jsem správcem neuroinformatické laboratoře na Západočeské univerzitě na Katedře informatiky a inženýrství. V rámci ZČU jsem pracoval na několika projektech (sémantický web v EEG / ERP portálu, OEN ontologie, vývojová koordinační porucha u dětí, kontrola pozornosti řidiče, analýza EEG u myší, asistenční systém řízený mozkovými vlnami pro osoby se sníženou pohyblivostí, BodyInNumbers).

Kontakt

Ing. Petr Brůha
Technická 8,
Plzeň, 30100, Česká republika
E: pbruha@kiv.zcu.cz
P: +420 377 63 2412
M: UN 324

Konzultační hodiny

Budova FAV, sekce NTIS, kancelář UN324

St: 13:00-13:55

Pá: 10:00-11:00