Języki skryptowe Python

Wielkość: px
Rozpocząć pokaz od strony:

Download "Języki skryptowe Python"

Transkrypt

1 Języki skryptowe Python Wykład 6 Moduły i pliki Janusz Szwabiński Plan wykładu: Moduły i ich importowanie Tworzenie własnych modułów Pliki odczyt i zapis Manipulowanie plikami i katalogami

2 Moduły i ich importowanie skrypty w Pythonie lub kod skompilowany np. w C/C++ najczęściej zawierają definicje obiektów do wielokrotnego użycia definicje w nich zawarte mogą być w każdej chwili dostępne w interpreterze lub innym skrypcie do załadowania modułu służy instrukcja import dodatkowo wbudowana funkcja import pozwala na załadowanie modułu, którego nazwa została określona w trakcie wykonywania programu moduł można przeładować w locie (np. po dokonaniu w nim zmian) poleceniem reload moduły to przykłady obiektów typy singleton. tzn. tylko jedna instancja konkretnego modułu jest załadowana do pamięci, i jest ona globalnie dostępna moduły mają własne przestrzenie nazw Kilka słów o przestrzeniach nazw Przestrzeń nazw (nie tylko) w Pythonie to abstrakcyjna przestrzeń, w której dowolne słowo może być jednoznacznie przypisane do reprezentowanego przez nie obiektu (funkcji, zmiennej itp.): wskazanie obiektu poprzez nazwę większość przestrzeni nazw zaimplementowana w postaci słowników (może się zmienić w przyszłości) trzy ważne przestrzenie nazw: zbiór nazw wbudowanych nazwy lokalne (podczas wywołania funkcji) nazwy globalne nie istnieje związek pomiędzy nazwami z różnych przestrzeni nazw przestrzenie nazw tworzone są w różnych chwilach i są aktywne przez różny czas przestrzeń zawierająca nazwy wbudowane tworzona jest podczas pracy Pythona i nigdy nie jest usuwana przestrzeń nazw globalnych modułu tworzona jest podczas wczytywania jego definicji i jest aktywna do chwili zakończenia pracy interpretera instrukcje wykonywane przez szczytowe wywołania interpretera, zarówno czytane z pliku jak i wprowadzane interaktywnie, są częścią modułu o nazwie main nazwy wbudowane przechowywane są w module builtin przestrzeń nazw lokalnych funkcji tworzona jest w momencie jej wywołania i niszczona, gdy następuje powrót z funkcji (również przez nieobsłużony wyjątek) wywołanie rekurencyjne powoduje tworzenie za każdym razem nowej przestrzeni nazw lokalnych zasięg jest tekstowym obszarem programu, w którym przestrzeń nazw jest wprost osiągalna, tzn. niekwalifikowane odniesienia do nazwy znajdują ją w obowiązującej przestrzeni nazw. Dla przykładu, jeżeli w celu wyliczenia pierwiastka kwadratowego z liczby 10 muszę wykonać polecenie math.sqrt(10)to funkcja sqrtnie jest dostępna bezpośrednio, czyli znajduje się poza zasięgiem aktualnej przestrzeni nazw. w każdym momencie wykonania programu używa się trzech zagnieżdżonych zasięgów nazw: najbardziej zagnieżdżony, nazwy lokalne środkowy, zawiera aktualne nazwy globalne modułu zewnętrzny, jest zasięgiem nazw wbudowanych przypisanie zawsze zachodzi w najbardziej zagnieżdżonym zasięgu przypisania nie powodują kopiowania danych, przywiązują jedynie nazwy do obiektów

3 In [1]: print dir( builtin ) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseExcepti on', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFErro r', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingP ointerror', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportErro r', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'Non e', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowErr or', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'T ypeerror', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncode Error', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', ' IPYT HON ', ' IPYTHON active', ' debug ', ' doc ', ' import ', ' name ', ' package ', 'abs', 'all', 'any', 'apply', 'basestrin g', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'ch r', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyrigh t', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'dreload', 'enume rate', 'eval', 'execfile', 'file', 'filter', 'float', 'format', 'fro zenset', 'get_ipython', 'getattr', 'globals', 'hasattr', 'hash', 'he lp', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclas s', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'ma x', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'po w', 'print', 'property', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 's taticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'uni code', 'vars', 'xrange', 'zip'] Importowanie modułów Do załadowania modułu służy funkcja import. Jego nazwa trafia wówczas do bieżącej tablicy symboli. Przez tę nazwę odnosimy się do elementów modułu: In [2]: import math print math.sqrt(2) Funkcja import umożliwia również zaimportowanie wybranych elementów do aktualnej tablicy symboli. Możliwe są wówczas niekwalifikowane odniesienia do ich nazw: In [3]: from math import sqrt as SQ print SQ(2) Istnieje również możliwość załadowania całego modułu do bieżącej tablicy symboli, jednak powinniśmy go unikać, ponieważ może to prowadzić do niekontrolowanego nadpisania niektórych funkcji:

4 In [4]: from math import * print sqrt(2) Jeżeli używamy jej w skrypcie albo innym module, w dobrym zwyczaju załadowanie wszystkich potrzebnym modułów na początku pliku źródłowego. Tworzenie własnych modułów Rozważmy najpierw dwie funkcje : In [5]: def fib(n): # wypisz na ekranie wyrazy szeregu Fibonacciego mniej sze od n a, b = 0, 1 while b < n: print b, a, b = b, a+b def fib2(n): # zwróć listę wyrazów szeregu Fibonacciego mniejszych o d n result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result In [6]: fib(10) In [7]: fib2(10) Out[7]: [1, 1, 2, 3, 5, 8] Ponieważ funkcje te mogą nam się jeszcze przydać, zapiszmy je do pliku fibo.py:

5 In [108]: %%writefile fibo.py def fib(n): a, b = 0, 1 while b < n: print b, a, b = b, a+b def fib2(n): result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result Writing fibo.py Ten plik to nic innego jak nasz pierwszy (dość prosty) moduł: In [8]: import fibo dir(fibo) Out[8]: [' builtins ', ' doc ', ' file ', ' name ', ' package ', 'fib', 'fib2'] In [9]: fibo.fib(10) In [10]: fibo.fib2(10) Out[10]: [1, 1, 2, 3, 5, 8] Moduł ten możemy nieco "podrasować", dodając m.in. dokumentację:

6 In [117]: %%writefile fibo.py # -*- coding: utf-8 -*- """Funkcje generujące wyrazy szeregu Fibonacciego""" def fib(n): """Wyświetl wyrazy szeregu mniejsze od n na ekranie""" a, b = 0, 1 while b < n: print b, a, b = b, a+b def fib2(n): """Zwróć listę wyrazów szeregu mniejszych od n""" result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result Overwriting fibo.py In [11]: reload(fibo) Out[11]: <module 'fibo' from 'fibo.pyc'> In [12]: help(fibo) Help on module fibo: NAME fibo - Funkcje generujące wyrazy szeregu Fibonacciego FILE /home/szwabin/dropbox/zajęcia/pythonintro/6_moduly_i_pliki/fib o.py FUNCTIONS fib(n) Wyświetl wyrazy szeregu Fibonacciego mniejsze od n fib2(n) Zwróć listę wyrazów szeregu Fibonacciego mniejszych od n Częstą praktyką jest dodawanie do modułu kodu, który zostanie wykonany w momencie uruchomienia modułu jako samodzielnego programu. Zrealizujemy to w następujący sposób (argument -aoznacza, że dodajemy do istniejącego pliku):

7 In [129]: %%writefile -a fibo.py def test(): """Funkcja testująca działanie modułu""" assert(fib2(4)[-1]==3) print "Test zakończony poprawnie" if name == ' main ': test() Appending to fibo.py Zmienna name zawiera z reguły nazwę modułu. Wyjątkiem jest sytuacja, w której moduł uruchomiony jest jako samodzielny program wówczas ta zmienna odnosi się do napisu main. Sprawdźmy, jak to działa. Po przeładowaniu modułu pojawiła się dodatkowa funkcja: In [13]: reload(fibo) Out[13]: <module 'fibo' from 'fibo.py'> In [14]: dir(fibo) Out[14]: [' builtins ', ' doc ', ' file ', ' name ', ' package ', 'fib', 'fib2', 'test'] Możemy ją oczywiście wywołać ręcznie: In [15]: fibo.test() Test zakończony poprawnie Przy uruchomieniu modułu jako skryptu, zostanie ona uruchomiona automatycznie: In [16]:!python fibo.py Test zakończony poprawnie Ścieżka wyszukiwania modułów gdy moduł fibojest importowany, interpreter Pythona poszukuje pliku fibo.pyw katalogu bieżącym, a następnie w katalogach określonych w zmiennej środowiskowej PYTHONPATH jeśli zmienna PYTHONPATHnie jest określona, lub modułu nie ma w katalogach zdefiniowanych w zmiennej, interpreter kontynuuje poszukiwanie w ścieżkach ustalonych w momencie instalacji (pod Linuksem najczęściej /usr/lib/pythonlub /usr/local/lib/python) na samym końcu przeszukiwane są katalogi umieszczone w zmiennej sys.path

8 In [17]: import sys print sys.path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gn u', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/us r/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-package s', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-pac kages/pilcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/us r/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubunt u-sso-client', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2', '/us r/lib/python2.7/dist-packages/ipython/extensions'] In [18]:!echo $PYTHONPATH Rozszerzanie ścieżki wyszukiwania Pod Linuksem dodajemy do pliku.bashrcw naszym katalogu domowym następujący kod: PYTHONPATH=$PYTHONPATH:$HOME/MyPython export PYTHONPATH Ze wzgledu na legendarną przyjazność systemu operacyjnego dla użytkownika, użytkownicy Windowsa radzą sobie sami :) Pliki odczyt i zapis Wbudowana funkcja openotwiera plik i tworzy odpowiadający mu obiekt. Jej składnia jest następująca: open(nazwa_pliku,tryb) pierwszy argument to ciąg znaków będący nazwą pliku drugi argument to ciąg znaków sposób pracy z plikiem 'r' tylko do odczytu (wartość domyślna) 'w' tylko do zapisu (istniejący plik o podanej nazwie zostanie nadpisany!) 'a' dopisywanie do istniejącego pliku 'r+' do odczytu i zapisu 'rb' tylko do odczytu w trybie binarnym 'wb' tylko do zapisu w trybie binarnym 'r+b' do odczytu i zapisu w trybie binarnym In [19]: f = open('workfile','w') print f <open file 'workfile', mode 'w' at 0x7f7a9dec4420>

9 Pracując z obiektami plików, mamy do dyspozycji następujące metody: read() wczytuje całą zawartość pliku i przekształca ją w napis (uwaga na duże pliki!) read(n) wczytuje nbajtów z pliku readline() czyta pojedynczy wiersz z pliku readlines() zwraca listę, której elementami są łańcuchy znaków reprezentujące poszczególne wiersze z pliku (uwaga na duże pliki!) write(napis) zapisuje łańcuch znaków do pliku tell() bieżąca pozycja w pliku mierzona w bajtach seek(k,p) zmienia pozycję w pliku dodając kbajtów do punktu odniesienia p: p=0 początek pliku p=1 pozycja bieżąca p=2 koniec pliku close() zamknięcie pliku In [20]: f.close() print f <closed file 'workfile', mode 'w' at 0x7f7a9dec4420> Otwórzmy powyższy plik raz jeszcze, tym razem w trybie do odczytu i zapisu: In [21]: f = open("workfile",'r+') Sprawdzamy jego zawartość: In [22]: f.read() #powinien być pusty Out[22]: '' Wpisujemy coś do pliku: In [23]: f.write(" abcdef") Odczytujemy pozycję w pliku: In [24]: f.tell() Out[24]: 16 Przechodzimy do 5 bajtu w pliku i odczytujemy kolejny jeden bajt: In [25]: f.seek(5) f.read(1) Out[25]: '5' Ponownie odczytujemy pozycję:

10 In [26]: f.tell() Out[26]: 6 Trzeci bajt od końca: In [27]: f.seek(-3,2) f.read(1) Out[27]: 'd' Wracamy na początek i odczytujemy dwa kolejne bajty: In [28]: f.seek(0) f.read(2) Out[28]: '01' Wczytujemy cały wiersz: In [29]: f.seek(0) f.readline() Out[29]: ' abcdef' Próba odczytu po zamknięciu pliku spowoduje błąd: In [30]: f.close() f.readline() ValueError Traceback (most recent cal l last) <ipython-input-30-02a0f4f4da9c> in <module>() 1 f.close() ----> 2 f.readline() ValueError: I/O operation on closed file Z życia (naukowców) wzięte Rozważmy plik będący wynikiem numerycznego rozwiązania równań ruchu oscylatora harmonicznego z tłumieniem:

11 In [71]:!head -20 osc_rk4.dat #osc_rk4.dat #oscylator harmoniczny z tlumieniem #i sila wymuszajaca #czas(s) polozenie(m) predkosc(m/s) Widzimy, że pierwsze 4 wiersze w pliku to komentarz, natomiast kolejne zawierają dane opisujące położenie i prędkość oscylatora w funkcji czasu, uporządkowane w 3 kolumnach. Naszym celem jest wczytanie tego pliku w Pythonie. Możliwość pierwsza lista wszystkich wierszy: In [73]: results = [] f = open("osc_rk4.dat","r") #wczytujemy wiersze, pomijamy komentarz lines = f.readlines()[4:] #zamykamy plik f.close() #wydobywamy dane z wczytanych ciągów znaków for line in lines: #dzielimy wiersz na pola fields = line.split() #zamieniamy napisy na liczby time = float(fields[0]) pos = float(fields[1]) vel = float(fields[2]) #dopisujemy do listy z wynikami all = (time,pos,vel) results.append(all) #sprawdzamy wynik for i in results[:5]: print i ( , , ) ( , , ) ( , , ) ( , , ) ( , , )

12 W przypadku bardzo dużych plików rozwiązanie to mocno obciąża pamięć, ponieważ cały plik musi być załadowany do pamięci operacyjnej komputera. Dlatego lepiej jest iterować po wierszach w pliku: In [74]: results = [] f = open("osc_rk4.dat","r") #iteracja po wierszach - w każdym kroku wczytywany tylko jeden wiers z for line in f: #ignorujemy komentarz if line[0] == "#": continue #wydobycie danych tym razem bardziej "pythonowo" all = [float(val) for val in line.split()] results.append(all) #zamykamy plik f.close() #sprawdzamy wynik for i in results[:5]: print i [ , , ] [ , , ] [ , , ] [ , , ] [ , , ] Iterację po wierszach można również wykonać w wersji tylko dla wtajemniczonych: In [75]: results3 = [[float(val) for val in l.split()] for l in open("osc_rk4.dat","r") if l[0]!= "#"] for i in results3[:5]: print i [ , , ] [ , , ] [ , , ] [ , , ] [ , , ] Inna możliwość to pętla while:

13 In [76]: f = open("osc_rk4.dat","r") while 1: line = f.readline() if not line: break if line[0] == "#": print line f.close() #osc_rk4.dat #oscylator harmoniczny z tlumieniem #i sila wymuszajaca #czas(s) polozenie(m) predkosc(m/s) Do dobrych praktyk należy jednak używanie polecenia withprzy pracy z plikami. Jego zaletą jest to, że odczytywany plik zostanie poprawnie (automatycznie) zamknięty albo po zakończeniu odczytu, albo po wystąpieniu wyjątku: In [78]: with open('osc_rk4.dat') as f: results4 = [[float(val) for val in l.split()] for l in f i f l[0]!= "#"] for i in results4[:5]: print i [ , , ] [ , , ] [ , , ] [ , , ] [ , , ] Ponieważ plik zostaje otworzony w obrębie bloku rozpoczętego poleceniem with, należy do zasięgu lokalnego. Tuż przed wyjściem z tego bloku interpreter zwalnia zasoby zajęte przez zmienne lokalne, a zatem powinien zamknąć plik. Sprawdźmy, czy jest tak rzeczywiście: In [79]: print f <closed file 'osc_rk4.dat', mode 'r' at 0x7f > Zapisywanie do pliku

14 In [80]: #otwieramy plik do zapisu of = open("dane.dat","w") #dobrym zwyczajem jest wpisać do niego jakiś komentarz of.write("#dane.dat\n") of.write("#oscylator harmoniczny z tlumieniem i sila wym.\n") of.write("#czas polozenie predkosc\n") #zapisujemy wyniki z listy results for l in results: of.write("%5.2f %5.2f %5.2f\n"%(l[0],l[1],l[2])) #zamykamy plik of.close() Sprawdźmy zawartość pliku dane.dat(w konsoli uniksowej): In [81]:!head -10 dane.dat #dane.dat #oscylator harmoniczny z tlumieniem i sila wym. #czas polozenie predkosc

15 Zauważmy, że writew pętli forw powyższym przykładzie zapisuje do pliku cały wiersz z danymi na raz. Wiersz ten utworzony jest z szablonu, czyli łancucha znaków zawierającego pewne symbole. W ich miejsce wstawiane są przy pomocy operatora %dane liczbowe z krotki będącej prawym argumentem tego operatora. Możliwe jest następujące formatowanie: %d liczba całkowita %5d liczba całkowita w polu o szerokosci 5 znaków %-5d j.w, ale wyrównana do lewej %05d j.w., ale uzupełniona zerami od lewej (np ) %g liczba zmiennoprzecinkowa w formacie %f lub %e %e liczba zmiennoprzecinkowa w formacie naukowym (np e + 00) %E j.w., ale wykładnik oddzielony litera E %G liczba zmiennoprzecinkowa w formacie %f lub %E %11.3e liczba zmiennoprzecinkowa w formacie %e z trzema cyframi dziesiętnymi w polu o szerokości 11 znaków %.3e liczba zmiennoprzecinkowa w formacie %e z trzema cyframi dziesiętnymi w polu o najmniejszej możliwej szerokości %5.1f liczba zmiennoprzecinkowa zapisana w notacji dziesiętnej z jedną cyfrą dziesiętną w polu o szerokości 5 znaków %.3f j.w., ale z trzema liczbami dziesiętnymi w polu o możliwie najmniejszej szerokości %s ciąg znaków %-20s ciąg znaków wyrównany do lewej w polu o szerokości 20 znaków Nowszy sposób formatowania łańcuchów znaków Powyższy sposób formatowania łańcuchów znaków jest bardzo popularny, ponieważ przypomina on styl używany przez funkcję sprintfw języku C. Jednak uważany jest on za nieco przestarzały i obecnie zaleca się stosowanie metody formatobiektu str. W porównaniu ze starą składnią, tutaj pojawiają się nawiasy klamrowe i zamiast znaku %używany jest znak :. Np. '%03.2f'zostanie zastąpione przez '{:03.2f}'. Nowy sposób formatowania oferuje jednak szereg nowych możliwości: In [82]: print '{0}, {1}, {2}'.format('a', 'b', 'c') #wstawianie argumentów n a podstawie ich pozycji print '{}, {}, {}'.format('a', 'b', 'c') print '{2}, {1}, {0}'.format('a', 'b', 'c') a, b, c a, b, c c, b, a In [84]: print '{2},{1},{0}'.format(*'abc') ożna rozpakować print '{0}{1}{0}'.format('abra', 'cad') powtarzać # sekwencję w argumencie m # indeksy argumentów można c,b,a abracadabra

16 In [87]: #wartości wstawiane po kluczach print 'Współrzędne: {latitude}, {longitude}'.format(latitude='37.24 N', longitude=' w') coord = {'latitude': '37.24N', 'longitude': ' W'} print 'Współrzędne: {latitude}, {longitude}'.format(**coord) Współrzędne: 37.24N, W Współrzędne: 37.24N, W In [92]: #justowanie tekstu print '{:<30}'.format('left aligned') print '{:>30}'.format('right aligned') print '{:^30}'.format('centered') #jak wyżej, tylko z '*' jako znakiem wypełniającym print '{:*^30}'.format('centered') left aligned right aligned centered ***********centered*********** In [89]: print '{:+f}; {:+f}'.format(3.14, -3.14) #znak pojawia się zawsze print '{: f}; {: f}'.format(3.14, -3.14) #spacja w przypadku liczb dodatnich print '{:-f}; {:-f}'.format(3.14, -3.14) #pokazuje tylko minus ; ; ; In [90]: # możliwa jest konwersja w 'locie' print "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) int: 42; hex: 2a; oct: 52; bin: In [2]: '{:,}'.format( ) #przecinek jako separator między tysiącami Out[2]: '1,234,567,890' Więcej na temat metody format pod adresem ( Marynowanie danych czyli moduł cpickle napisy łatwo zapisuje się do i odczytuje z pliku liczby wymagają trochę pracy przy konwersji z i na łańcuch znaków jeszcze trudniej jest zapisać i odczytać złożone typy danych moduł cpicklepotrafi przekształcić prawie każdy złożony typ danych w napis ("marynowanie") taki napis można zapisać do pliku, przesłać przez sieć itp. można go również "odmarynować", czyli wydobyć z niego oryginalny obiekt standardowy sposób na uczynienie obiektów Pythona trwałymi warto dbać o to, aby tworzone typy danych dawały się łatwo "marynować"

17 In [93]: import cpickle as pickle In [94]: dir(pickle) Out[94]: ['BadPickleGet', 'HIGHEST_PROTOCOL', 'PickleError', 'Pickler', 'PicklingError', 'UnpickleableError', 'Unpickler', 'UnpicklingError', ' builtins ', ' doc ', ' name ', ' package ', ' version ', 'compatible_formats', 'dump', 'dumps', 'format_version', 'load', 'loads'] In [95]: help(pickle.dump) Help on built-in function dump in module cpickle: dump(...) dump(obj, file, protocol=0) -- Write an object in pickle format to the given file. See the Pickler docstring for the meaning of optional argument p roto. Przygotujmy jakieś dane do zapisania: In [96]: tel = {'Yoda' : 1111, 'Chewie' : 2222, 'Luke' : 3333} lis = range(5) l = 123 Zapisujemy je do pliku: In [97]: of = open("marynata","w") pickle.dump(tel,of) pickle.dump(lis,of) pickle.dump(l,of) of.close() Podglądnijmy zapisany plik:

18 In [98]:!cat marynata (dp1 S'Chewie' p2 I2222 ss'yoda' p3 I1111 ss'luke' p4 I3333 s.(lp1 I0 ai1 ai2 ai3 ai4 a.i123. Dane z pliku ładujemy w kolejności zapisania: In [99]: f = open("marynata","r") telefony = pickle.load(f) zakres = pickle.load(f) liczba = pickle.load(f) f.close() In [100]: print telefony print zakres print liczba {'Chewie': 2222, 'Yoda': 1111, 'Luke': 3333} [0, 1, 2, 3, 4] 123 Manipulowanie plikami i katalogami Funkcje potrzebne do operacji na plikach znajdziemy w module os: większość funkcji zaimplementowana w modułach specyficznych dla danej platformy (np. posix, nt) podczas ładowania oswybierany jest odpowiedni z nich operacje na plikach (zmiana nazwy i atrybutów, usuwanie) operacje na katalogach operacje na procesach In [1]: import os

19 Usuwanie plików Tworzymy najpierw jakiś plik do usunięcia: In [2]: f = open("testos.txt","w") f.write("jakiś test") f.close() Usunięcie pliku jest proste: In [3]: os.remove("testos.txt") Powtórzenie usunięcie wygeneruje znany już wyjątek: In [4]: os.remove("testos.txt") OSError Traceback (most recent cal l last) <ipython-input-4-a342e4040f74> in <module>() ----> 1 os.remove("testos.txt") OSError: [Errno 2] No such file or directory: 'testos.txt' Podczas pracy interaktywnej w interpreterze Pythona taki błąd nie stanowi oczywiście wielkiego problemu, ponieważ programista może na niego natychmiast zareagować. Jeśli jednak wyjątek pojawi się podczas wykonywania dłuższego skryptu, przerwie on jego działanie. Jest to oczywiście sytuacja niepożądana, dlatego do dobrych praktyk należy wyłapywanie wyjątków. Zagadnieniu temu poświęcony będzie część jednego z kolejnych wykładów. Natomiast teraz powinien wystarczyć przykład, jak radzić sobie w tym konkretnym przypadku: In [5]: try: os.remove("testos.txt") except os.error: print "Operacja nie powiodła się" Operacja nie powiodła się Zmiana nazwy pliku Stwórzmy najpierw jakis plik roboczy: In [6]: name1 = "plik.txt" fi = open(name1,'w') fi.write("to jest plik roboczy o nazwie %s."%name1) fi.close()

20 Sprawdźmy, czy plik taki rzeczywiście powstał, i co zawiera: In [7]: %%bash ls -l plik.txt -rw-rw-r-- 1 szwabin szwabin 39 lis 10 18:10 plik.txt In [8]: %%bash cat plik.txt To jest plik roboczy o nazwie plik.txt. Dygresja Polecenie %%bash to przykład polecenia magicznego IPythona. W tym konkretnym przypadku pozwala on korzystać z funkcjonalności powłoki systemowej bez wychodzenia z notatnika. Zmiany nazwy pliku dokonamy przy pomocy polecenia os.rename: In [9]: name2 = "file.txt" os.rename(name1,name2) Sprawdźmy wynik działania tego polecenia: In [10]: fi = open(name1) IOError Traceback (most recent cal l last) <ipython-input f > in <module>() ----> 1 fi = open(name1) IOError: [Errno 2] No such file or directory: 'plik.txt' In [12]: fi = open(name2) fi.read() Out[12]: 'To jest plik roboczy o nazwie plik.txt.' In [13]: fi.close() Informacje o pliku In [14]: os.stat(name2) Out[14]: posix.stat_result(st_mode=33204, st_ino= , st_dev=2051, st_nl ink=1, st_uid=1000, st_gid=1000, st_size=39, st_atime= , s t_mtime= , st_ctime= ) Jak widać, wynik działania polecenia os.statnie jest szczególnie czytelny. Możemy jednak to zmienić:

21 In [16]: import time def dump(st): mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime = st print "- rozmiar:", size, "bajtów" print "- właściciel:", uid, gid print "- utworzony:", time.ctime(ctime) print "- ostatni dostęp:", time.ctime(atime) print "- ostatnia modyfikacja:", time.ctime(mtime) st = os.stat(name2) dump(st) - rozmiar: 39 bajtów - właściciel: utworzony: Tue Nov 10 18:15: ostatni dostęp: Tue Nov 10 18:16: ostatnia modyfikacja: Tue Nov 10 18:10: Dygresja! Gdybyśmy planowali stworzyć własny moduł z przydatnymi funkcjami do pracy na plikach, funkcja dumpbyłaby bardzo dobrą kandydatką na element tego modułu. Podstawowe operacje na katalogach Sprawdźmy bieżący katalog: In [17]: os.getcwd() Out[17]: '/home/szwabin/dropbox/zaj\xc4\x99cia/pythonintro/6_moduly_i_pliki' Jego zawartość wyświetlimy przy pomocy funkcji os.listdir: In [18]: print os.listdir(os.getcwd()) ['5-intro.pdf.gz', 'calc.py', 'modutils.py', 'Chapter8_Modules.ipyn b', '3-intro_utf.pdf', '6_moduly_i_pliki.ipynb', 'box.jpg', 'SciPyth on5.ipynb', '.ipynb_checkpoints', 'SciPython4.ipynb', '4-intro.pdf', 'file.txt', 'bpyfd_diags6.png', 'SciPython3.ipynb'] Można również tak:

22 In [19]: for item in os.listdir(os.getcwd()): print item 5-intro.pdf.gz calc.py modutils.py Chapter8_Modules.ipynb 3-intro_utf.pdf 6_moduly_i_pliki.ipynb box.jpg SciPython5.ipynb.ipynb_checkpoints SciPython4.ipynb 4-intro.pdf file.txt bpyfd_diags6.png SciPython3.ipynb Przy podawaniu ścieżki do katalogów można korzystać z typowych skrótów: In [20]: print "Zawartość katalogu bieżącego:\n" print os.listdir('.') print "\n\nzawartość katalogu nadrzędnego:\n" print os.listdir('..') Zawartość katalogu bieżącego: ['5-intro.pdf.gz', 'calc.py', 'modutils.py', 'Chapter8_Modules.ipyn b', '3-intro_utf.pdf', '6_moduly_i_pliki.ipynb', 'box.jpg', 'SciPyth on5.ipynb', '.ipynb_checkpoints', 'SciPython4.ipynb', '4-intro.pdf', 'file.txt', 'bpyfd_diags6.png', 'SciPython3.ipynb'] Zawartość katalogu nadrzędnego: ['Przyk\xc5\x82ady', '1_Intro', 'ricardoduarte-python-for-developer s-88df06e', 'thinkpython.pdf', '5_Funkcje', '2_Pierwsze_kroki', '3_Z mienne_wyrazenia_instrukcje', '6_Moduly_i_pliki', '4_Zlozone_typy_da nych'] Przejście do innego katalogu roboczego: In [22]: os.chdir("/home/szwabin/mypython") os.getcwd() Out[22]: '/home/szwabin/mypython' Tworzenie katalogów: In [23]: os.listdir('.') Out[23]: []

23 In [24]: os.mkdir('test') os.listdir('.') Out[24]: ['Test'] Jeśli katalog już istnieje: In [25]: os.mkdir('test') OSError Traceback (most recent cal l last) <ipython-input-25-f2fde2339d88> in <module>() ----> 1 os.mkdir('test') OSError: [Errno 17] File exists: 'Test' Możemy tworzyć kilka poziomów na raz: In [26]: os.makedirs('test2/poziom1/poziom2') os.listdir('.') Out[26]: ['Test', 'Test2'] In [27]: print os.listdir('test2') print os.listdir('test2/poziom1') ['Poziom1'] ['Poziom2'] Pojedynczy katalog usuniemy w następujący sposób: In [28]: os.rmdir("test") os.listdir('.') Out[28]: ['Test2'] Możliwe jest również usunięcie całej ścieżki na raz: In [29]: os.removedirs('test2/poziom1/poziom2') os.listdir('.') Out[29]: [] Uwaga! Usuwany katalog musi być pusty: In [30]: os.mkdir('test') f = open('test/plik.txt','w') f.write('bla bla bla') f.close()

24 In [31]: os.rmdir('test') OSError Traceback (most recent cal l last) <ipython-input-31-9d11237dd07e> in <module>() ----> 1 os.rmdir('test') OSError: [Errno 39] Directory not empty: 'Test' In [32]: os.remove('test/plik.txt') os.rmdir('test') In [33]: os.listdir('.') Out[33]: [] Ścieżki dostępu do plików In [34]: plik = "/home/szwabin/books/programming.collective.intelligence.pdf" Pełną ścieżkę do pliku możemy rozbić na nazwę pliku i katalog, w którym plik się znajduje: In [35]: os.path.split(plik) Out[35]: ('/home/szwabin/books', 'Programming.Collective.Intelligence.pdf') Nazwę katalogu i pliku możemy też odczytać specjalnymi funkcjami: In [36]: kat = os.path.dirname(plik) print kat pl = os.path.basename(plik) print pl #nazwa katalogu #nazwa pliku /home/szwabin/books Programming.Collective.Intelligence.pdf Dysponując nazwą katalogu i pliku, możemy je oczywiście połączyć w jedną ścieżkę dostępu: In [37]: os.path.join(kat,pl) Out[37]: '/home/szwabin/books/programming.collective.intelligence.pdf' Przeszukiwanie drzewa katalogów

25 In [47]: for root, dirs, files in os.walk("/home/szwabin/dropbox/zajęcia/pyth onintro/3_zmienne_wyrazenia_instrukcje/", topdown=false): print root print dirs print files print '-'*20 kcje/.ipynb_checkpoints [] ['3_Zmienne_wyrazenia_instrukcje-checkpoint.ipynb', 'Untitled0-check point.ipynb'] kcje/preview/3_zmienne_wyrazenia_instrukcje_files [] ['require.min.js', 'MathJax.js', 'jquery.min.js'] kcje/preview ['3_Zmienne_wyrazenia_instrukcje_files'] ['state_diagram.png', '3_Zmienne_wyrazenia_instrukcje.html', '3_Zmie nne_wyrazenia_instrukcje.html~'] kcje/ ['.ipynb_checkpoints', 'Preview'] ['state_diagram.svg', 'Untitled0.ipynb', 'state_diagram.png', '3_Zmi enne_wyrazenia_instrukcje.ipynb', '3_zmienne_wyrazenia_instrukcje.pd f'] In [48]: for root, dirs, files in os.walk("/home/szwabin/dropbox/zajęcia/pyth onintro/3_zmienne_wyrazenia_instrukcje/", topdown=false): for name in files: print os.path.join(root, name) for name in dirs: print os.path.join(root, name)

26 kcje/.ipynb_checkpoints/3_zmienne_wyrazenia_instrukcje-checkpoint.ip ynb kcje/.ipynb_checkpoints/untitled0-checkpoint.ipynb kcje/preview/3_zmienne_wyrazenia_instrukcje_files/require.min.js kcje/preview/3_zmienne_wyrazenia_instrukcje_files/mathjax.js kcje/preview/3_zmienne_wyrazenia_instrukcje_files/jquery.min.js kcje/preview/state_diagram.png kcje/preview/3_zmienne_wyrazenia_instrukcje.html kcje/preview/3_zmienne_wyrazenia_instrukcje.html~ kcje/preview/3_zmienne_wyrazenia_instrukcje_files kcje/state_diagram.svg kcje/untitled0.ipynb kcje/state_diagram.png kcje/3_zmienne_wyrazenia_instrukcje.ipynb kcje/3_zmienne_wyrazenia_instrukcje.pdf kcje/.ipynb_checkpoints kcje/preview Jeszcze o przeszukiwaniu katalogów Bardzo przydatnym modułem jest znajdujący się w bibliotece standardowej glob. Pozwala on na używanie dzikich kart w nazwach plikow na zasadach podobnych do powłoki uniksowej: *zastępuje zero lub więcej znaków?zastępuje dokładnie jeden znak nawiasy kwadratowe definiują zakresy, np. [1-9]oznacza dowolną cyfrę między 1 a 9 In [51]: import glob os.chdir('/home/szwabin/dropbox/zaj\xc4\x99cia/pythonintro/6_modul y_i_pliki') Wszystkie pliki o rozszerzeniu ipynb:

27 In [52]: print glob.glob('*.ipynb') ['Chapter8_Modules.ipynb', '6_moduly_i_pliki.ipynb', 'SciPython5.ipy nb', 'SciPython4.ipynb', 'SciPython3.ipynb'] Wszystkie pliki w aktualnym katalogu: In [53]: print glob.glob('*.*') ['5-intro.pdf.gz', 'calc.py', 'modutils.py', 'Chapter8_Modules.ipyn b', '3-intro_utf.pdf', '6_moduly_i_pliki.ipynb', 'box.jpg', 'SciPyth on5.ipynb', 'SciPython4.ipynb', '4-intro.pdf', 'file.txt', 'bpyfd_di ags6.png', 'SciPython3.ipynb'] Pliki o rozszerzeniu składającym się z 3 liter: In [54]: print glob.glob("*.???") ['3-intro_utf.pdf', 'box.jpg', '4-intro.pdf', 'file.txt', 'bpyfd_dia gs6.png'] Pliki o rozszerzeniu składającym się z 3 liter, przy czym pierwszą literą rozszerzenia jest plub t: In [56]: print glob.glob("*.[pt]??") ['3-intro_utf.pdf', '4-intro.pdf', 'file.txt', 'bpyfd_diags6.png']

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

Język Python (2) Język Python (2) 1/36 Język Python (2) Język Python (2) 1/36 Język Python (2) 2/36 Podstawy funkcji Pojęcia podstawowe Instrukcja def tworzy obiekt funkcji i przypisuje go do nazwy Instrukcja return przekazuje obiekt wynikowy

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

Bardziej szczegółowo

Python. Wprowadzenie. Jolanta Bachan

Python. Wprowadzenie. Jolanta Bachan Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

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

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy

Bardziej szczegółowo

Podstawy bioinformatyki 2017/18

Podstawy bioinformatyki 2017/18 JEZYK PROGRAMOWANIA PYTHON: WPROWADZANIE DANYCH I FORMATOWANIE WYNIKÓW, WEWNETRZNA DOKUMENTACJA, PROGRAMY I MODUŁY E. Dyguda-Kazimierowicz 1 Formatowanie danych wyjściowych Do formatowania wyświetlanych

Bardziej szczegółowo

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

Trochę o plikach wsadowych (Windows)

Trochę o plikach wsadowych (Windows) Trochę o plikach wsadowych (Windows) Zmienne środowiskowe Zmienną środowiskową można ustawić na stałe w systemie (Panel sterowania->system- >Zaawansowane ustawienia systemu->zmienne środowiskowe) lub też

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

Język Python. Język Python 1/35

Język Python. Język Python 1/35 Język Python Język Python 1/35 Język Python 2/35 Wstęp Uruchamianie interpretera python Skrypty wykonywalne #!/usr/bin/python #!/usr/bin/env python lub #!/usr/bin/python3 #!/usr/bin/env python3 chmod +x

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

Wstęp do Informatyki dla bioinformatyków

Wstęp do Informatyki dla bioinformatyków Wstęp do Informatyki dla bioinformatyków Wykład 12 - Programowanie w BASHu Trochę bardziej zaawansowane Bartek Wilczyński 25.1.2016 Organizacyjne Bardzo proszę o wypełnienie ankiet w USOS Szczególnie zależy

Bardziej szczegółowo

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać

Bardziej szczegółowo

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

Bardziej szczegółowo

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

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux Administracja sieciowymi systemami operacyjnymi III Klasa - Linux SKRYPTY POWŁOKI mgr inż. Tomasz Borowiec SKRYPTY POWŁOKI - PODSTAWY W Linuksie skrypt jest plikiem tekstowym zawierającym polecenia systemowe

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza

Bardziej szczegółowo

Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego:

Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego: Wyjątki Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego: >>> 1/ File "", line 1, in 1/ ZeroDivisionError: integer

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW http://metodycy.torun.pl/ m.informatyka@metodycy.torun.pl 1. Wprowadzenie do Pythona podstawowe informacje Python to język programowania wysokiego poziomu,

Bardziej szczegółowo

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

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2) Wstęp do informatyki stęp do informatyki Polecenia (cz.2) Lista procesów top Pokaż listę procesów polecenie interaktywne Procesy Uruchamianie w tle. shell nie czeka na zakończenie procesu, można wydawać

Bardziej szczegółowo

Środowisko programisty

Środowisko programisty Środowisko programisty 1/34 Środowisko programisty Język Python cz. 1 dr inż. Grzegorz Michalski 24 marca 2014 Środowisko programisty 2/34 Wstęp Uruchamianie interpretera python Wykonywalne skrypty #!/usr/bin/python

Bardziej szczegółowo

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7 Spis treści 1 Funkcje 1.1 Zadanie 1 1.2 Zadanie 2 1.3 Zadanie 3 1.4 Zadanie 4 1.5 Zadanie 5 1.6 Zadanie 6 1.7 Zadanie 7 Funkcje Przy programowaniu często zdarza się, że pewne czynności chcemy wykonywać

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

1 Przygotował: mgr inż. Maciej Lasota

1 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

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

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

Informatyka 2015/16 wykład 9. Pliki Sterowanie przebiegiem programu cz. 2. Dr inż. Witold Nocoń (p. 230) Informatyka 2015/16 wykład 9 Pliki Sterowanie przebiegiem programu cz. 2 Dr inż. Witold Nocoń (p. 230) Pliki Pliki dzielą się na dwa rodzaje: Pliki tekstowe (zawartość pliku jest typu string) Pliki binarne

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

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

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 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 obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

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

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Operacje na plikach Otwarcie i zamknięcie pliku: fh = open('plik', 'r') Atrybuty: 'r' odczyt 'w' zapis 'a' dopisanie 'r+'

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

Podstawy bioinformatyki 2017/18

Podstawy bioinformatyki 2017/18 1 Pętla while JEZYK PROGRAMOWANIA PYTHON: PETLE ITERUJACE, KORZYSTANIE Z PLIKÓW E. Dyguda-Kazimierowicz Instrukcja while, wraz z omówioną poniżej instrukcją for, należą do pętli iterujacych pozwalających

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały

Bardziej szczegółowo

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

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń: W pierwszym kroku nauczymy się uruchamiać w Pythonie tradycyjny* program ". Dzięki temu nauczysz się pisać w języku Python, a także zapisywać i uruchamiać swoje pythonowe programy. *Jest taka tradycja,

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 1. 4 października 2013 Plan wykładu 1 2 3 4 Typy proste Kolekcje Instrukcje w języku (przypomnienie) Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 2 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 października 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

Kier. MTR Programowanie w MATLABie Laboratorium

Kier. MTR Programowanie w MATLABie Laboratorium Kier. MTR Programowanie w MATLABie Laboratorium Ćw. 7 Import i eksport danych. Współpraca z plikami zewnętrznymi 1. Wprowadzenie Eksport i import danych w MATLABie Na zakładce menu HOME w sekcji VARIABLE

Bardziej szczegółowo

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

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists() 4. Pliki 4.1. Informacje ogólne o dostępie do plików w PHP Jak praktycznie każdy język programowania, PHP zapewnia dostęp do systemu plików znajdujących się na komputerze, na którym uruchamiany jest skrypt,

Bardziej szczegółowo

Podstawy programowania. Python wykład 6

Podstawy programowania. Python wykład 6 Podstawy programowania Python wykład 6 Funkcja wbudowana chr() Wywołanie funkcji chr() z argumentem m zwraca łańcuch znaków reprezentujący znak, którego punktem kodowym w Unicode jest liczba całkowita

Bardziej szczegółowo

Autor: dr inż. Katarzyna Rudnik

Autor: dr inż. Katarzyna Rudnik Bazy danych Wykład 2 MS Access Obiekty programu, Reprezentacja danych w tabeli, Indeksy, Relacje i ich sprzężenia Autor: dr inż. Katarzyna Rudnik Obiekty programu MS ACCESS Obiekty typu Tabela są podstawowe

Bardziej szczegółowo

Typy danych, cd. Łańcuchy znaków

Typy danych, cd. Łańcuchy znaków Typy danych, cd. Łańcuchy znaków Typ danych string, jest rozumiany jako łańcuch znaków - liter, cyfr i symboli. Stringi definiuje się w podwójnych lub pojedyńczych cudzysłowach. typ_ kawy = " latte " typ_herbaty

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1 Rachunek Prawdopodobieństwa i Statystyka lab 3. Kaja Gutowska (Kaja.Gutowska@cs.put.poznan.pl) 1. Funkcje: - Funkcje nie powinny korzystać ze zmiennych globalnych. - Funkcje powinny być możliwie krótkie.

Bardziej szczegółowo

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012 Skrypty BASH a Systemy Operacyjne 2 Mateusz Hołenko 4 października 2012 Plan zajęć O skryptach słów kilka... Powłoka, wiersz poleceń Obsługa powłoki bash Składnia języka skryptowego bash a Zadania Mateusz

Bardziej szczegółowo

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE 1. Proste typy danych- ciąg dalszy 2. Typy złożone danych : TABLICE Wykład 3 ZMIENNE PROSTE: TYPY WBUDOWANE Typy zmiennoprzecinkowe: float double long double Różne rozmiary bajtowe. W konsekwencji różne

Bardziej szczegółowo

Podstawy. Jan Koprowski <jan.koprowski@gmail.com> Politechnika Gdańska, FTiMS Informatyka Stosowana

Podstawy. Jan Koprowski <jan.koprowski@gmail.com> Politechnika Gdańska, FTiMS Informatyka Stosowana Podstawy 1 Plan prezentacji Garść informacji Komentarze Stringi Wbudowane typy liczbowe Konstrukcja print Pobieranie danych Konstrukcja if Konstrukcja if else Konstrukcja if elif else Pętla while Pętla

Bardziej szczegółowo

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

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4 Politechnika Łódzka Instytut Systemów Inżynierii Elektrycznej Laboratorium cyfrowej techniki pomiarowej Ćwiczenie 4 Zapis danych do pliku w programie LabVIEW 1. Zapis i odczyt sygnałów pomiarowych Do zapisu

Bardziej szczegółowo

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:

Bardziej szczegółowo

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

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013 Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli

Bardziej szczegółowo

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Czas realizacji zajęć: 135 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zmienne śrowiskowe oraz ich eksportowanie, argumenty

Bardziej szczegółowo

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt Serwer WWW Apache http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Katalog który ma być serwowany Moduły, które mają zostać uruchomione na serwerze m.in. PHP, mod_rewrite Wirtualne

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

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

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ] JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PYTHON 3 2 Int int jest obecnie odpowiednikiem dawnego long int nie ma wartości maksymalnej (sys.maxint) 2/4 == 0.5

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek Nazwa implementacji: Nauka języka Python pętla for Autor: Piotr Fiorek Opis implementacji: Poznanie innego rodzaju pętli, jaką jest pętla for w języku Python. Składnia pętli for jest następująca: for

Bardziej szczegółowo

Programowanie 3 - Funkcje, pliki i klasy

Programowanie 3 - Funkcje, pliki i klasy Instytut Informatyki Uniwersytetu Śląskiego Laborki funkcja; parametry funkcji; typ zwracany; typ void; funkcje bez parametrów; napis.length() - jako przykład funkcji. Zadania funkcja dodająca dwie liczby;

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Umieszczanie kodu. kod skryptu

Umieszczanie kodu. kod skryptu PHP Definicja PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona

Bardziej szczegółowo

Programowanie w językach wysokiego poziomu

Programowanie w językach wysokiego poziomu Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015 Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie

Bardziej szczegółowo

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

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA PRZEDMIOT : : LABORATORIUM PODSTAW AUTOMATYKI 1. WSTĘP DO

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę: Rozdział 1 Obsługa plików W językach C pliki powiązane są ze strumieniami i pracuje się na nich podobnie jak na innych strumieniach. W języku C do operacji na plikach służą funkcje z biblioteki stdio.h,

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 7 Język awk Wprowadzenie Schemat programu Konstrukcja wzorców Konstrukcja wyrażeń regularnych Struktury kontrolne Predefiniowane

Bardziej szczegółowo

Oczywiście plik musi mieć rozszerzenie *.php

Oczywiście plik musi mieć rozszerzenie *.php Oczywiście plik musi mieć rozszerzenie *.php Znaczniki PHP komunikują serwerowi gdzie rozpoczyna się i kończy kod PHP. Tekst między nimi jest interpretowany jako kod PHP, natomiast poza nimi jako kod HTML.

Bardziej szczegółowo

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

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo