Programování v Pythonu

Podobné dokumenty
Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

POČÍTAČE A PROGRAMOVÁNÍ

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

IB111 Úvod do programování skrze Python Přednáška 7

Programování v Pythonu

Soubory. Hung Hoang Dieu. Department of Mathematics Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 7

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Práce se soubory. Základy programování 2 Tomáš Kühr

files November 20, 2018

Úvod do programování 8. hodina

Programování v Pythonu

Programování v Pythonu

Výjimky. Práce se soubory.

Soubory. Úvod. Adresáře a cesty. Adresáře. Aktuální pracovní adresář. Petr Pošík. Katedra kybernetiky, FEL ČVUT v Praze

VISUAL BASIC. Práce se soubory

IB111 Základy programování Radek Pelánek

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Typové a netypové soubory

Programování v Pythonu

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 19.2.

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Vstup a výstup datové proudy v C

Ošetřování chyb v programech

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Algoritmy a datové struktury

Konečný automat. Jan Kybic.

vstup a výstupv jazyce C

vstup a výstupy jazyce C

Chyby a výjimky. Chyba. Odkud se chyby berou? Kdo chyby opravuje? Co můžete dělat jako programátor? Dvě hlavní metody práce s chybami.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základy PERLu snadno a rychle

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Dělba rolí. Tvorba el. dokumentace (BI-TED) Publikační proces. Motivace. 2. Oddělení formy a obsahu. Autor

Metodický list k didaktickému materiálu

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

NPRG030 Programování I, 2016/17 1 / :58:13

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Regulární výrazy. Filtry grep, sed a awk.

Programování v jazyce JavaScript

Programování v Pythonu

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Scrapping stránek prakticky: Dívka dne na TN.cz

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu.

NPRG030 Programování I, 2010/11

Z. Kotala, P. Toman: Java ( Obsah )

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Struktura a architektura počítačů (BI-SAP) 10

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

ZyXEL modem. Návod na jednoduchou a rychlou instalaci modemu ZyXEL VMG8924-B30A. Ready? Budoucnost je úžasná.

Psaní jednoduchých programů (2. přednáška) F F U K. Jonathan L. Verner. Department of Logic

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Základy programování (IZP)

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

Python profesionálně: dynamické parametry, generátory, lambda funkce... with. Dynamické parametry

VY_32_INOVACE_CTE_2.MA_19_Registry posuvné a kruhové. Střední odborná škola a Střední odborné učiliště, Dubno Ing. Miroslav Krýdl

Programování v Pythonu

ČVUT FIT: BI-SKJ: Perl

Poslední aktualizace: 14. října 2011

Uživatelský manuál. KNXgw232

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Konvertor diakritiky 3. Instalace

[1] samoopravné kódy: terminologie, princip

--Různé-- Ovladače souborů Formáty Typeglob - záznamy z tabulky symbolů - různé typy objektů se stejným jménem: jmeno %jmeno,&jmeno...

PHP a Large Objecty v PostgreSQL

Basic256 - úvod do programování Příklady. ing. petr polách

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Algoritmizace a programování

ADT/ADS = abstraktní datové typy / struktury

Kurz LSL skriptování. Shiny Iceberg 2009

TFTP Trivial File Transfer Protocol

DUM 20 téma: Test dávky

6. PRÁCE S DATOVÝMI PROUDY

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Práce se soubory v Javě

Jazyk C# - přístup k datům

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup

Základní popis Toolboxu MPSV nástroje

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Algoritmizace a programování

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

C2110 Operační systém UNIX a základy programování

Transkript:

ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního m sta Prahy. Praha & EU: Investujeme do va²í budoucnosti

Python (211-3-3) : Práce se soubory I 1 of 8 Python Práce se soubory I Úvod Se soubory v Python'u se na první pohled pracuje velmi podobně, jako kdekoliv jinde soubor z daného umístění otevřeme, pracujeme s jeho obsahem a na konci ho zase spořádaně uzavřeme: f = open('cesta/k/souboru', mode='r', encoding='utf-8')... f.close() Protože cestou se může stát mnoho nepředvídaného, je dobré se pojistit a soubor pro případ takových nenadálých událostí stejně pěkně zavřít. Po staru to člověk dělal soustavou bloků try-finally, ale v Python'u 3 je mnohem lepší použít příkaz with pro vytvoření příslušného operačního kontextu (runtime context): with open('cesta/k/souboru', encoding='utf-8') as f: BLOK Uvnitř bloku máme pod identifikátorem f k dispozici otevřený stream (aneb proud dat ) a můžeme s ním úplně normálně pracovat. Jakmile kód v bloku proběhne, ať už úspěšně nebo neúspěšně, tak je stream automaticky uzavřen (a nemusíme se o to tudíž starat sami). Vlastnosti streamu Otevřený soubor (tedy stream, resp. proud dat ) má mnoho zajímavých vlastností:

Python (211-3-3) : Práce se soubory I 2 of 8 >>> f = open('cestina.txt', encoding='utf-8') >>> f <_io.textiowrapper name='cestina.txt' encoding='utf-8'> >>> dir(f) ['_CHUNK_SIZE', ' class ', ' delattr ', ' doc ', ' enter ' Na mnohé o souboru se můžeme ptát: >>> f.name 'cestina.txt' >>> f.encoding 'utf-8' >>> f.mode 'r' >>> f.readable() # Je stream možno číst? True >>> f.writable() # Je do souboru možno zapisovat? False >>> f.seekable() # Podporuje stream náhodný přístup? aka Je možn True Všimněte si, že (dosud) otevřený soubor se patřičně hlásí jako nezavřený a naopak: >>> f.closed False >>> f.close() >>> f.closed True Módy otevření souboru Textový soubor (volitelně identifikovaný příznakem 't') můžeme otevřít v několika módech: r soubor je otevřen pouze pro čtení w soubor je otevřen pro zápis (již existující neprázdný soubor bude smazán) a soubor je otevřen pro přidávání (zapsaná data budou přidána na konec) r+ soubor je otevřen pro čtení i zápis

Python (211-3-3) : Práce se soubory I 3 of 8 w+ soubor je otevřen pro čtení i zápis (již existující neprázdný soubor bude smazán) Pro případ binárního souboru kombinujeme výše uvedené módy s příznakem 'b' (tedy např. br otevře binární soubor pro čtení). Rozdíly z toho plynoucí jsou dva, a to zcela zásadní: 1. 2. Binární soubory jsou čteny (a zapisovány) po bajtech, textové jsou zpracovávány po znacích (přičemž jeden znak zabírá podle použitého kódování místo jednoho či několika bajtů). V textových souborech je automaticky prováděna konverze konců řádků různých platforem (\n na Unixu, \r\n na Windows, \r na Mac OS) na jednotné pracovní \n (konverze je samozřejmě obousměrná). Čtení ze streamu Z otevřeného streamu (proudu) je možno číst data několika různými způsoby. Základní představuje metoda read(): načtení celého streamu najednou: content = stream.read() načtení daného počtu znaků (pro případ textového souboru) nebo bajtů (pro případ binárního souboru): part = stream.read(znaků BAJTŮ) Vstup cestina.txt : Příliš žluťoučký kůň úpěl ďábelské ódy. Program cestina.py : with open('cestina.txt', encodin print( f.read(13) ) print( f.read(13) ) print( f.read(13) ) Výstup: Příliš žluťou čký kůň úpěl ďábelské ódy.

Python (211-3-3) : Práce se soubory I 4 of 8 Můžeme se ale vyřádit ještě víc, protože mimo jiné lze načítat soubory klasicky pythonovsky po řádcích: soubor = open('soubor.txt', encoding='utf-8') for řádka in soubor: BLOK for (číslo, řádka) in enumerate(soubor): BLOK...nebo po blocích řádek: # otevřeme soubor v textovém módu a kódování UTF-8 pro čtení >>> f = open('cestina.2.txt', encoding='utf-8') >>> f.readlines() # načteme z něj všechny řádky ['Třistatřiatřicet stříbrných stříkaček\n', '\n', 'přes tř >>> f.readlines() # jsme na konci, už není co dál číst [] >>> f.seek() # vraťme se na začátek >>> for line in f.readlines(): # proiterujme přes seznam vrácený... print(line)... Třistatřiatřicet stříbrných stříkaček přes třistatřiatřicet stříbrných střech. >>> f.seek() # vraťme se na začátek # načtěmež soubor řádku po řádce >>> line = f.readline() >>> while line: # vrácený prázdný řetězec na konci zajistí ukonč... print(line)... line = f.readline()... Třistatřiatřicet stříbrných stříkaček přes třistatřiatřicet stříbrných střech. >>> f.close() # zavřemež pracovní soubor >>> f.closed True

Python (211-3-3) : Práce se soubory I 5 of 8 Vstup cestina.2.txt : Třistatřiatřicet stříbrných stříkaček přes třistatřiatřicet stříbrných střech. Program cestina.2.py : Výstup: with open('cestina.2.txt', encod for (index, řádka) in enumer print( index, ': ', řádk : Třistatřiatřicet stříbrných 1 : 2 : přes třistatřiatřicet stříb Znaky vs bajty Základní třídou pro vstup a výstup je třída IOBase. Z ní dědí jak třída TextIOBase pro práci s textovými soubory, tak třída RawIOBase pro práci se soubory binárními. Pamatovat na rozdíl mezi bajty a znaky je skutečně důležité:

Python (211-3-3) : Práce se soubory I 6 of 8 # otevřme textový soubor v kódování UTF-8 >>> f = open('japonstina.txt', encoding='utf-8') >>> f.tell() # s čertvě otevřeným souborem stojíme na začátku pr >>> f.read() # načtěmež celý proud ' 狼.cz' >>> f.tell() # jsme na jeho konci v bajtech je delší, než ve z 6 >>> f.seek() # vraťme se na začátek >>> f.tell() >>> f.read(1) # přečtěmež jeden znak.. ' 狼 ' >>> f.tell() #..ale posunuli jsme se o tři bajty dále! 3 >>> f.read(1) # '.' je ve spodní polovině ASCII-tabulky, takže n '.' >>> f.tell() #..nás posune pouze o jeden bajt dále 4 >>> f.close() Asi už tušíte, do jakých nesnází se dostanete, pokud se pokusíte na textovém proudu posouvat začátky čtení dalšího znaku do nesmyslných míst: >>> f = open('japonstina.txt', encoding='utf-8') >>> f.tell() >>> f.seek(1) # posuňme se o jeden bajt po streamu dopředu.. 1 >>> f.tell() 1 >>> f.read(1) #..a pokusme se nyní načíst jeden znak Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.1/codecs.py", line 3, in decode (result, consumed) = self._buffer_decode(data, self.errors, fi UnicodeDecodeError: 'utf8' codec can't decode byte x8b in positio Kdybyste si neměli pamatovat nic jiného: Nikdy nemíchejte binární a textové streamy dohromady! ^_^ Zápis do streamu

Python (211-3-3) : Práce se soubory I 7 of 8 Podobně jako u čtení ze streamu máme pro zápis k dispozici základní metodu write(): zapsání daných znaků (pro případ textového souboru) nebo bajtů (pro případ binárního souboru): stream.write(řetězec BAJTY) # otevřme soubor v textovém módu a kódování UTF-8 pro zápis (vlast >>> f = open('test', 'w', encoding='utf-8') >>> f.write('ahoj, světe!') # metoda write() vrací počet zapsaný 12 >>> f.write('jak se máš?') 11 >>> f.close() # podívejme se, co jsme zapsali >>> f = open('test', 'r', encoding='utf-8') >>> f.read() 'Ahoj, světe!jak se máš?' >>> f.close() A podobně jako u čtení můžeme použít i několik dalších způsobů: Vstup cestina.2.txt : Třistatřiatřicet stříbrných stříkaček přes třistatřiatřicet stříbrných střech. Program writelines.py : Výstup: lines = [] with open('cestina.2.txt', mode= lines = f.readlines() with open('cestina.3.out', mode= f.writelines( lines ) with open('cestina.3.out', mode= print( f.readlines() ) Třistatřiatřicet stříbrných stří přes třistatřiatřicet stříbrných Další možností na zápis dat do souboru je použití parametru file u funkce print(): Program print2file.py :

Python (211-3-3) : Práce se soubory I 8 of 8 with open('print2file.out', mode print( 'Ahoj, světe!', file= print( 'Jak se máš?', file=f Výstup: Ahoj, světe! Jak se máš?