Úvod do Pythonu 21.11.2016 – IO operace se soubory
Práce se soubory (I/O)
Základní práce se soubory Vytvoření souboru Otevřeni souboru Čtení ze souboru Zápis do souboru (přepis) Přípis na konec souboru
Postup při práci se souborem 1. Vytvoření objektu pro práci se souborem Otevření souboru p-cí f-ce open() , která vrací objekt typu souborový_objekt (file) 2. S otevřeným souborem manipulujeme prostřednictvím objektu souborový_objekt a p-cí jeho metod provádíme nad aktuálním souborem operace: čtení přípis přepis … 3. Po ukončení práce se souborem je nutné soubor opět uzavřít! Uzavření souboru p-cí metody souborového_objektu: souborový_objekt.close()
OTEVření souboru Syntaxe: proměnná = open(“jmenoSouboru”, modOtevreni) #Vraci do proměnne objekt typu souborový_objekt Např.: file=open(“mujSoubor.txt”, r) Otevira soubor mujSoubor pouze pro cteni Dále manipulujeme se souborem přes proměnnou file Např.: file.read() Další možnosti modu otevření: r r+ w w+ a a+ ČTENÍ + ZÁPIS VYTVOŘENÍ (pokud není) PŘEPSÁNÍ (původní obsah smazán) Pozice na počátku Pozice na konci
Čtení z textového souboru file=open(“mujSoubor.txt”, r) #Dále používáme metody objektu souborový_objekt (proměnná file): file.read([počet_znaku]) Přečte celý soubor a vrátí ho jako řetězec. Při zadání počet_znaku čte a vrací jen zadaný počet znaku. file.readline() Čte a vrací jednu řádku ze souboru file. Pro opakované čtení (a tisk) všech řádků souboru: for radka in file: print radka file.readlines() Čte až do konce souboru a vrací seznam řádek.
Uzavření souboru file.close() POZOR!! Uplatní se pouze, když v průběhu čtení nedojde k žádné chybě, dojde-li po otevření p-cí open() k nějaké výjimce, metoda close() se nezavolá => Pro uzavření souboru i v případě chyb v průběhu čtení lépe: with open(„jmenoSouboru.txt“) as file: data = file.read()
Zápis a Další možnosti a metody Pro zajištění správného čtení znakové sady: proměnná = open(“jmenoSouboru”, encoding=„utf-8“) V případě neuvedení se použije výsledek z locale.getpreferredencoding() Python nepovažuje čtení za koncem souboru za chybu => NEVYVOLÁ výjimku! Vrátí prostě jen prázdný řetězec. Další metody objektu souborový_objekt: file = open(„dokumenty/mujSoubor.txt“,encoding=„utf-8“) file.write(retezec) #Zapíše řetězec do souboru file.writelines(seznam) #Zapíše seznam řetězců do souboru file.name #vrací: „dokumenty/mujSoubor.txt“ file.encoding #vrací: „utf-8“ file.mode #vrací: „r“, to je defaultní nastavení, není-li uveden mód file.seek(počet bytů) #o kolik bytů se máme v souboru posunout file.tell() #vrací pozici v souboru v bytech od počátku file.read(počet znaků) #kolik znaků má být přečteno