Dnes si ukážeme jak vytvářet soubor, načítat a vkládat do něj informace. Téměř všechny programovací jazyky umí pracovat s textovými soubory a Python samozřejmě také.
Vytváření textového souboru na disku
Soubor se v Pythonu vytváří takto:
soubor=file(nazev_souboru,'w')
je prozatím uložen jen v paměti RAM a je otevřen pro zápis - parametr w. Celkem máme 3 parametry r, w, a. Každý z nich má různé vlastnosti. Pokud použijeme parametr r (jako read v anglickém jazyce), znamená to, že chceme pracovat se souborem pouze pro čtení, dále pak w pro zápis (write - vznikne vždy nový soubor, pokud již existoval, přepíše se), a (append) použijeme v případě, když nevíme zda soubor existuje a pokud neexistuje, tak se vytvoří.
Nyní si můžeme vyzkoušet jednoduché vytvoření souboru s ukádáním textu do něj:
>>>nazev='soubor.txt'#název souboru uložíme do proměnné "nazev"
>>>soubor=file(nazev,'w')#do proměnné soubor ukládáme soubor s atributy pro zápis
>>>vstup=raw_input('Zadej text: ')
>>>soubor.write(vstup) #zapisujeme do proměnné soubor
>>>soubor.close()#zavřeme soubor
Následně si v adresáři, kde máte tento script uložen, najděte soubor s nazvem 'soubor.txt' a prohlédněte si jeho obsah. Vyzkoušejte několikrát. Ten původní obsah by se měl vždy ztratit a bude tam jen to poslední, co jste zadali....
Máme nyní metody: file(), write() a close() + nová flush().
- soubor.read() - přečtení celého souboru (samozřejmě v režimu 'r')
- soubor.write(řetězec) - zápis na disk (v režimu 'w') - pouze textové proměnné!
- soubor.flush() - vynucený zápis na disk ještě před close()
- soubor.close() - uzavření souboru
- Metoda je funkce přiřazená vždy k proměnné (objektu). Zápis je objekt tečka metoda (případné parametry).
Upozorňuji, že všechna data se fyzicky do souboru zapíšou až s metodou close(). Předtím zůstávají ve vnitřní paměti - je to z důvodu rychlosti. Chceteli donutit zápis na disk před close(), použijte flush().
Čtení souboru
Čtení souboru v Pythonu je velmi jednoduché, ukážeme si v kódu za použití cyklu for, zároveň se jej aspoň procvičíme:
>>>soubor=file('MujPrvniSoubor.txt','r')
>>>cisloRadku=0
>>>for radek in soubor:
cisloRadku=cisloRadku+1
print "Radek", cisloRadku,":", radek, #vyzkoušejte vynechat čárku za 'radek'
soubor.close()
Pokud máme *.txt soubor který vypadá takto:
...výpisem programu bude:
Radek 1 : Ahoj
Radek 2 : svete
Jak jsem již zmínil, metoda write() zapisuje pouze textové proměnné, co když ale chceme ukládat i čísla?...
Ukládání čísel
Ukládat čísla můžeme jen pouze jako text, tudíž zde bude potřeba nějakého předělání číselné proměnné na textovou.
-Toho docílíme jednoduchým přetypováním:
ciselnaPromenna=25
textPromena=str(ciselnaPromenna) # 25 je nyní ve tvaru '25'
Děkuji za pozornost ...