JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]



Podobne dokumenty
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Michał & Mateusz w zastępstwie za Marcin Lewandowski [ ]

Projektowanie systemów baz danych

Podstawowe informacje o bazach danych. Technologie Informacyjne

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Database Connectivity

Wykład I. Wprowadzenie do baz danych

Pojęcie bazy danych. Funkcje i możliwości.

Programowanie w Ruby

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Bazy danych - wykład wstępny

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Zaawansowany kurs języka Python

Komunikacja z bazą danych psql

Bazy danych. Dr inż. Paweł Kasprowski

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Język SQL, zajęcia nr 1

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Systemy GIS Tworzenie zapytań w bazach danych

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Technologia informacyjna

Programowanie obiektowe

znaleźć wszystkie rekordy dotyczące adresów przy ulicy Hożej (dowolnego miasta!);

Co to jest Baza Danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Podstawowe informacje o bazach danych. Technologie Informacyjne

JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Dr Marcin Lewandowski [ mlew@ippt.pan.pl ] Strona kursu:

Bazy danych 2. Wykład 1

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Ref. 7 - Język SQL - polecenia DDL i DML

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Język SQL podstawy zapytań

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Paweł Cieśla. Dokumentacja projektu

Zaawansowany kurs języka Python

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Instrukcje DML INSERT, UPDATE, DELETE. COPY

Bazy danych. dr inż. Arkadiusz Mirakowski

Podstawowe informacje o bazach danych

Zarządzanie kontami użytkowników w i uprawnieniami

Oracle11g: Wprowadzenie do SQL

Krzysztof Kadowski. PL-E3579, PL-EA0312,

P o d s t a w y j ę z y k a S Q L

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

NARZĘDZIA WIZUALIZACJI

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

15. Funkcje i procedury składowane PL/SQL

22. Podstawowe pojęcia baz danych. Baza Danych. Funkcje bazy danych. Właściwości bazy danych. Modele baz danych.

Wykład 2. SQL 1 Structured Query Lenguage

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych. Polecenia SQL

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Wykład :45 BD-1 W_3

WPROWADZENIE DO BAZ DANYCH

Wprowadzenie do Hurtowni Danych

akademia androida Składowanie danych część VI

Multimedialne bazy danych - laboratorium

MySQL. Darmowa baza danych. Æwiczenia praktyczne

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]

WTYCZKA FARA-TCM Dane techniczne dla twórców zewnętrznych aplikacji do obsługi map cmentarza

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Tuning SQL Server dla serwerów WWW

Tworzenie baz danych i tabel

PODSTAWY BAZ DANYCH 13. PL/SQL

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Spis treści. Przedmowa

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

na podstawie bazy Oracle NoSQL

Składowane procedury i funkcje

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Pojęcie systemu baz danych

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Wrocławska Wyższa Szkoła Informatyki Stosowanej. Bazy danych. Dr hab. inż. Krzysztof Pieczarka.

Wdrożenie modułu płatności eservice. dla systemu Magento

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Wprowadzenie do SAS. Wprowadzenie. Historia SAS. Struktura SAS 8. Interfejs: SAS Explorer. Interfejs. Część I: Łagodny wstęp do SAS Rafał Latkowski

Bazy Danych i Usługi Sieciowe

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

NARZĘDZIA WIZUALIZACJI

Smarty PHP. Leksykon kieszonkowy

Paweł Rajba

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Transkrypt:

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ]

PLIKI, DANE, FORMATY, KONWERSJE 2

Moduły do obsługi plików sys, os, os.path podstawowe funkcje plikowe fileinput otwiera i czyta pliki podane w linii poleceń, czyli sys.argv[1:]; domyślnie sys.stdin import fileinput for line in fileinput.input(): process(line) tempfile do tworzenia tymczasowych plików i katalogów shutil wysokopoziomowe operacja na plikach (np. copytree, rmtree) glob, fnmatch wyszukiwanie i dopasowywanie nazw plików na podstawie wyrażeń regularnych Patrz dokumentacja PYTHON i slajdy z zeszłego semestru 3

Moduł os standardowe wej./wyj. sys.stdin obiekt plikowy: standardowe wejście; domyślnie podłączony do konsoli (używany np. przez raw_input()). Dostępny także przez sys.stdin.read() oraz inne standardowe funkcje plikowe. sys.stdout obiekt plikowy: standardowe wyjście; domyślnie podłączony do konsoli (używany np. przez print). Dostępny także przez sys.stdout.write() oraz inne standardowe funkcje plikowe. sys.stderr obiekt plikowy: standardowe wyjście błędów; domyślnie podłączony do konsoli (używany np. przez print). Dostępny także przez sys.stderr.write() oraz inne standardowe funkcje plikowe. 4

Moduł os os.stat() os.stat() zwraca informację o pliku w formie listy: st_mode (protection bits), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (user id of owner), st_gid (group id of owner), st_size (size of file, in bytes), st_atime (time of most recent access), st_mtime (time of most recent content modification), st_ctime (platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows) >>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732) >>> statinfo.st_size 926L 5

Moduł os, os.stat os.stat zawiera stałe i funkcje do interpretacji informacji z funkcji: os.stat(), os.fstat(), os.lstat() import os, sys from stat import * top = r. for f in os.listdir(top): pathname = os.path.join(top, f) file_stat = os.stat(pathname) if S_ISDIR(file_stat[ST_MODE]): print pathname, is a directory elif S_ISREG(file_stat[ST_MODE]): print pathname, is a file of size, file_stat[st_size] else: # Unknown file type print 'Skipping %s' % pathname 6

Moduł tempfile TemporaryFile(mode= w+b, bufsize=-1, suffix=, prefix= tmp, dir=none) tworzy plik tymczasowy, który jest automatycznie kasowany przy zamknięciu NamedTemporaryFile(mode= w+b, bufsize=-1, suffix=, prefix= tmp, dir=none, delete=true) j.w. ale z opcją wyłączenia kasowania pliku oraz zapewnioną widocznością pliku w systemie plików (fd, name) = mkstemp(suffix=, prefix= tmp, dir=none, text=false) tworzy plik tymczasowy. Kasowanie pliku wymaga użycia os.remove() import tempfile, os fd, tempname = tempfile.mkstemp('.dat') temp = open( tempname, 'w+' ) # Some Processing... 7

Moduł shutil shutil ułatwia kopiowanie i usuwanie całych katalogów: copy(source, destination) kopiuje pliki i/lub katalogi (odpowiednik komendy UNIX cp src dst ) copyfile(source, destination) j.w. ale kopiuje tylko pliki copytree(source, destination) rekursywnie kopiuje całe poddrzewo katalogów; destination nie może istnieć! rmtree(path) usuwa drzewo katalogów poniżej path 8

Moduł glob UNIX powłoka (shell) robi to automatycznie; Windows NIE! Globbing plików z linii poleceń: # python script.py *.txt *.csv import glob, sys for arg in sys.argv[1:]: for f in glob.glob(arg): process( f ) 9

Moduł fnmatch Dopasowywanie nazw plików wg. reguł UNIX: import fnmatch >>> fnmatch.fnmatch('greppy.py','*.py') True >>> fnmatch.fnmatch('readme','*.py') False 10

Moduły do obsługi plików skompresowanych tarfile, zipfile obsługa (odczyt/zapis) plików archiwów w formatach TAR (.tar,.tgz,.tar.gz) i ZIP zlib, bz2, gzip moduły do obsługi bezstratnej kompresji/dekompresji plików i danych Moduł gzip ma prosty interfejs i działa tylko na całych plikach 11

Moduł zipfile Pełna obsługa struktury plików ZIP # Creates ZIP file form *.xml in given directory import zipfile, os, fnmatch path = r'.' zf = zipfile.zipfile('book.zip', 'w', zipfile.zip_deflated) for nm in os.listdir(path): if fnmatch.fnmatch(nm,'*.xml'): zf.close() full = os.path.join(path, nm) zf.write(full) Patrz dokumentacja PYTHON 12

EX ZIP wybranych plików ZIP plików z wybranych katalogów na podstawie ich specyfikacji w linii poleceń 13

Moduły do serializacji/persystencji obiektów pickle, shelve modułu pozwalają na zachowywanie i odtwarzanie obiektów Pythona do/z plików (tzw. persystencja obiektów) lub buforów danych (tzw. serializacja). pickle używa reprezentacji tekstowej (ASCII) shelve używa formatu bazy danych dbm Obiekty, które poddają się pickle: None, True, False Zmienne typów prostych (całkowitoliczbowe, zmiennoprzecinkowe, zespolone) Stringi ASCII i Unicode Listy, listy niemodyfikowalne, słowniki, zbiory, zawierające tylko obiekty pickl owalne Funkcje zdefiniowane na najwyższym poziomie modułu Klasy zdefiniowane na najwyższym poziomie modułu Instancje takich klas, których dict lub setstate () są pickl owalne 14

pickle >>> import cpickle as pickle >>> t1 = ('this is a string', 42, [1, 2, 3], None) >>> p1 = pickle.dumps(t1) >>> p1 "(S'this is a string'\ni42\n(lp1\ni1\nai2\nai3\nantp2\n." >>> t2 = pickle.loads(p1) >>> t2 ('this is a string', 42, [1, 2, 3], None) >>> p2 = pickle.dumps(t1, True) 15

Moduły do obsługi formatów MIME email obsługa plików załączników email w formacie MIME mailbox obsługa skrzynki pocztowej typu Mailbox w różnych formatach mimetypes obsługa typów MIME oraz mapowania na rozszerzenia plików binascii moduł do konwersji pomiędzy różnymi reprezentacjami danych binarnymi/tekstowymi (uu, base64, binhex) base64 enkoder/dekoder dla MIME Base16, Base32, Base64 binhex enkoder/dekoder dla binhex4 uu enkoder/dekoder dla uuencode quopri enkoder/dekoder danych w formacie MIME quoted-printable 16

Moduły do baz danych anydbm (dbm w Python 3+) generyczny moduł obsługi baz danych z interfejsem dbm: dbhash interfejs do baz Berkeley DB dumbdbm przenośna implementacja interfejsu dbm gdbm interfejs do baz dbm GNU DB-API 2.0 specyfikacja interfejsu Pythona do baz danych (http://www.python.org/dev/peps/pep-0249); sterowniki do baz danych: ODBC, ADO, IBM DB2, Firebird, Informix, Ingres, MySQL, Oracle, PostgreSQL, SAP DB, MS SQL Server, Sybase sqlite3 funkcjonalność bazy danych SQLite 17

Bazy danych typy Relacyjne (RDBMS) Obiektowe Kartotekowe (ISAM Indexed Sequential Access Method) DB-style 18

Pojęcia baz danych Baza danych to zbiór danych zapisanych w ściśle określony sposób w strukturach odpowiadających założonemu modelowi danych (potocznie: dane + system zarządzania/oprogramowanie) Model danych to zestaw zasad/reguł wg. których opisywane/pamiętane są dane Schema to opis/struktura opisująca konkretną kolekcję danych przy pomocy danego modelu danych Relacyjny model danych a obecnie najpowszechniejszy: Relacja: powiązanie pomiędzy tabelami; tabele z wierszami (rekordami), rekordy z polami Każda relacja posiada schema, która opisuje strukturę tabel i zależności 19

DBMS Data Base Management Systems System Bazy danych Aplikacja DBMS Aplikacja Aplikacja Schemat Baza danych 20

Transakcje ACID Transakcja sekwencja operacji na bazie danych: odczyt/modyfikacja/zapis Właściwość ACID transakcji: Atomicity atomowość operacji (tzw. wszystkoalbo-nic); Consistent spójność stanu bazy danych Isolation izolacja równolegle zleconych transakcji Durability trwałość rezultatu transakcji (nawet w wypadku padu DBMS) 21

SQL Structured Query Language DDL: Data Definition Language Używany do tworzenia i zarządzania strukturami bazy danych (tabele) DCL: Data Control Language Używany do określania praw dostępu DML: Data Manipulation Language Używany do dostępu do danych do bazy danych 22

SQL c.d. DDL: Data Definition Language CREATE TABLE employee (id serial NOT NULL, name varchar(50), address varchar(50), CONSTRAINT id" PRIMARY KEY (id)); DCL: Data Control Language GRANT SELECT, UPDATE (name, address) ON employee TO steve DML: Data Manipulation Language SELECT name, address FROM employee ORDER BY name 23

anydbm import anydbm # Open database, creating it if necessary db = anydbm.open('cache', 'c') # Record some values db['www.python.org'] = 'Python Website' db['www.cnn.com'] = 'Cable News Network' # Loop through contents. # Other dict methods:.keys(),.values() also work for k, v in db.iteritems(): print k, '\t', v db.close() # Close when done 24

SQLite http://www.sqlite.org Zero confguration nie wymaga administratora Przenośność: Windows, Linux, OS X, Solaris, HPUX, AIX; architektury 16, 32, 64-bit Kompaktowa małe wymagania pamięciowe W formie biblioteki (nie posiada procesu serwera) Open source (GPL) Ograniczenia: lokalna brak dostępu sieciowego jeden zapis w jednym czasie 25

EX Import danych z CSV do SQLite3 DB SQL Wczytać przykładowy plik CSV o nazwie data.csv Utworzyć bazę i załadować do niej dane 26

Moduły do obsługi wybranych formatów csv obsługa plików w formacie CSV (wbudowany) h5py obsługa plików w formacie HDF5 (http://h5py.googlecode.com) 27

Pliki CSV moduł CSV csv.reader(csvfile[, dialect='excel'][, fmtparam]) zwraca obiekt typu reader dla pliku CSV. import csv cr = csv.reader(open('plik.csv'), delimiter=',', quotechar= ') for row in cr: print ':'.join(row) 28

CSV z obsługą błędów import csv, sys fn = "some.csv" reader = csv.reader(open(fn, "rb")) try: for row in reader: print row except csv.error, e: sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e)) 29

EX1 Odczyt pliku CSV Używając modułu CSV: Wczytać przykładowy plik CSV o nazwie test.csv Wyświetlić wszystkie elementy wiersz-po-wierszu i kolumna-po-kolumnie z informacją z nagłówka 30

EX2 Konwersja separatorów Używając modułu CSV: Wczytać przykładowy plik CSV o nazwie test.csv Przekonwertować separatory na \t (tab) Zapisać rezultat do pliku ttest.csv 31

HDF5 Hierarchical Data Format (HDF, HDF4, HDF5 ) określa format oraz zestaw bibliotek do zachowywania i manipulowania BARDZO DUŻYMI zestawami danych numerycznych Oryginalnie opracowany w National Center for Supercomputing Applications, obecnie rozwijany i wspierany przez organizację non-profit The HDF Group (http://www.hdfgroup.com) OTWARTY!!! 32

HDF5 cechy Uniwersalny i hierarchiczny model danych pozwala na reprezentację złożonych struktur danych oraz metadanych (a la system plikowy w pliku) W pełni przenośny pomiędzy różnymi platformami Obsługa plików > 2GB OFICJALNE biblioteki dla: C, C++, Fortran 90, Java INNE biblioteki: Matlab (7+), Perl, Python Dostępne narzędzia do zarządzania, przeglądania, analizy i manipulacji 33

HDF5 struktura HDF5 jest hierarchiczny struktury: Groups & Datasets Dodatkowo Attributes mogą być przypisane do danego Dataset HDF5 Groups zawierają: Strukturę grupującą 0 lub więcej Groups lub Datasets Dodatkowe metadane HDF5 Datasets zawiera: Nagłówek danych Tablicę danych 34

Structures to organize objects Groups / (root) 3-D array /foo palette lat lon temp ---- ----- ----- 12 23 3.1 15 24 4.2 17 21 3.6 Table Raster image Datasets Raster image 2-D array 35

HDF5 Dataset Klasy informacji w nagłówku Dataset: Nazwa Datasetu string ASCII Typ danych: Atomowe np. integer, float Złożone struktury Przestrzeń danych określa liczbę wymiarów Datasetu (nielimitowana) Układ Datasetu: Ciągły (domyślny) Blokowy w równych kawałkach zapamiętywanych w różnych częściach pliku (w celu optymalizacji I/O) 36

HDF5 Dataset Rank 3 Metadata Dataspace Dimensions Dim_1 = 4 Dim_2 = 5 Dim_3 = 7 Data Datatype Integer Properties Chunked Compressed (optional) Attributes Time = 32.4 Pressure = 987 Temp = 56 Na podstawie:introduction to HDF5 by Barbara Jones, The HDF Group, The 13th HDF & HDF-EOS Workshop, November 3-5, 2009 37

HDF5 typy danych 38

HDF5 Attributes Attributes małe nazwane Datasety związane z głównymi Datasets, Groups lub nazwanymi typami danych Używane do opisu danych (metadane) Attribute składają się z: Nazwy Wartości Attributes są pamiętane w nagłówkach obiektów, których dotyczą 39

HDFView przeglądarka HDF5 40

HDF5 i Matlab Domyślny format plików MAT od wersji 7.3+ Funkcje wysokiego poziomu zapis/odczyt plików MAT (workspace) Funkcje niskiego poziomu (300 funkcji) bezpośredni dostęp do biblioteki C API Patrz: MATLABR 7 Programming Fundamentals 41

HDF5-Matlab funkcje wysokiego poziomu hdf5info hdf5read hdf5write 42

hdf5info fileinfo = hdf5info(filename) fileinfo = hdf5info(...,'readattributes',bool) [...] = hdf5info(..., 'V71Dimensions', BOOL) Przykład: fileinfo = hdf5info('example.h5') fileinfo = Filename: 'example.h5' LibVersion: '1.8.3' Offset: 0 FileSize: 8172 GroupHierarchy: [1x1 struct] 43

hdf5read data = hdf5read(filename,datasetname) attr = hdf5read(filename,attributename) [data, attr] = hdf5read(...,'readattributes',bool) data = hdf5read(hinfo) [...] = hdf5read(..., 'V71Dimensions', BOOL) 44

HDF5 i Python h5py (http://h5py.googlecode.com) NumPy (http://new.scipy.org) Test: >>> import h5py.tests >>> h5py.tests.runtests() 45

EX: hdf5 Konwersja pliku tekstowego do HDF5 Skrypt T2Hconverter.py służy do konwersji pliku tekstowego (TXT), z danymi przykładowymi, do formatu HDF5 Jako wynik otrzymujemy plik HDF5 (H5) o nazwie identycznej z nazwą pliku danych T2Hconverter [nazwa pliku danych] 46

Tekstowe dane wejściowe ------- listing pliku dane.txt ----------------------------------------------- ; Przykładowy plik z danymi pomiarowymi. ; Średnik na początku linii oznacza komentarz ; Format danych: ; Czas [s] (float), Temperatura [st. C] (float) 0,25.6 5,27.3 10,29.1 15,30.7 20,31.2 25,34.5 30,42.2 35,37.5 40,32.0 45,27.6 50,25.3 55,25.1 60,25.0 -------- koniec listingu ------------------------------------------------------ 47

Struktura pliku wynikowego HDF5 /ROOT ----Header - ConversionDate (string) data i czas konwersji - Description (string) opis pliku - ScriptVersion (pomnożona x10) (int) wersja skryptu zapisu ----Data - Values (float) macierz danych ( rząd 1 - czas, rząd 2 - temp ) 48

Skrypty dla Matlaba Skrypt "h5reader_example.m" odczytuje dane z pliku wejściowego w formacie HDF5 i wyświetla zawartość w oknie roboczym. Nazwa pliku wejściowego znajduję się w zmiennej FILE_NAME deklarowanej na początku skryptu 49