Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe,...

115
Przetwarzanie i wizualizacja danych - lab Przetwarzanie i wizualizacja danych Zaj ˛ ecia wst ˛ epne Pawel K˛ edzierski Pawel K˛ edzierski Przetwarzanie i wizualizacja danych

Transcript of Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe,...

Page 1: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Przetwarzanie i wizualizacja danych

Zajecia wstepne

Paweł Kedzierski

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 2: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Tematy

1 Podstawy Pythona (wersja 3)

podstawowe typy danych

instrukcje sterujace (if, for, while)

zródła danych i wyprowadzanie wyników, czyli “wejscie” i

“wyjscie”: funkcja input(), operacje na plikach, argumenty linii

komend.

formatowanie wyników: tabele, arkusze CSV

2 Przetwarzanie danych

wczytywanie danych z plików tekstowych

parsowanie tekstu (wyszukiwanie danych wg wzorca)

macierze Numerical Pythona (= numpy)

obliczenia z wykorzystaniem modułu numpy

3 Wizualizacja wyników za pomoca bibliotek Pythona

moduł matplotlib

moduł PIL (opcjonalnie)

moduł VTK (raczej na 5,5)

4 Obróbka grafiki w programach GIMP i Inkscape (?)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 3: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Zasady zaliczenia

Zaliczenie na podstawie indywidualnych zadan

System punktowy

Liczba punktów za zadanie rózna, zalezna od wkładu pracy i

skomplikowania zadania

Ocena celujaca (5,5) za punkty na 5,0 plus umiejetnosci nie

przerabiane na zajeciach

Uzyskane punkty Ocena koncowa

15-17,99 3,0

18-20,99 3,5

21-23,99 4,0

24-26,99 4,5

27-30 5,0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 4: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Zasady zaliczenia - detale

Podział punktów:

Podstawy Pythona 10 punktów

w tym „kartkówki” 3 punkty

Przetwarzanie danych i obliczenia 10 punktów

w tym „kartkówki” 3 punkty

Wizualizacja danych w Pythonie (wykresy, obrazy) 10 punktów

w tym „kartkówki” 3 punkty

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 5: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Zasady zaliczenia - detale

„Kartkówki” beda na zajeciach (niekoniecznie na kartkach).

Pozostałe punkty (21) beda rozłozone na indywidualne zadania,

do wykonania (lub dokonczenia, w miare czasu) w domu.

Ocena programów: dopóki program nie działa (od razu po

uruchomieniu jest bład albo nic nie robi) - jest warty 0 punktów.

Zadanie oddane po terminie jest oceniane na 0 punktów.

Aktywnosc na zajeciach (plusy) - umozliwiaja podniesienie oceny

koncowej o 0,5.

Poprawy: dodatkowe (inne) zadanie na koniec semestru

(uproszczone, tylko z 2,0 na 3,0)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 6: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Zasady zaliczenia - detale

Na ocene celujaca 5,5 (czyli przykłady tego co wykracza za program

kursu):

Graficzny interfejs uzytkownika (GUI, np. w Tkinter, wxPython,

pyQt etc.);

Programy odporne na błedy, czyli z dobra obsługa wyjatków;

Pełne wykorzystanie programowania obiektowego, czyli

tworzenie własnych klas, implementacja operatorów itp.

Inne (nietrywialne) rozszerzenia wymagajace samodzielnej nauki

(np. matplotlib i VTK to tematy-morza :).

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 7: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Plan na dzis

1 Czym jest program (z punktu widzenia systemu operacyjnego)

2 Gdzie system szuka programów

3 Uruchamianie własnych programów

4 Pierwszy program w Pythonie

Linux Windows

1© Prawo dostepu do wykonywania (x) Rozszerzenie (ukryte!) = typ

-rwxr-x--- .exe – programy binarne

chmod +x program .bat .py – skrypty

ls -l dir

2© Zmienna srodowiska PATH

echo $PATH echo %PATH%

Tylko katalogi z PATH (!) najpierw roboczy, potem PATH

3© ./program.py program.py

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 8: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Plan na dzis

Pierwszy program w Pythonie

Jak poinformowac system, ze to Python?

Linux Windows

4© Pierwsza linia:

#!/usr/bin/env python3

Rozszerzenie .py oznacza

„uruchom w terminalu (cmd) za

pomoca Pythona”.

Rozszerzenie .pyw oznacza

„uruchom za pomoca Pythona,

bez terminala” (program musi

miec GUI).

Kilka wersji Pythona wymaga

instalacji Python Launcher i

wtedy honorowana jest wer-

sja podana w pierwszej linii

skryptu.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 9: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Linia komend w Windows

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 10: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Linia komend w Windows

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 11: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Przetwarzanie i wizualizacja danych

Typy danych

Paweł Kedzierski

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 12: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Stałe, zmienne i wyrazenia

stała wartosc wpisana w program, jak liczby 1, 3.14 albo

napisy "Ala ma Asa". Jej zmiana wymaga

poprawienia programu.

zmienna nazwa, pod która pamietamy jakas wartosc. W tej

samej zmiennej program moze przechowywac rózne

wartosci danych, które przetwarza.

wyrazenie zapis, którego wartosc (wynik) komputer musi obliczyc

przed uzyciem. Moze to byc wzór arytmetyczny (np.

x+1), wywołanie funkcji która daje jakis wynik (np.

sin(x)) i ich kombinacje.

Wszedzie tam, gdzie mozna uzyc jakiejs wartosci (stałej),

mozna równiez uzyc zmiennej lub wyrazenia.

Formalnie rzecz biorac, stałe i zmienne to równiez wyrazenia.

Zapis wyrazen wymaga zwykle operatorów.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 13: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Operatory

Najwazniejsze operatory:

= przypisanie zmiennej (po lewej) jakiejs wartosci (z prawej)

+ dodawanie (liczb, sekwencji, . . . )

- odejmowanie (dwuargumentowy), zmiana znaku (jednoargumentowy)

* mnozenie (liczb, sekwencji przez liczbe całkowita)

** podniesienie do potegi (np. x**0.5 top

x)

/ dzielenie rzeczywiste (Python 3)

// dzielenie całkowite (bez reszty)

% reszta z dzielenia całkowitego, formatowanie napisów

+= zwiekszenie zmiennej (po lewej) o wartosc po prawej

-= zmniejszenie zmiennej (po lewej) o wartosc po prawej

() pierwszenstwo obliczen, wywołanie funkcji

Jeszcze operatory logiczne - o tym za chwile. . .

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 14: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: liczby

Podstawowe dane liczbowe zapisujemy raczej intuicyjnie, ale z

uzyciem kropki dziesietnej (nie przecinka). Jednak warto znac

wszystkie mozliwe typy i notacje:

int Liczby całkowite:

Notacja dziesietna: 1 12 123

Notacja ósemkowa (octal): 0o1 0o14 0o173

(na poczatku zero, za nim litera „o”)

Notacja szesnastkowa (hex): 0x1 0xC 0x7B

float Liczby rzeczywiste (zmiennoprzecinkowe):

Notacja dziesietna: 1.0 .5 1300

Notacja naukowa (wykładnicza): 1e0 5E-1 1.3e3

complex Liczby zespolone

Jako suma, z czescia urojona oznaczona

dopiskiem j: 2j 1e10+.5j 1-3E-4J

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 15: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: Typ logiczny i warunki logiczne

Typ logiczny (nazwa Pythona: bool) ma tylko dwie wartosci: True

(prawda) i False (nieprawda).

Zamiast wartosci True mozna uzyc dowolnej wartosci niezerowej i

niepustej (w tym sekwencji), a zamiast False mozna uzyc liczby zero,

danej pustej – np. sekwencji bez elementów, oraz wartosci specjalnej

None.

Wynik typu bool daja m.in. operatory porównania:

== sprawdzenie równosci (nie mylic z operatorem przypisania!)

!= sprawdzenie nierównosci

< czy lewa strona jest mniejsza niz prawa

> czy lewa strona jest wieksza niz prawa

<= mniejsze lub równe

>= wieksze lub równe

or czy którakolwiek strona jest prawdziwa (spełniona)

and czy obie strony sa prawdziwe (spełnione)

not zaprzeczenie warunku po prawej (jednoargumentowy)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 16: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: napisy

W Pythonie 2 typ str jest uzywany zarówno do danych tekstowych,

jak i binarnych (ciagów bajtów).

W Pythonie 3, dane typu str zawsze sa znakami Unikodu i słuza do

komunikacji z człowiekiem. Do operacji na ciagach bajtów słuzy typ

bytes.

str Od „string of characters”. W Pythonie 2 to ciag bajtów,

w Pythonie 3 ciag znaków Unicode. Zapis:

W apostrofach lub cudzysłowach: ’Ala’ "Ola"

j.w. ale w potrójnych: ’’’Moga zawierac ’to’

i "to"

i wiele linii’’’bytes sekwencja bajtów (widoczna jako znaki ASCII),

oznaczona przedrostkiem „b”: b’Ala’ b"Ola"

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 17: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: napisy

Cechy napisów:

Znaki specjalne wewnatrz napisów mozemy podawac po

odwrotnym ukosniku, np.

\n koniec linii

\t tabulacja

\\ znak (jednego) odwrotnego ukosnika

\xFF znak o kodzie szesnastkowym FF: ÿ

\u20AC znak o kodzie Unicode-16 20AC: C

\N{EURO SIGN} znak o nazwie Unicode „EURO SIGN”: C

Przedrostek r (od „raw”) wyłacza specjalna funkcje znaku \

Kilka napisów podanych po odstepach jest łaczonych w jeden:

>>> napis = "Ala" ’ ’ "ma" ’kota’

>>> print(napis)

Ala makota

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 18: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: sekwencje

Cechy wspólne sekwencji:

Sekwencje to „pojemniki” na wiele elementów (danych).

Elementy zachowuja kolejnosc i sa ponumerowane

(indeksowane) od zera

Mozna wybrac z sekwencji element o podanym numerze

(indeksie)

Indeksy podajemy po sekwencji, w nawiasach kwadratowych:

sekwencja[2] → element o numerze 2

Indeksy ujemne sa liczone od konca sekwencji:

sekwencja[-1] → ostatni element

sekwencja[-2] → przedostatni element etc.

Liczbe elementów kazdej sekwencji (jej długosc) liczy funkcja

len(sekwencja)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 19: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: sekwencje

Cechy wspólne sekwencji c.d.:

Mozemy wybierac fragmenty po kilka elementów (ang. slices).

W tym celu, podajemy zakres indeksów:

sekwencja[od:do] → sekwencja od elementu numer od

(włacznie) do elementu numer do (wyłacznie)

sekwencja[od:do:co ile] → elementy od od (włacznie)

do do (wyłacznie), z odstepem co ile.

Indeksy domyslne (np. [::]) – od poczatku, do konca, co 1.

Zakres sekwencji jest tego samego typu co sekwencja, z której

wybieramy.

Za duze/za małe indeksy w zakresach nie powoduja błedu – tylko

wynik jest pusty.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 20: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: sekwencje

Zakresy sekwencji (na przykładzie napisów):

>>> ’abcde’[1:4]

’bcd’

>>> ’abcde’[1:-1]

’bcd’

>>> ’abcde’[:]

’abcde’

>>> ’abcde’[::2]

’ace’

>>> ’abcde’[::-1]

’edcba’

>>> ’abcde’[100:120]

’’

1 2 3 4 50

len(s)

' 's= a b c d e

1:4[ ]

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 21: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Inne sekwencje

Elementami napisów moga byc jedynie znaki tekstowe. Inne

sekwencje moga przechowywac dowolne elementy:

tuple W jezyku polskim uzywane sa nazwy tupla (kalka z

ang.) i krotka, choc najlepsze tłumaczenie to chyba ciag.

Zapisujemy ja jako elementy po przecinkach, w

nawiasach okragłych (nawiasy czasem mozna

pominac):

() pusta tupla

(3,) tupla z jednym elementem (przecinek!)

(’a’, .5, ()) tupla z 3 elementami róznych typów

list Lista. Zapisujemy w nawiasach kwadratowych:

[] pusta lista

[3] lista z jednym elementem

[’a’, .5, ()] lista z 3 elementami róznych typów

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 22: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: operacje na sekwencjach

>>> N = ’Ala’

>>> T = (1, ’a’, [])

>>> L = [3, 2, 1]

Wszystkie sekwencje mozna mnozyc przez liczby całkowite:

N * 4 → ’AlaAlaAlaAla’

2 * T → (1, ’a’, [], 1, ’a’, [])

L * 3 → [3, 2, 1, 3, 2, 1, 3, 2, 1]

L * -1 → []

B ’cos’ * 1.5 → TypeError: M

Sekwencje tego samego typu mozna dodawac:

N + " M." → ’Ala M.’

T + T → (1, ’a’, [], 1, ’a’, [])

B T + L → TypeError: M

Operator in sprawdza, czy wartosc jest elementem sekwencji:

2 in L → True

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 23: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: róznice miedzy sekwencjami

>>> N = ’Ala’

>>> T = (1, ’a’, [])

>>> L = [3, 2, 1]

Elementy list mozna dowolnie zmieniac (ang. Mutable type):

L[0] = N → [’Ala’, 2, 1]

del L[2] → [’Ala’, 2]

Tupli i napisów nie mozna modyfikowac (ang. Immutable type):

B N[0] = ’B’ → TypeError: M

B T[0] = 2 → TypeError: M

B del T[0] → TypeError: M

Operator in działa dla wszystkich sekwencji, ale tylko dla

napisów pozwala na sprawdzenie obecnosci ciagu znaków:

[3,2] in L → False

’la’ in N → True

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 24: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: metody

Funkcje „wbudowane” w okreslony typ danych nazywamy metodami.

Wywołujemy je uzywajac składni obiekt.funkcja() w

przeciwienstwie do zwykłych funkcji, które wywołujemy funkcja().

Metody maja bezposredni dostep do danych obiektu, do którego

naleza (np. do elementów listy).

Zawsze mozna sprawdzic, jakie wbudowane funkcje (metody) ma

obiekt, i do czego słuza:

>>> dir([])

[... ’append’, ’clear’, ’copy’, ’count’, ’extend’,

’index’, ’insert’, ’pop’, ’remove’, ’reverse’, ’sort’]

>>> help([].clear)

Help on built-in function clear:

clear(...) method of builtins.list instance

L.clear() -> None - remove all items from L

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 25: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: metody list

Tylko metody list copy(), count(), index() i pop() daja w wyniku

jakas wartosc. Pozostałe zmieniaja bezposrednio zawartosc listy, dla

której zostały uzyte.

L.append(e) → Dopisuje element e na koniec listy L

L.clear() → Usuwa wszystkie elementy z L

L.copy() → Wynikiem tej funkcji jest kopia listy L

L.count(e) → Wynikiem tej funkcji jest ile „sztuk” elementu e jest

na liscie L

L.extend(S) → Przepisuje elementy z innej sekwencji S na koniec

L

L.index(e) → Wynikiem jest indeks elementu e na liscie L. Jesli

L nie zawiera e, efektem bedzie bład ValueError

L.insert(i,e) → Wstawia wartosc e na liste L pod indeks i. Istnie-

jace za i elementy sa przesuniete.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 26: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: metody list

L.pop() → Wynikiem tej metody jest ostatni element listy L,

który jednoczesnie jest usuniety z L. Jesli L jest

pusta, efektem jest bład IndexError.

L.pop(i) → Wybiera i kasuje z L element o podanym indek-

sie i.

L.remove(e) → Usuwa z listy L pierwsze wystapienie elementu e.

Bład ValueError, jezeli w L nie ma e.

L.reverse() → Odwraca kolejnosc elementów (od ostatniego do

pierwszego) na liscie L. W przeciwienstwie do za-

kresu L[::-1], nie tworzy kopii.

L.sort() → Sortuje (porzadkuje w kolejnosci rosnacej) ele-

menty na liscie L. Kolejnosc malejaca uzyskamy

instrukcja: L.sort(reverse=True)

Wprawdzie tylko listy maja metode sort(), ale jest równiez funkcja

standardowa sorted(S) która działa na dowolnej sekwencji S (i nie

tylko), i której wynikiem jest juz posortowana lista.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 27: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: metody napisów

Napisy sa w Pythonie stałe (niemutowalne), lecz przetwarzanie danych

tekstowych umozliwia bogactwo metod wbudowanych w typ napisowy:

capitalize center count encode

endswith expandtabs find index

isalnum isalpha isdecimal isdigit

isidentifier islower isnumeric isprintable

isspace istitle isupper join

ljust lower lstrip replace

rfind rindex rjust rstrip

split splitlines startswith strip

swapcase title upper ...

Prosze sie zapoznac równiez z tymi nie testowanymi na zajeciach.

Przeczytac help("".metoda) i potestowac samodzielnie!

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 28: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: metody napisów

W przeciwienstwie do list, metody operujace na napisach zawsze daja

jakis wynik. Nie moga zmieniac znaków napisu, dla którego sa

uruchamiane (bo jest immutable), wiec produkuja nowe, zmienione

napisy. Dlatego wynik trzeba zapamietac w zmiennej.

S = ’aaa bbb CCC’

S.capitalize() → ’Aaa bbb ccc’

S.isalpha() → True

S.center(15) → ’ aaa bbb CCC ’

S.split() → [’aaa’, ’bbb’, ’CCC’]

S.join([’-’,’+’]) → ’-aaa bbb CCC+’

S.replace(’aa’,’X’) → ’Xa bbb CCC’

’ abc\n’.strip() → ’abc’

W jednej instrukcji mozna uzyc kilku metod po sobie, o ile wynikiem

poprzednich jest napis. Na przykład:

napis = napis.strip().capitalize().center(60)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 29: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Porównywanie wartosci róznych typów

Porównywanie „wieksze”, „mniejsze” wymaga w Pythonie 3

zgodnosci typów, inaczej wywołuje błedy:

(1,) < [2] → TypeError: unorderable types

1 < ’2’ → TypeError: unorderable types

Mozna porównywac porzadek liczby całkowitych i rzeczywistych,

ale zespolonych nie:

1 < 1.1 → True

1j < 2j → TypeError: unorderable types

Znaki sa porównywane w kolejnosci numerów Unicode, nie

alfabetycznie:

’Z’ > ’a’ → False

Sekwencje tego samego typu porównywane sa element po

elemencie:’ala’ > ’alA’ → True

(1,2) < (1.0,3) → True

operatory > i < sa wykorzystywane przy sortowaniu.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 30: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Typy danych

Typy danych: jeszcze o metodach sekwencji

Metody count i index maja listy, tuple i napisy, z tym ze dla

napisów działaja one dla równiez dla fragmentów napisu

dłuzszych niz jeden znak.

Jezeli chcemy sprawdzic, w którym miejscu napis N zawiera ciag

znaków C, lepiej uzyc N.find(C). Wynikiem tej metody jest -1,

jesli C nie ma w N, natomiast N.index(C) spowoduje wtedy bład.

Metoda L.sort dla list oraz ogolna funkcja sorted wymagaja,

aby dane do uporzadkowania były typu dajacego sie porównac.

Mozna sortowac sekwencje napisów i sekwencje liczb, ale próba

posortowania danych napisowych wymieszanych z liczbowymi

skutkuje błedem TypeError.

Trzeba pamietac które metody zwracaja jakas wartosc, a które

nie (tylko zmieniaja swój obiekt) – bo inaczej sie ich uzywa!

lista.sort() vs ostatni = lista.pop()

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 31: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Przetwarzanie i wizualizacja danych

Instrukcje sterujace

Paweł Kedzierski

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 32: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Petla for

Cel Wykonaj „jakies instrukcje” dla kazdego elementu

e sekwencji sekwencja.

Składnia for e in sekwencja:

wciecie−−−−−−−−−→

jakies

instrukcje

Opis e to zmienna, która zostanie utworzona w petli for

(lub zmieniona, jesli istniała wczesniej).

dla kazdego elementu sekwencji sekwencja,

element ten zostanie „wstawiony” (przypisany) do

zmiennej e,

a nastepnie dla tej wartosci e zostana wykonane

wszystkie „jakies instrukcje”.

(takie samo) wciecie zaznacza, które instrukcje

naleza do tej konkretnej petli i beda powtórzone dla

kazdej wartosci e.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 33: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Petla for: przykłady

>>> for nr in 1,2,3:

... print(’nr =’, nr)

nr = 1

nr = 2

nr = 3

>>> for znak in ’XyZ’:

... print(znak)

X

y

Z

>>> for kto in [’Ala’,’Ola’]:

... print(kto)

Ala

Ola

>>> for x in [1,2,3]:

... for y in [1,2,3]:

... print(x*y,end=’ ’)

... print()

1 2 3

2 4 6

3 6 9

Parametr end=’ ’ funkcji

print powoduje, ze za

wypisywana informacja dodana

zostanie spacja. Domyslnie ten

argument jest koncem linii,

dlatego print() konczy linie i

przechodzi do nastepnej.Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 34: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Funkcja range()

Kiedy w petli for chcemy skorzystac nie tylko z elementów sekwencji,

ale tez z ich indeksów, przydaje sie funkcja range:

>>> S = (’Ala’, ’Ula’)

>>> for i in range(len(S)):

... print(i+1, S[i], sep=’) ’)

1) Ala

2) Ula

W Pythonie 2, wynikiem range(n) była zwykła lista n-elementowa,

zawierajaca indeksy (dla dowolnej sekwencji o długosci n).

W Pythonie 3, wynik funkcji range nie jest juz lista (dla efektywnosci)

ani nawet sekwencja. Formalnie, jest to tzw. iterator.

>>> r = range(5)

>>> type(r)

<class ’range’>

>>> print(r)

range(0, 5)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 35: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Funkcja range()

Wynik funkcji range mozna, w razie potrzeby, przekształcic na

sekwencje potrzebnego typu:

>>> list(range(5))

[0, 1, 2, 3, 4]

Działanie Funkcja range produkuje zakres indeksów (nadajacy

sie dla dowolnej sekwencji S). Mozna jej uzyc z jednym,

dwoma lub trzema argumentami całkowitymi.

range(n) Produkuje n liczb od 0 do n-1

range(od, do) Produkuje indeksy dla zakresu S[od:do]

range(od, do, co_ile) Produkuje indeksy jak dla zakresu

S[od:do:co_ile]

Najprostsze zastosowanie range to: „powtórz instrukcje n razy”

>>> for i in range(n):

... instrukcje

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 36: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Funkcja range() – przykłady

Za pomoca funkcji range mozna wygenerowac dowolny ciag

arytmetyczny liczb całkowitych. W kazdym przypadku, element

podany pierwszym argumentem (od) jest uwzgledniany, natomiast

koniec zakresu (do) – nie.

list(range(10)) → [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list(range(1,6)) → [1, 2, 3, 4, 5]

list(range(0,10,2)) → [0, 2, 4, 6, 8]

list(range(-7,0)) → [-7, -6, -5, -4, -3, -2, -1]

list(range(5,-1,-1)) → [5, 4, 3, 2, 1, 0]

list(range(5,-10,-2)) → [5, 3, 1, -1, -3, -5, -7, -9]

(Tylko) dla ilustracji wyników, w kazdym przykładzie uzyto konwersji na

liste. W petli for takiej konwersji nie nalezy uzywac.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 37: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Instrukcja if

Cel Podjecie decyzji, który fragment programu wykonac

(zaleznie od warunków).

Składnia if warunek:wciecie

−−−−−−−−−→

jakies

instrukcje

Opis wciecie zaznacza, które instrukcje beda wykonane

pod warunkiem.

Fragment z wcieciem bedzie wykonany tylko wtedy,

gdy warunek jest prawdziwy (oczywiscie

instrukcje ponizej wcietego fragmentu wykonuja sie

normalnie).

if nie jest petla. Instrukcje z wcieciem beda

wykonane raz albo wcale.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 38: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Instrukcja if

Cel Podjecie decyzji, który fragment programu wykonac

(zaleznie od warunków).

Składnia if warunek:wciecie

−−−−−−−−−→

jakies

instrukcje

else:wciecie

−−−−−−−−−→

jeszcze inne

instrukcje

Opis wciecie zaznacza, które instrukcje beda wykonane

pod warunkiem, a które po else:.

Wykonany bedzie tylko ten fragment z wcieciem,

dla którego warunek jest prawdziwy. Jezeli nie

jest prawdziwy, wykonane beda instrukcje po else:.

if nie jest petla. Zostana wykonane instrukcje z co

najwyzej jednego wciecia, jeden raz albo wcale.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 39: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Instrukcja if

Składnia if warunek1:wciecie

−−−−−−−−−→

jakies

instrukcje

elif warunek2:wciecie

−−−−−−−−−→

inne

instrukcje

else:wciecie

−−−−−−−−−→

jeszcze inne

instrukcje

Opis Wykonany bedzie tylko ten fragment z wcieciem,

dla którego pierwszy w kolejnosci warunek jest

prawdziwy. Jezeli zaden nie jest prawdziwy,

wykonane beda instrukcje po else:.

Jezeli (zaden) warunek nie jest spełniony i nie ma

else:, instrukcja nie zrobi nic.

Mozna sprawdzic tak dowolnie wiele warunków.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 40: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Petla while

Cel Powtarzaj fragment programu pod zadanym warunkiem.

Składnia while warunek:wciecie

−−−−−−−−−→

jakies

instrukcje

Opis wciecie zaznacza, które instrukcje beda wykonane

pod podanym warunkiem.

Instrukcje z wcieciem beda powtarzane tak

długo, jak długo warunek pozostaje prawdziwy -

chyba, ze przerwiemy petle instrukcja break.

Musimy albo zmieniac warunek w petli, albo

umiescic w niej instrukcje break - inaczej petla

bedzie powtarzana w nieskonczonosc.

Jesli zdarzy nam sie napisac petle nieskonczona

(program sie „zawiesza” albo bez konca cos

powtarza), mozna go przerwac z klawiatury

klawiszami Ctrl-C.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 41: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Przykłady petli while

Zamiast petli for (choc nie polecam):

>>> n = 1 # zmienna do odliczania

>>> while n < 3: # powtarzaj, dopóki n jest mniejsze od 3

... print(n)

... n += 1 # zwiekszamy x - zmieniamy warunek powyzej

1

2

Czesto stosowany idiom: gdy dopiero wewnatrz petli pojawia sie dane,

które sa warunkiem zakonczenia:

>>> while True: # warunek zawsze prawdziwy

... x = float(input(’Podaj liczbe dodatnia: ’))

... if x > 0: break # warunek zakonczenia

Podaj liczbe dodatnia: -1

Podaj liczbe dodatnia: 0

Podaj liczbe dodatnia: 1e-3

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 42: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Przykłady petli while

Inny idiom: zbieranie danych do momentu, gdy sie skoncza (tj. próba

wczytania kolejnej danej daje pusty wynik):

ludzie = [] # lista na dane

while 1: # znaczy: zawsze

ktos = input(’Kolejna osoba: ’) # wprowadzanie danych

if ktos == ’’: break # warunek zakonczenia

lista.append(ktos) # zapamietaj dana

print(lista)

Kolejna osoba: Ala

Kolejna osoba: Ola

Kolejna osoba: Ula

Kolejna osoba:

[’Ala’, ’Ola’, ’Ula’]

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 43: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Podsumowanie petli

Petli for uzywamy, gdy mamy sekwencje danych do

przetworzenia, albo gdy chcemy wykonac jakis fragment

programu z góry zadana liczbe razy (z funkcja range).

Petli while uzywamy, gdy potrzebna liczba powtórzen zalezy od

jakiegos warunku.

Kazda petle (for i while) mozna przerwac za pomoca instrukcji

break, której zwykle wykonujemy pod jakims warunkiem, czyli:

if warunek: break

Jest równiez instrukcja continue, która pomija nalezace do petli

instrukcje ponizej niej, ale nie konczy petli - tylko przechodzi do

jej kolejnego wykonania, od pierwszej linijki wciecia.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 44: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Podsumowanie instrukcji sterujacych

Wciecia sa elementem składni Pythona, decyduja o tym który

fragment programu nalezy do której instrukcji sterujacej. Dlatego

błedem jest zarówno wciecie bez powodu, jak i nierówne wciecia

- nie mozna m.in. mieszac spacji i tabulacji.

Jesli pod kontrola instrukcji sterujacej ma byc tylko jedna

instrukcja, mozna ja umiescic w tej samej linii, zaraz po

dwukropku (jest to wyjatek od wciec). Przykłady:

if x > 0: print(’x jest dodatnie’)

for nr in range(1,11): print(nr)

while L: print(L.pop())

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 45: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Instrukcje sterujace

Podsumowanie instrukcji sterujacych

Wciecia sa elementem składni Pythona, decyduja o tym który

fragment programu nalezy do której instrukcji sterujacej. Dlatego

błedem jest zarówno wciecie bez powodu, jak i nierówne wciecia

- nie mozna m.in. mieszac spacji i tabulacji.

Jesli pod kontrola instrukcji sterujacej ma byc tylko jedna

instrukcja, mozna ja umiescic w tej samej linii, zaraz po

dwukropku (jest to wyjatek od wciec). Przykłady:

if x > 0: print(’x jest dodatnie’)

for nr in range(1,11): print(nr)

while L: print(L.pop())

Szczególnym przypadkiem zastosowania instrukcji sterujacych

sa listy iterowane (tu nie ma ani dwukropków, ani wciec):

T L1 = [ x*0.1 for x in range(11) ]

L2 = [ x**0.5 for x in range(-3,6) if x > 0 ]

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 46: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab

Przetwarzanie i wizualizacja danych

Wybrane tematy z podstaw Pythona

Paweł Kedzierski

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 47: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Wiekszosc funkcji dostepnych w jezyku Python nie jest

„wbudowana” w interpreter i wymaga załadowania przed uzyciem.

Funkcje i klasy rozszerzajace mozliwosci jezyka sa

zaprogramowane w osobnych plikach, tzw. bibliotekach albo

modułach.

Moduły Pythona moga byc napisane w innym jezyku

programowania (zwykle C), skompilowane i dostepne w postaci

plików binarnych (typu .DLL w Windows lub .so w Linux).

Zwykły kod Pythona w pliku z rozszerzeniem .py równiez jest

modułem – łatwo jest wiec tworzyc własne (co jednak wymaga

min. umiejetnosci pisania funkcji).

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 48: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Wiekszosc funkcji dostepnych w jezyku Python nie jest

„wbudowana” w interpreter i wymaga załadowania przed uzyciem.

Funkcje i klasy rozszerzajace mozliwosci jezyka sa

zaprogramowane w osobnych plikach, tzw. bibliotekach albo

modułach.

Moduły Pythona moga byc napisane w innym jezyku

programowania (zwykle C), skompilowane i dostepne w postaci

plików binarnych (typu .DLL w Windows lub .so w Linux).

Zwykły kod Pythona w pliku z rozszerzeniem .py równiez jest

modułem – łatwo jest wiec tworzyc własne (co jednak wymaga

min. umiejetnosci pisania funkcji).

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 49: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Wiekszosc funkcji dostepnych w jezyku Python nie jest

„wbudowana” w interpreter i wymaga załadowania przed uzyciem.

Funkcje i klasy rozszerzajace mozliwosci jezyka sa

zaprogramowane w osobnych plikach, tzw. bibliotekach albo

modułach.

Moduły Pythona moga byc napisane w innym jezyku

programowania (zwykle C), skompilowane i dostepne w postaci

plików binarnych (typu .DLL w Windows lub .so w Linux).

Zwykły kod Pythona w pliku z rozszerzeniem .py równiez jest

modułem – łatwo jest wiec tworzyc własne (co jednak wymaga

min. umiejetnosci pisania funkcji).

Gdzie Python szuka modułów:

1 W katalogu, gdzie uruchamiany jest program,

2 W katalogach instalacyjnych,

3 W katalogach podanych w zmiennej srodowiska $PYTHONPATH

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 50: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Do ładowania modułów słuzy instrukcja import, która ma kilka wersji:

Składnia import moduł

Opis Załaduj moduł jako jeden obiekt. Dostep do zawartosci

modułu mozliwy przez składnie atrybutów obiektu, np.:

moduł.funkcja

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 51: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Do ładowania modułów słuzy instrukcja import, która ma kilka wersji:

Składnia import moduł

Opis Załaduj moduł jako jeden obiekt. Dostep do zawartosci

modułu mozliwy przez składnie atrybutów obiektu, np.:

moduł.funkcja

Składnia import moduł as nazwa

Opis Załaduj moduł jak wyzej, ale pod inna nazwa: nazwa

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 52: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Do ładowania modułów słuzy instrukcja import, która ma kilka wersji:

Składnia import moduł

Opis Załaduj moduł jako jeden obiekt. Dostep do zawartosci

modułu mozliwy przez składnie atrybutów obiektu, np.:

moduł.funkcja

Składnia import moduł as nazwa

Opis Załaduj moduł jak wyzej, ale pod inna nazwa: nazwa

Składnia from moduł import funkcja1, funkcja2

from moduł import dana, funkcja3 as f

Opis Załaduj z modułu tylko wybrane elementy, opcjonalnie

pod zmienionymi nazwami. Nazw funkcja1,

funkcja2, dana oraz f bedzie mozna uzywac

bezposrednio. Nazwy moduł lub funkcja3 nie beda

dostepne.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 53: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów (bibliotek)

Najczesciej (nad)uzywana wersja instrukcji import:

Składnia from moduł import *

Opis Załaduj wszystkie nazwy z modułu do bezposredniego

dostepu

+ łatwe uzycie

− nazwa moduł nie jest dostepna

− mozemy nieswiadomie nadpisac własne zmienne,

albo nazwy z innych modułów!

>>> from math import *

>>> sin(pi/2)

1.0

>>> from cmath import *

>>> sin(pi/2)

(1+0j)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 54: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Korzystanie z modułów – przykłady

Gdy chcemy przeczytac opis modułu albo sprawdzic, czego

dostarcza:

>>> import math

>>> help(math)

>>> dir(math)

Ładowanie kilku modułów:

>>> import math, sys, os

Sprawdzenie, w jakich katalogach Python szuka modułów:

>>> print(sys.path)

Dodanie sciezki do własnych modułów:

>>> sys.path.insert(0,’/home/user/moje_moduly’)

Ładowanie tylko potrzebnych funkcji i stałych:

>>> from math import sin, pi

>>> from cmath import sin as complex_sin

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 55: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Przydatne moduły

math Funkcje i stałe matematyczne (trygonometria,

logarytmy)

cmath Jak math ale do obliczen na liczbach zespolonych

sys Informacje i ustawienia jezyka Python (argumenty linii

komend, strumienie wejscia i wyjscia, domyslnie

ładowane moduły, . . . )

os Interakcja z systemem operacyjnym (np. ustawienia

zmiennych srodowiska, operacje na sciezkach i

nazwach plików, . . . )

Do naszych zajec:

numpy do obliczen numerycznych (Numerical Python)

matplotlib do tworzenia wykresów

PIL tworzenie i obróbka grafiki (Python Image Library)

vtk zaawansowana wizualizacja danych (Visualization

Toolkit)

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 56: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Sortowanie wg klucza (np. alfabetyczne)

Napisy nie sa porównywane i sortowane alfabetycznie, tylko wg

numerów znaków w Unicode. Dlatego wielkie litery sa pierwsze:

>>> print(ord(’A’), ord(’Z’), ord(’a’))

65 90 97

>>> L = [’ala’, ’Ela’, ’ULA’]

>>> sorted(L)

/ [’Ela’, ’ULA’, ’ala’]

Metoda sort dla list i funkcja standardowa sorted maja parametr

key, za pomoca którego mozna problem rozwiazac.

Jako wartosc key podajemy nazwe funkcji lub metody, której wynik dla

sortowanych danych bedzie porównywany:

>>> sorted(L, key=str.lower)

, [’ala’, ’Ela’, ’ULA’]

Klucz jest uzyty tylko do porównan, napisy wynikowe nie sa zmieniane.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 57: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Sortowanie wg klucza (np. alfabetyczne)

Zamiana wielkosci znaków nadal nie rozwiazuje problemu sortowania

z uwzglednieniem znaków narodowych (Unicode collation):

>>> print(ord(’A’), ord(’A’), ord(’a’), ord(’a’))

65 260 97 261

>>> L.append(’cwok’)

>>> sorted(L, key=str.lower)

/ [’ala’, ’Ela’, ’ULA’, ’cwok’]

Do tego celu potrzebujemy wsparcia z modułu locale. Modułu tego

nie wystarczy załadowac, trzeba jeszcze zainicjalizowac ustawienia

lokalizacji:

>>> import locale

>>> locale.setlocale(locale.LC_ALL, ’’)

>>> sorted(L, key=locale.strxfrm)

, [’ala’, ’cwok’, ’Ela’, ’ULA’]

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 58: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

’tekst%⟨flagi⟩⟨szer⟩⟨.⟩⟨prec⟩typtekst’ % dana

na przykład: ’%s’ % ’napis’

’x = %-10.3f’ % 1.5

Cel Formatowanie danych do zadanej postaci tekstowej.

Wynik działania jest napisem.

Składnia Od znaku % do litery oznaczajacej typ jest to pole

wstawiania, które operator % (za lewym napisem)

zastapi wartoscia po prawej.

Tekst nie bedacy czescia pola pozostanie niezmieniony.

Elementy podane w nawiasach katowych sa opcjonalne.

flagi kontroluja znak liczb, dosuniecie do lewej lub prawej itp.

szer wynikowa szerokosc pola

prec precyzja dla liczb lub długosc przycinania napisów

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 59: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

Typy pól wstawiania (konwersji):

s Pole napisowe. Nadaje sie do kazdego typu danych, które

beda przekształcone do formy napisowej za pomoca funk-

cji str(). Podanie precyzji n obcina napis do n pierwszych

znaków.

d lub i Liczba całkowita dziesietna. Mozna uzyc do wstawienia

liczby rzeczywistej, ale jej czesc ułamkowa bedzie obcieta

(nie zaokraglona). Precyzja uzupełnia zerami.

f Liczba rzeczywista zmiennoprzecinkowa (z kropka dzie-

sietna). Mozna wstawiac liczby całkowite. Wynik bedzie pra-

widłowo zaokraglony do zadanej precyzji, jak z uzyciem funk-

cji round(). Podanie precyzji 0 formatuje bez kropki dzie-

sietnej (i zaokragla do najblizszej liczby całkowitej).

% Pozwala na wstawienie znaku „%”.

Podano tylko wybrane typy pól. Pełna dokumentacja dostepna tutaj i

tutaj.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 60: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

Przykłady wyrazen:

’%s’ % ’ala’ → ’ala’

’"%s"’ % ’ala’ → ’"ala"’

’%5s’ % ’ala’ → ’ ala’

’%.2s’ % ’ala’ → ’al’

’%5.2s’ % ’ala’ → ’ al’

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 61: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

Przykłady wyrazen:

’%s’ % ’ala’ → ’ala’

’"%s"’ % ’ala’ → ’"ala"’

’%5s’ % ’ala’ → ’ ala’

’%.2s’ % ’ala’ → ’al’

’%5.2s’ % ’ala’ → ’ al’

’%d’ % 1 → ’1’

’%4d’ % 1 → ’ 1’

’%4.3d’ % 1 → ’ 001’

’%d’ % 1.9 → ’1’

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 62: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

Przykłady wyrazen:

’%s’ % ’ala’ → ’ala’

’"%s"’ % ’ala’ → ’"ala"’

’%5s’ % ’ala’ → ’ ala’

’%.2s’ % ’ala’ → ’al’

’%5.2s’ % ’ala’ → ’ al’

’%d’ % 1 → ’1’

’%4d’ % 1 → ’ 1’

’%4.3d’ % 1 → ’ 001’

’%d’ % 1.9 → ’1’

’%f’ % 1.9 → ’1.900000’

’%.3f’ % 1.9 → ’1.900’

’%7.3f’ % 1.9 → ’ 1.900’

’%.0f’ % 1.9 → ’2’

’Wynik: %.0f%%’ % 19.5 → ’Wynik: 20%’

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 63: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

Typy pól wstawiania (c.d.):

e Pole wykładnicze (notacja naukowa). Precyzja dotyczy cyfr po

kropce mantysy.

g Pole dla liczb rzeczywistych. Wstawia forme wykładnicza (jak e,

jesli wykładnik jest mniejszy niz -4 lub nie wiekszy od podanej

precyzji. W przeciwnym razie działa jak pole typu f.

Wstawianie kilku danych w napis formatujacy wymaga tupli.

pierwszy element tupli po prawej bedzie wstawiony w pierwsze

pole w napisie po lewej, drugi w drugie, etc.

liczba pól i liczba elementów w tupli musi sie zgadzac.

’%s ma %d lat’ % (imie, wiek) → ’Ula ma 9 lat’

’%d to %.0f%% z %d’ % (x,100.0*x/y,y) → ’2 to 50% z 4’

B ’%s’ % (1,2,3) → TypeError

’%s’ % ((1,2,3),) → ’(1,2,3)’ ,

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 64: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Formatowanie wyników: operator %

’tekst%⟨flagi⟩⟨szer⟩⟨.⟩⟨prec⟩typtekst’ % dana

Flagi (wybrane):

- Dosuniecie do lewej strony pola o zadanej szerokosci

+ Dla liczb: wynik zawsze ze znakiem

spacja Odstep zamiast + dla liczb dodatnich

0 Dla liczb: wypełnij pole zerami do podanej szerokosci

(nie spacjami)

Przykłady: ’%-5s’ % ’ala’ → ’ala ’

’%3d’ % 1 → ’ 1’

’%-3d’ % 1 → ’1 ’

’%+d’ % 1 → ’+1’

’%-+3d’ % 1 → ’+1 ’

’%- 3d’ % 1 → ’ 1 ’

’%03d’ % 1 → ’001’

’%+03d’ % 1 → ’+01’

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 65: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Zródła danych, wejscie i wyjscie

Strumienie wejscia-wyjscia (IO):

kazdy program ma podłaczone 3 strumienie danych:

standardowe „wejscie” (stdin), standardowe „wyjscie” (stdout)

oraz wyjscie błedów (stderr).

przy pracy w terminalu, stdin jest podłaczone do klawiatury, a

stdout i stderr wypisuja tekst na terminalu.

funkcja input() czyta dane ze stdin.

stdout jest uzywany przez funkcje print().

Komunikaty błedów Pythona trafiaja do stderr.

Wszystkie trzy strumienie mozna przekierowac do/z plików albo

do/z inych programów.

Zródłem danych moze byc równiez linia komend. Dostep do strumieni

IO oraz do linii komend zapewnia moduł sys (atrybuty stdin, stderr,

stdout i argv).

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 66: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Zródła danych, wejscie i wyjscie

Przykład: test.py

#!/usr/bin/env python3

for i in range(5):

x = float(input())

print(’x=%.1f, x*x=%.1f’ % (x, x**2))

Zamiast z klawiatury, mozemy skierowac do standardowego wejscia

programu dane z pliku:

user@computer:~$ ./test.py < dane

x=1.0, x*x=1.0

x=2.0, x*x=4.0

x=2.5, x*x=6.2

x=3.0, x*x=9.0

x=-4.0, x*x=16.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 67: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Format CSV (comma separated values)

Zwykły plik tekstowy z rozszerzeniem .csv jest rozpoznawany i

importowany jako arkusz przez MS Excel, OpenOffice lub LibreOffice

Calc itp. Wystarczy, ze:

Separatorem kolumn jest przecinek, srednik lub tabulacja;

Dane tekstowe sa w cudzysłowach lub apostrofach (koniecznie,

jesli zawieraja znaki separatora).

Podczas importu mozna wybrac separator kolumn oraz jezyk. Jezyk

importu „English (USA)” prawidłowo rozpoznaje liczby podane z

kropka dziesietna.

from math import sin

print(’"x";"sin(x)"’)

for i in range(-10,11):

x = i * 0.1

print(’%.1f;%f’ % (x,sin(x)))

"x";"sin(x)"

-1.0;-0.841471

-0.9;-0.783327

-0.8;-0.717356

-0.7;-0.644218

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 68: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Format CSV (comma separated values)

Strumien wyjscia z programu (stdout) mozna skierowac do pliku:

user@computer:~$ ./sinus.py > wyniki.csv

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 69: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach

Plikiem nazywamy zbiór danych zapisanych pod pewna nazwa

na trwałym nosniku, takim jak dysk twardy (HDD lub SDD),

pendrive, płyta DVD itp.

Korzystanie z plików jest mozliwe tylko za posrednictwem

systemu operacyjnego (OS), który zapewnia efektywny i

bezpieczny dostep do danych.

Dostep do plików jest buforowany w pamieci operacyjnej. W

szczególnosci gdy piszemy do pliku, dane nie trafiaja od razu na

nosnik.

Operacje na plikach sa kosztowne i OS nie pozwala programom

korzystac na raz ze zbyt wielu plików.

Python unifikuje dostep do danych z zewnatrz tak, ze prawie

kazde zródło danych mozna obsługiwac tak, jakby było plikiem.

Strumienie sys.stdin, sys.stdout i sys.stderr sa z punkty

widzenia Pythona plikami.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 70: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach

Niezaleznie od jezyka programowania i OS, dostep do plików wymaga

podobnych operacji:

1 Najpierw trzeba poprosic OS o dostep do pliku o okreslonej

nazwie i połozeniu, podajac jednoczesnie czy chcemy tylko

czytac dane, tylko zapisywac, czy jedno i drugie (tryb dostepu).

Ta operacja nazywa sie otwarciem pliku.

2 Obiekt, za posrednictwem którego wykonujemy operacje na

danych w plikach, musimy zapamietac w zmiennej. Mozemy ja

nazywac zmienna plikowa.

3 Potem mozemy z pliku czytac lub do niego pisac, zaleznie od

uzyskanego trybu dostepu, wykonujac odpowiednie operacje na

zmiennej plikowej.

4 Gdy konczymy korzystac z pliku, nalezy go zamknac. Wtedy

system zapisuje na nosnik to, co trzymał w pamieci, i zwalnia

pamiec uzywana do buforowania.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 71: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach

Otwieranie plików

inp = open(’dane.txt’, ’r’)

Napis ’dane.txt’ to nazwa pliku. Musi byc podana z

rozszerzeniem. Jezeli pliku nie ma w tym folderze, gdzie działa

program, trzeba podac połozenie (np. ’Desktop/dane.txt’).

’r’ to tryb dostepu (mozna podac jako mode=’r’). Tryb ’r’ jest

domyslny i oznacza dostep tylko do odczytu (od read).

out = open(’wyniki.txt’, ’w’)

Otwarcie pliku o nazwie ’wyniki.txt’ do zapisu (tryb ’w’ od

write).

Uwaga: ten tryb otwarcia kasuje wszystko, co było w pliku!

inp oraz out to nazwy zmiennych, przez które bedziemy mieli dostep

do zawartosci otwartych plików.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 72: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach

Tryby dostepu do plików

’r’ tylko do odczytu (read-only). Plik musi istniec.

’w’ tylko do zapisu (write-only). Jesli plik istnieje, zostaje nadpisany.

Jesli nie istniał, powstaje (pusty) w momencie otwarcia.

’x’ tylko do zapisu, na wyłacznosc (exclusive). Zabezpiecza przed

skasowaniem istniejacego pliku (bład przy próbie otwarcia).

’a’ do dopisywania (append). Jesli plik istnieje, zostanie przewiniety

na koniec. Jesli nie istniał, zostanie utworzony.

Modyfikatory trybu dostepu

Te litery mozemy dodac do podstawowego trybu, w razie potrzeby (np.

’rb’ albo ’r+’:

’+’ Pozwala na odczyt (’w+’ lub ’a+’) i zapis (’r+’)

’b’ Tryb binarny - dla danych, które nie sa tekstem ASCII ani Uni-

code. Odczyt z tak otwartego pliku daje wartosci typu bytes, nie

str.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 73: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: otwieranie

Kiedy jakiego trybu uzyc do otwarcia pliku?

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 74: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

out = open(’wyniki.txt’, ’w’)

1 Mozemy zdac sie na funkcje print():

print(x, log(x), file=out)

2 Albo, uzyc metod zmiennej plikowej.

W tym przypadku, dane do wypisania musimy sami przekształcic

na napis, zadbac o odstepy, konce linii itp.

out.write(’%8.3f %8.3f\n’ % (x, log(x)))

Metoda write obiektów plikowych przyjmuje tylko jeden

parametr (inaczej niz print), i musi on byc typu str (lub bytes

w trybie zapisu binarnego, ’wb’).

Sposób pierwszy jest wygodniejszy, ale dostepny tylko w Pythonie 3.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 75: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

Na kolejnych slajdach ilustruje, co sie dzieje z zawartoscia

zapisywanego zbioru danych (na twardym dysku lub innym

nosniku), oraz jak zmienia sie aktualna pozycja w pliku (tylko w

pamieci, pokazana jako czerwony kursor), podczas wykonywania

przykładowych operacji.

Zrozumienie działania operacji na plikach znacznie ułatwia

uruchamianie i poprawianie własnych programów.

Jezeli wykonujemy program interakcyjnie krok po kroku (np.

testujac), zeby zobaczyc efekt zapisu w pliku na dysku musimy

albo plik zamknac, albo uzyc metody flush. Do sprawdzenia

zawartosci pliku w Linuksie mozna uzyc komendy cat plik

w terminalu.

Po zamknieciu pliku, nie da sie juz czytac ani pisac.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 76: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’) wyniki.txt

0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 77: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)wyniki.txt

10

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 78: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

wyniki.txt

[] 12 ala

10

Nie nalezy (nad)uzywac flush – to bardzo zwalnia program

i nadmiernie obciaza dysk. Przydaje sie jednak do testów.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 79: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

>>> print(’XX’, file=out, flush=1)

wyniki.txt

[] 12 ala

XX

13

Nie nalezy (nad)uzywac flush – to bardzo zwalnia program

i nadmiernie obciaza dysk. Przydaje sie jednak do testów.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 80: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

>>> print(’XX’, file=out, flush=1)

>>> out.write(’a’)

1

wyniki.txt

[] 12 ala

XX

14

Nie nalezy (nad)uzywac flush – to bardzo zwalnia program

i nadmiernie obciaza dysk. Przydaje sie jednak do testów.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 81: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

>>> print(’XX’, file=out, flush=1)

>>> out.write(’a’)

1

>>> out.write(’bc’)

2

wyniki.txt

[] 12 ala

XX

16

Nie nalezy (nad)uzywac flush – to bardzo zwalnia program

i nadmiernie obciaza dysk. Przydaje sie jednak do testów.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 82: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

>>> print(’XX’, file=out, flush=1)

>>> out.write(’a’)

1

>>> out.write(’bc’)

2

>>> out.flush()

wyniki.txt

[] 12 ala

XX

abc16

Nie nalezy (nad)uzywac flush – to bardzo zwalnia program

i nadmiernie obciaza dysk. Przydaje sie jednak do testów.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 83: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

>>> print(’XX’, file=out, flush=1)

>>> out.write(’a’)

1

>>> out.write(’bc’)

2

>>> out.flush()

B >>> out.write([], 12, ’ala’)

TypeError: write() takes exactly one argument (3 given)

wyniki.txt

[] 12 ala

XX

abc16

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 84: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out = open(’wyniki.txt’, ’w’)

>>> print([], 12, ’ala’, file=out)

>>> out.flush()

>>> print(’XX’, file=out, flush=1)

>>> out.write(’a’)

1

>>> out.write(’bc’)

2

>>> out.flush()

B >>> out.write([], 12, ’ala’)

TypeError: write() takes exactly one argument (3 given)

B >>> out.write(11)

TypeError: write() argument must be str, not int

wyniki.txt

[] 12 ala

XX

abc16

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 85: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16wyniki.txt

[] 12 ala

XX

abc16

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 86: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

wyniki.txt

[] 12 ala

XX

13abc

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 87: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

wyniki.txt

[] 12 ala

XX

abc16

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 88: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

wyniki.txt

[] 12 ala

XX

---16

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 89: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

>>> out.seek(2)

2

wyniki.txt

[]212 ala

XX

---

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 90: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

>>> out.seek(2)

2

>>> out.write(’NOWE\n’)

5

wyniki.txt

[] 12 ala

7XX

---

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 91: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

>>> out.seek(2)

2

>>> out.write(’NOWE\n’)

5

>>> out.truncate()

7

wyniki.txt

[]NOWE

7

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 92: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

>>> out.seek(2)

2

>>> out.write(’NOWE\n’)

5

>>> out.truncate()

7

>>> out.write(’%s %d\n’ % ([],12))

6

wyniki.txt

[]NOWE

13

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 93: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

>>> out.seek(2)

2

>>> out.write(’NOWE\n’)

5

>>> out.truncate()

7

>>> out.write(’%s %d\n’ % ([],12))

6

wyniki.txt

[]NOWE

[] 12

>>> out.close()

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 94: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: zapis

>>> out.tell()

16

>>> out.seek(13)

13

>>> out.write(’---’)

3

>>> out.flush()

>>> out.seek(2)

2

>>> out.write(’NOWE\n’)

5

>>> out.truncate()

7

>>> out.write(’%s %d\n’ % ([],12))

6

wyniki.txt

[]NOWE

[] 12

>>> out.close()

B >>> out.write(’\n’)

ValueError:

I/O operation on closed

file.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 95: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

Zmienna plikowa udostepnia kilka metod do odczytu z pliku:

read wczytuje wszystko (lub podana liczbe

znaków/bajtów), najbardziej przydatna dla danych

binarnych;

readline wczytuje na raz jedna linie (razem z koncem),

najbardziej przydatna dla tekstu;

readlines wczytuje cały plik, zwraca liste linii. Przydatna tylko

dla wzglednie małych plików.

Wczytane dane sa wynikiem funkcji (trzeba zapamietac je w

zmiennej) typu str (read, readline), bytes (w trybie binarnym

’rb’) lub lista napisów (readlines).

Kazdy odczyt przesuwa aktualna pozycje w pliku.

Próba odczytu na koncu pliku daje pusty wynik (pusty napis lub

pusta liste).

Zmienna plikowa jest równiez iteratorem, zwracajacym kolejne

linie w petli for.

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 96: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

woda.xyz

03

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 97: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

52

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 98: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’ woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

52

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 99: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

woda.xyz

03

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 100: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

woda.xyz

3

3H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

ile: 3

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 101: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

woda.xyz

3

H2O

7O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

ile: 3

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 102: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

7O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

ile: 3

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 103: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

22H 0.8 0.6 0.0

H -0.8 0.6 0.0

wyr: [’O’,’0.0’,’0.0’,’0.0’]

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 104: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

22H 0.8 0.6 0.0

H -0.8 0.6 0.0

wyr: [’O’,’0.0’,’0.0’,’0.0’] symbol: ’O’

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 105: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

22H 0.8 0.6 0.0

H -0.8 0.6 0.0

wyr: [’O’,’0.0’,’0.0’,’0.0’] symbol: ’O’ x,y,z: 0.0,0.0,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 106: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

22H 0.8 0.6 0.0

H -0.8 0.6 0.0

wyr: [’O’,’0.0’,’0.0’,’0.0’] symbol: ’O’ x,y,z: 0.0,0.0,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 107: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

37H -0.8 0.6 0.0

wyr: [’H’,’0.8’,’0.6’,’0.0’] symbol: ’O’ x,y,z: 0.0,0.0,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 108: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

37H -0.8 0.6 0.0

wyr: [’H’,’0.8’,’0.6’,’0.0’] symbol: ’H’ x,y,z: 0.0,0.0,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 109: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

37H -0.8 0.6 0.0

wyr: [’H’,’0.8’,’0.6’,’0.0’] symbol: ’H’ x,y,z: 0.8,0.6,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 110: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

37H -0.8 0.6 0.0

wyr: [’H’,’0.8’,’0.6’,’0.0’] symbol: ’H’ x,y,z: 0.8,0.6,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 111: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

52

wyr: [’H’,’-0.8’,’0.6’,’0.0’] symbol: ’H’ x,y,z: 0.8,0.6,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 112: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

52

wyr: [’H’,’-0.8’,’0.6’,’0.0’] symbol: ’H’ x,y,z: 0.8,0.6,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 113: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

>>> inp = open(’woda.xyz’)

>>> inp.read()

’ 3\nH2O\nO 0.0 0.0 0.0\nH 0.8 0.6 0.0\nH -0.8 0.6 0.0\n’

>>> inp.read()

’’

>>> inp.seek(0)

0

>>> ile = int(inp.readline())

>>> inp.readline()

’H2O\n’

>>> for i in range(ile):

... wyr = inp.readline().split()

... symbol = wyr[0]

... x,y,z = float(wyr[1]), float(wyr[2]), float(wyr[3])

woda.xyz

3

H2O

O 0.0 0.0 0.0

H 0.8 0.6 0.0

H -0.8 0.6 0.0

52

wyr: [’H’,’-0.8’,’0.6’,’0.0’] symbol: ’H’ x,y,z: -0.8,0.6,0.0

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 114: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Operacje na plikach: odczyt

Taka petle jak na poprzednim slajdzie mozemy uzyc gdy z góry

wiadomo, ile linii z pliku trzeba wczytac. Najczesciej jednak

potrzebujemy petli po wszystkich liniach w pliku.

Czesto uzywany idiom to:

>>> while True:

... linia = inp.readline()

... if not linia: break # koniec pliku

... # przetwarzanie danych z biezacej linii

Najbardziej zwiezłym i efektywnym sposobem jest jednak skorzystanie

z tego, ze zmienna plikowa jest iteratorem:

>>> for linia in inp:

... # przetwarzanie danych z biezacej linii

Paweł Kedzierski Przetwarzanie i wizualizacja danych

Page 115: Przetwarzanie i wizualizacja danychPrzetwarzanie i wizualizacja danych - lab Typy danych Stałe, zmienne i wyrazenia˙ stała wartos´c wpisana w program, jak liczby´ 1, 3.14 albo

Przetwarzanie i wizualizacja danych - lab Wybrane tematy z podstaw Pythona

Parsowanie plików tekstowych

Wczytywanie danych z plików tekstowych wymaga znajomosci formatu

pliku. Trzeba znalezc i wybrac dane potrzebne programowi i zamienic

ich forme tekstowa odpowiedni typ (np. na liczby do obliczen).

Np. w formacie PDB, współrzedne atomów podane sa w liniach

zaczynajacych sie od znaków ATOM lub HETATM, w kolumnach 31-38

(x), 39-46 (y) i 47-54 (z), a nazwa atomu w kolumnach 13-16:

ATOM 1 N LYS A 1 16.979 26.750 -1.970

>>> for linia in open(’1rbx.pdb’):

... if linia[:4] == ’ATOM’:

... x = float(linia[30:38])

... y = float(linia[38:46])

... z = float(linia[46:54])

... atom = linia[12:16].strip()

... print(’%s %.2f %.2f %.2f’ % (atom,x,y,z))

N 16.98 26.75 -1.97

Paweł Kedzierski Przetwarzanie i wizualizacja danych