Plan podstawowe operacje we/wy

Podobne dokumenty
Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Język Python (2) Język Python (2) 1/36

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

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Trochę o plikach wsadowych (Windows)

Biblioteka standardowa - operacje wejścia/wyjścia

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Programowanie w językach

Wstęp do programowania

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Pliki. Informacje ogólne. Obsługa plików w języku C

Zaawansowany kurs języka Python

Informatyka 2015/16 wykład 9. Pliki Sterowanie przebiegiem programu cz. 2. Dr inż. Witold Nocoń (p. 230)

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

Funkcje zawarte w bibliotece < io.h >

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Funkcje zawarte w bibliotece < io.h >

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Pliki. Informacje ogólne. Obsługa plików w języku C

Znaki globalne w Linuxie

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Podstawy i języki programowania

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Strumienie, pliki. Sortowanie. Wyjątki.

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Python. Wprowadzenie. Jolanta Bachan

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

System operacyjny Linux

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Programowanie Procedurale. Pliki w języku C++

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

3. Biblioteka standardowa Pythona

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Pliki. Operacje na plikach w Pascalu

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Kurs rozszerzony języka Python

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Pliki wykład 2. Dorota Pylak

trainxx tramxx

Języki programowania imperatywnego

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

Linux: System Plików

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Podstawy programowania w języku C++

Programowanie w Sieci Internet. Python: Operacje z plikami oraz obsługa wyjątków

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Zaawansowany kurs języka Python

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Plan Przegląd podstawowych typów i konstrukcji języka

APEK MeasureInWeb program komunikacyjny do systemów pomiarowych.

OPERACJE NA PLIKACH. Podstawowe pojęcia:

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

Technologie informacyjne: Excel i Python

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Pracownia komputerowa. Dariusz wardecki, wyk II

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

WEJŚCIE/WYJŚCIE HASKELL ŁUKASZ PAWLAK DARIUSZ KRYSIAK

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Wstęp do Informatyki dla bioinformatyków

Podstawy programowania w Pythonie

Dokowanie molekularne. Andrzej Bąk

Pobieranie argumentów wiersza polecenia

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Konsola i interpreter poleceń

System operacyjny Linux

Podstawy bioinformatyki 2017/18

Powłoka interpreter poleceń systemu UNIX

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Narzędzia informatyczne w językoznawstwie

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

PyX jest pakietem Pythona do grafiki wektorowej. Pozawala zatem tworzyd pliki EPS oraz PDF.

Programowanie obiektowe

Część 4 życie programu

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Transkrypt:

Plan podstawowe operacje we/wy standardowe wejście czytanie/pisanie do plików, dla wersji starszych niż 2.6 ustawienie zmiennych środowiskowych czytanie/pisanie z użyciem konstrukcji with serializacja obiektów, pickle i cpickle pliki konfiguracyjne, ConfigParser gzip i tar pakiet os.path - standardowe operacje na ścieżkach pakiet os - funkcje systemowe popen, subprocess Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 1 / 22

standardowe wejście czytanie ze standardowego wejścia Do pobierania argumentów, odpowiednik cin, służy funkcja raw input([prompt]),czyta linię ze standardowego wejścia sys.stdin, sys.std.out i sys.stderr - strumienie wejścia, wyjścia i błędu przekazywanie argumentów do programu argumenty programu dostępna jest po imporcie listy argv z pakietu sys argv[0] to nazwa skryptu Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 2 / 22

standardowe wejście przykład #!/usr/bin/python # -*- coding: utf-8 -*- from sys import argv, stdin, stdout print argv[0] print argv choice = raw_input( Czy na pewno chcesz zakończyć działanie programu?\n ) print choice print Spróbuj jeszcze raz :) choice = stdin.readline() if choice[:-1]== tak : stdout.write( choice[:-1] + :)\n ) stdout.flush() Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 3 / 22

ustawienie zmiennych środowiskowych ustawienie Python 2.6 jako wersji domyślnej domyślnie będziemy używać powłoki bash dodać w.bash profile ścieżkę do katalogu zawierającego instalację Pythona 2.6 export PATH = /opt/python/python2.6/bin/ : $PATH source.bash profile sprawdzić domyślną wersję pythona, python --version Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 4 / 22

czytanie/pisanie do plików otwieranie plików - funkcja open( filename, mode) uwagi zwraca obiekt typu plik argument 1 - napis nazwa( ścieżka względna lub bezwzględna) pliku do otworzenia mode - tryb otwarcia, możliwe są r, w i a w systemie Windows rozróżniane są pliki tekstowe i binarne, pojawia się więc dodatkowa litera dla trybu - b zamknięcie pliku ( zakończenie wszystkich rozpoczętych operacji ) przy pomocy od wersji 2.6 do otwierania plików wykorzystuje się wyrażenie with, nie trzeba martwić się zamykaniem pliku można również do operacji na plikach używać funkcji systemowych z modułu os Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 5 / 22

czytanie/pisanie do plików pliki - przegląd funkcji read( [size] ) - zwraca określoną ilość bajtów z pliku, albo cały plik readline, readlines - zwracają jedną albo wszystkie linie tell - zwraca pozycję w pliku seek - skok do określonej pozycji w pliku write, writelines - zapis napisu/sekwencji napisów do pliku Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 6 / 22

czytanie/pisanie do plików zapis pliku wejściowego z odwróceniem kolejności znaków w każdej z linii #!/usr/bin/python # -*- coding: utf-8 -*- from sys import argv input_file = argv[1] output_file = argv[2] # plik wejsciowy, wczytanie zawartości with open(input_file, r ) as f: input_lines = f.readlines() # funkcja do odwracania napisow def rev(x): return x[::-1] #zapis do pliku wyjsciowego with open(output_file, w ) as f: for line in input_lines: f.write( rev(line[:-1]) + \n ) Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 7 / 22

przykład -czytanie/pisanie do plików Plik.csv - zamiast awk i owl :) weźmy dowolny wielomian n stopnia (np 3) wygenerujmy w przedziale (0,1000) ze skokiem 0.5 wartości dla każdego z członów wielomianu osobno wygenerowane wartości zapisać do pliku w postaci ( lp x A B*x C*x*x... ) z tak wygenerowanego pliku, wymnożyć wartości 2 i 4 kolumny, dla co trzeciej linii Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 8 / 22

serializacja obiektów, pickle i cpickle cpickle jest szybszą(do 1000x) zaimplementowaną w C wersją pickle można serializować typy proste, kolekcje, klasy i funkcje zdefiniowane w najwyższym poziomie modułu dostępne są dwa tryby zapisu/odczytu z/do pliku i z/do napisu - funkcje dump, dumps, load, loads rozmiar serializowanych obiektów zależy od wybranego protokołu serializacji, jest on parametrem powyżej wspomnianych funkcji, generalnie im jest wyższy tym rozmiar danych jest mniejszy, najwyższym protokołem jest HIGHEST PROTOCOL Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 9 / 22

serializacja obiektów, pickle i cpickle cpickle jest szybszą(do 1000x) zaimplementowaną w C wersją pickle można serializować typy proste, kolekcje, klasy i funkcje zdefiniowane w najwyższym poziomie modułu dostępne są dwa tryby zapisu/odczytu z/do pliku i z/do napisu - funkcje dump, dumps, load, loads rozmiar serializowanych obiektów zależy od wybranego protokołu serializacji, jest on parametrem powyżej wspomnianych funkcji, generalnie im jest wyższy tym rozmiar danych jest mniejszy, najwyższym protokołem jest HIGHEST PROTOCOL Why Python Pickle is Insecure - http://nadiana.com/python-pickle-insecure Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 9 / 22

pliki konfiguracyjne, ConfigParser moduł ConfigParser prosta i zautomatyzowana obsługa plików konfiguracyjnych pliki dzielone są na sekcje [section] sekcje zawierają opcje w postaci par key=value, : jest również akceptowalny jako separator ConfigParser - przegląd funkcji read, write - odczyt zapis konfiguracji items( sections ) - zwraca listę par ( k, v ) zbudowaną na podstawie wszystkich opcji danej sekcji get( section, option ) - zwraca wartość danej opcji set( section, option, value ) - ustawia wartość value dla opcji w danej sekcji Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 10 / 22

pliki konfiguracyjne - przykłady plik konfiguracyjny [manager] whoami : server [server] threads: 8 memory_gb = 12 thread_params: 2, 4, 6 prefix:server_ input_data : %(prefix)sdata_in input_metadata : %(prefix)smetadata logs = %(prefix)slogs directory = pliki output = %(directory)s/%(prefix)soutfile Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 11 / 22

pliki konfiguracyjne - przykłady plik konfiguracyjny - operacje #!/usr/bin/python # -*- coding: utf-8 -*- from sys import argv from ConfigParser import SafeConfigParser # parse configuration config = SafeConfigParser() config.read( argv[1] ) whoami = config.get( manager, whoami ) section_items, section_dict = config.items(whoami), {} # wstawianie do słownika listy par section_dict.update( section_items ) #dodanie sekcji i opcji new_section, new_option, new_value = section, option, value config.add_section(new_section) config.set( new_section, new_option, new_value ) # zapis with open( section_dict[ output ], w ) as f: config.write( f ) Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 12 / 22

gzip i tar #!/usr/bin/python # -*- coding: utf-8 -*- from sys import argv from gzip import open as gzip_open #compress with open( argv[1] ) as in_f: # compresslevel od 1 do 9, domyślnie 9 gzip_f = gzip_open( argv[2] +.gz, w, compresslevel=5 ) gzip_f.writelines( in_f.readlines() ) gzip_f.close() # decompress f = gzip_open( argv[2] +.gz, r ) with open( argv[2] +.back, w ) as back_f: back_f.write( f.read() ) f.close() # compare outputs from os import system system( diff + argv[1] + + argv[2]+.back ) Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 13 / 22

gzip i tar archiwa tar Wbudowaną obsługę archiwów tar zapewnia pakiet tarfile Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 14 / 22

os.path - operacje na ścieżkach przegląd funkcjonalności pakietu isdir, isfile - sprawdzenie czy ścieżka jest plikiem lub katalogiem join - dodaje element do ścieżki split - rozdziela ścieżkę, tworzy parę (prefix, ostatni element) walk(path, visit, arg) - służy do rekurencyjnego przechodzenia przez drzewo katalogów z jednoczesnym wywołaniem funkcji visit Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 15 / 22

os.path - operacje na ścieżkach przykład - znalezienie wszystkich plików w drzewie z rozszerzeniem pdf #!/usr/bin/python # -*- coding: utf-8 -*- from os.path import walk def pick_files(result, dirname, file_names, extension= pdf ): # file_names is a result of os.listdir( dirname ) for file in file_names: # check if this is a pdf file if file.find( extension ) > 0: result.append( ( dirname, file ) ) # walk through tree from sys import argv dir = argv[1] pdf_list = [] walk( dir, pick_files, pdf_list) for entry in pdf_list: print entry Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 16 / 22

pakiet os - wykorzystanie funkcji systemowych operacje na plikach i ścieżkach - mkdir, chown, rename... ustawianie zmiennych środowiskowych - getenv, putenv zarządzanie procesami - kill, fork... Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 17 / 22

popen, subprocess - zarządzanie procesami popen pakiet popen pozwala na mnożenie osobnych procesów i podłączenie się do ich strumieni wejścia, wyjścia i błędu subprocess Zapewnia większa kontrolę nad sposobem wywołania pod-procesu, pozwala na jawne określenie strumieni, katalogu roboczego,... Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 18 / 22

popen, subprocess - zarządzanie procesami subprocess - przykład Chcielibyśmy uruchomić skrypt #!/usr/bin/python # -*- coding: utf-8 -*- from sys import stdin, stdout, argv stdout.write( echo.py: starting\n ) stdout.flush() multi = int( argv[1] ) while True: next_line = stdin.readline() if not next_line: break value = int( next_line.strip() ) * multi stdout.write( %d\n %value) stdout.flush() stdout.write( echo.py: exiting\n ) stdout.flush() Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 19 / 22

popen, subprocess - zarządzanie procesami subprocess - przykład, cd. Komunikacja pomiędzy procesami za pomocą stdin i stdout #!/usr/bin/python # -*- coding: utf-8 -*- from subprocess import Popen, PIPE import subprocess przykład oparty na http://www.doughellmann.com/pymotw/subprocess/ command = [ pliki/echo.py, 2 ] zdefiniowanie stdin i sdtout jako obiektow PIPE pozwala na komunikowanie sie z procesem proc = subprocess.popen(command, stdin=pipe, stdout=pipe ) print proc.stdout.readline().strip() value, i = 1, 1 while value<10**6: proc.stdin.write( %d\n % value) value = int( proc.stdout.readline().strip() ) print i, value i+=1 communicate, czeka aż proces zakończy działanie print proc.communicate() Łukasz Ligowski, Sławomir Walkowiak (ICM UW) Podstawy Pythona - operacje wejścia/wyjścia 22 lutego 2011 20 / 22