• Nie Znaleziono Wyników

Wykład 3: Środowisko

N/A
N/A
Protected

Academic year: 2021

Share "Wykład 3: Środowisko"

Copied!
21
0
0

Pełen tekst

(1)

Wykład 3: Środowisko

__init__.py sys.path __path__

Pliki .pth DOS

LINUX

#!/bin/csh

# nadaj prawa (chmod +x runpython)

# umiesc te informacje w zbiorze .cshrc set path=(/usr/local/bin $path)

setenv PYTHONPATH /usr/local/lib/python

setenv PYTHONSTARTUP /usr/local/main/program.py python

(2)

Środowisko i tryb programowy

Zmienna Opis

PYTHONPATH ścieżka wyszukiwania modułów (zob. sys.path ) PYTHONSTARTUP Program .exe wykonywany przed uruchomieniem

trybu interaktywnego

PYTHONHOME W którym katalogu zainstalowano PYTHONa PYTHONINSPECT Interpreter będzie używał opcji -i

PYTHONUNBUFFERED Interpreter będzie używał opcji -u

PYTHONCASEOK Wskazuje nazwy modułów, które PYTHON

zaimportuje

(3)

Moduły

 # 1. Importujemy caly modul import liczby

a = liczby.silnia(7)

 # 2. Importujemy modul pod inna nazwa import liczby as num

a = num.silnia(7)

 # 3. Importujemy jedna lub kilka wybranych funkcji from liczby import silnia, fibonacci

a=silnia(7)

 # 4. Importujemy wszystkie funkcje z modulu from liczby import *

a=silnia(7)

(4)

Pliki

 open(path [, mode [,buffersize]])

Tryb Opis

r

Otwiera istniejący plik do odczytu

w

Otwiera plik do zapisu. Jeśli plik już istnieje, jego zawartość jest kasowana. Jeśli plik jeszcze nie istnieje to tworzony jest nowy

a

Otwiera istniejący plik do uaktualnienia, zachowując istniejącą treść

bez zmian i dopisując do niej nową treść

r+

Otwiera plik zarówno do zapisu jak i odczytu. Istniejąca treść pozostaje nietknięta

w+

Otwiera plik zarówno do zapisu jak i odczytu. Istniejąca treść jest kasowana.

a+

Otwiera istniejący plik zarówno do odczytu jak i do uaktualnienia, zachowując istniejącą treść bez zmian i dopisując do niej nową treść

b

Stosowana w dodatku do powyższych opcji. Otwiera plik w trybie

binarnym.

U

Stosowana w dodatku do powyższych opcji. Stosuje “uniwersalny”

translator nowych wierszy do otwieranego pliku

a

(5)

Pliki - wczytywanie

# Zawartość całego pliku w buffer file=open(”plik.txt”, ’rU’)

buffer=”Zawartość ’plik.txt’: ” buffer+=file.read()

file.close()

# Dodanie kolejnego wiersza do buffer file=open(”plik.txt”, ’rU ’)

inList=file.readlines() # Zawartość pliku w formie listy

buffer+=’ ’.join(inList)

buffer=”Zawartość ’plik.txt’ dodawany wierszami:”

for line in inList:

buffer+=line file.close()

buffer=”Wczytywanie ’plik.txt’ porcjami po 8 bajtów:”

file=open(”plik.txt”,’rU’) while (1):

bytes=file.read(8) if bytes:

buffer+=bytes # Dopisanie 8 kolejnych bajtów

else:

break file.close()

file=open(”plik.txt”,’rU’) wordlist=[]

wordCount=0

for line in file: # Uwaga na tę iterację!!

for word in line.split():

wordlist.append(word)

# dodajemy słowa do listy

wordCount+=1

file.close()

(6)

Pliki – moduł linecache

getline(filename, lineno) - wczytuje linię numer lineno z pliku o nazwie filename, zapamiętuje tę linię w pamięci podręcznej (cache) oraz zwraca tę linię w formie łańcucha znaków. Przy następnym wywołaniu, jeśli to jest możliwe korzysta z pamięci cache a nie z pliku. Jeśli

nazwa filename nie istnieje, funkcja będzie przeszukiwać według kolejności przeszukiwania katalogów(sys.path()).

getlines(filename)- wczytuje wszystkie wiersze z pliku filename do listy

clearcache () - czyści cache. Używaj tej funkcji jeśli nie będziesz już potrzebował wierszy

z tego zbioru czytanych przez getline().

checkcache() - sprawdza czy dalej cache jest ważny.

(7)

Pliki - zapisywanie

# Zawartość całego pliku w buffer file=open(”plik.txt”, ’rU’)

buffer=”Zawartość ’plik.txt’: ” buffer+=file.read()

file.close()

# Dodanie kolejnego wiersza do buffer file=open(”plik.txt”, ’rU ’)

inList=file.readlines() # Zawartość pliku w formie listy

buffer+=’ ’.join(inList)

buffer=”Zawartość ’plik.txt’ dodawany wierszami:”

for line in inList:

buffer+=line file.close()

buffer=”Wczytywanie ’plik.txt’ porcjami po 8 bajtów:”

file=open(”plik.txt”,’rU’) while (1):

bytes=file.read(8) if bytes:

buffer+=bytes # Dopisanie 8 kolejnych bajtów

else:

break file.close()

file=open(”plik.txt”,’rU’) wordlist=[]

wordCount=0

for line in file: # Uwaga na tę iterację!!

for word in line.split():

wordlist.append(word)

# dodajemy słowa do listy

wordCount+=1

file.close()

(8)

Pliki - wczytywanie

# Zapis wierszami

wordList[”Kowalski Jan”, ”Wiśniewski Michał”, ”Doda Elektroda”]

fileout=”zapis.doc”

file=open(fileout, ’wU’)

file.writelines(wordList)

# Zapis całości buffer=””

for a in wordList:

buffer+=a file.write(a)

# Zapis instrukcją print for a in wordList:

print >>file, ”\t Pracownik: %s”,a

file.close()

(9)

Atrybuty i metody obiektu file

Atrybut Znaczenie

f.close() Zamyka zbiór. Nie można nic wykonywać na zbiorze po jego zamknięciu. Wielokrotne użycie f.close() nie powo- duje błędu.

f.closed Przyjmuje wartość True jeśli było użyte f.close() i zbiór jest zamknięty. W przeciwnym razie przyjmuje wartość False.

f.encoding Atrybut tylko do odczytu. Może to być np.: ‘ascii’,

‘latin-1’ (lub „iso-8859-1’), ‘utf-8’, ‘utf-16’, ‘utf-16-le’,

‘utf-16-be’. Może być ustawiany tylko dla atrybutów stdin, stdout i stderr modułu sys

f.flush() Wymaganie aby zbiór f był buforowany przed zapisem przez system operacyjny

f.isatty() Zwraca True jeśli f jest zbiorem na interaktywnym terminalu, w przeciwnym razie False.

f.fileno() Zwraca liczbę całkowitą która jest deskryptorem zbioru w systemie operacyjnym

f.mode Jest to atrybut tylko do odczytu, mówi w jakim trybie plik został otworzony (metodą open)

f.name Również atrybut tylko do odczytu, mówi nam z jaką nazwą zbioru plik został otworzony metodą open.

f.newlines Atrybut tylko do odczytu. Może to być jeden z łańcuchów

‘\n’, ‘\r’ lub ‘\r\n’ (gdy linie w pliku są w ten sposób oddzielane); krotka, gdy linie mają różne separatory i None, kiedy nie ma separatora linii lub f zostało otwarte w trybie ‘U’.

f.read(size=1) Czyta maksymalnie (gdy może ze zbioru) size bajtów ze zbioru f od bieżącej pozycji i zwraca je jako łańcuch. Gdy size<0 czyta wszystkie bajty do końca. Gdy pierwszym napotkanym znakiem jest EOF, lub size=0 zwraca pusty łańcuch.

f.readline(size=1) Czyta i zwraca jeden wiersz ze zbioru aż do napotkania znaku końca linii ‘\n’ włącznie. Jeśli size jest większe bądź równe 0 f.readline czyta nie więcej niż size bajtów.

W tym przypadku zwracany łańcuch może nie kończyć się

(10)

Atrybuty i metody obiektu file cd

f.seek(pos,

how=0) Ustawia bieżącą pozycję w zbiorze f na (dodatnią lub ujemną) liczbę całkowitą bajtów pos w stosunku do ustalonego punktu. Tym punktem może być początek zbioru (how = 0), aktualna pozycja (how =1) i koniec zbioru (how= 2). Moduł os ma atrybuty SEEK_SET, SEEK_CUR, i SEEK_END, z wartościami 0, 1 i 2, odpowiednio. Kiedy f jest otwarte w trybie tekstowym f.seek może ustawić bieżącą pozycję w nieoczekiwany sposób (w WINDOWS), wtedy należy otwierać f w trybie binarnym lub użyć f.seek z pos=f.tell() a how=0.

f.softspace Zapisywalny atrybut typu logicznego używany wewnętrznie przez instrukcję print

f.tell() Zwraca bieżącą pozycję w zbiorze

f.truncate([size]) Obcina zbiór f. Kiedy podany jest parametr size usuwa ze zbioru size bajtów, a kiedy nie ma size usuwa wszystko od f.tell() do końca zbioru.

f.write(s) Zapisuje łańcuch s do zbioru.

f.writelines(lst) Działa tak jak:

for line in lst:

f.write(line)

gdzie lst jest listą lub krotką.

(11)

Moduł os

os.errno

os.name

os.path

popen(command[, tryb[, rozmiar_bufora]]) - polecenie to otwiera potok powiązany z nowym procesem wykonującym

command. Zwracaną wartością jest otwarty obiekt plikowy

powiązany z potokiem, który może służyć do odczytu lub zapisu, zależnie od tego, czy wartością parametru tryb jest ‘r’ (domyślnie) czy też ‘w’.

walk(top[, topdown=True [, onerror=None]]) - Funkcja ta przechodzi drzewo katalogów i tworzy dla nich krotkę składającą się z:

1. Ścieżka katalogu

2. Lista nazw katalogów 3. Lista nazw plików

Argument topdown ustala w jakiej kolejności mają być

generowane katalogi

(12)

Inne funkcje modułu OS

os.path.getsize(filename) - rozmiar w bajtach filename (os.error jeśli zbiór nie istnieje).

mkdir(path[, tryb]) - tworzy katalog path z numerycznym trybem (domyślny 0777 – ósemkowo).

remove(path) - usuwa path. Jeśli path jest katalogiem pojawia się os.error.

removedirs(ścieżka) - usuwa katalog z podkatalogami.

rename(src, dst) - zmienia nazwę zbioru lub katalogu.

rmdir(path) - usuwa katalog path.

environ - obiekt reprezentujący środowisko, np. wartością wyrażenia environ[’HOME’] jest ścieżką katalogu domowego bieżącego użytkownika.

getlogin() - nazwa użytkownika zalogowanego przy użyciu terminala w UNIX

getpid() - identyfikator bieżącego procesu. Dostępność: UNIX, WINDOWS.

getenv(nazwa_zmiennej[, wartość]) - jeśli istnieje zmienna środowiskowa o nazwie nazwa_zmiennej, zwraca jej wartość, w przeciwnym wypadku zwracany jest argument wartość.

putenv(nazwa_zmiennej, wartość) - ustawia wartość zmiennej środowiskowej o nazwie nazwa_zmiennej na napis wartość. Dokonane w ten sposób zmiany w środowisku wpływają na procesy potomne, utworzone przy pomocy funkcji os.system(), popen() lub fork() i execv().

strerror(kod) - zwraca komunikat opisujący błąd o kodzie kod.

uname() - pięcioelementowa krotkę zawierającą informacje służące identyfikacji

używanego systemu operacyjnego. Na krotkę składa się: (nazwa systemu, nazwa węzła, wydanie, wersja, maszyna).

(13)

Moduł glob

import glob

glob.glob(’*’) [’cos-ph.html’,’python2.5.tar.gz’, ’cos-ph1a.html’,’cos-pu2.html’,

’work1’]

glob.glob(’[acu]os*.ht??’) [’cos-ph.html’,’cos- ph1a.html’,’cos-pu2.html’]

glob.glob(’work/*’) [’work\\more’, ’work1\\new1’,

’work1\\new2’,’work1\\new3’]

(14)

Moduł tar

import os, tarfile

fileTar=tarfile.open(”my.tar”,’w’) f=”C:/Python27/zbior.py”

fileTar.add(f)

t=fileTar.getnames()

fileTar.extract(f,extractPath)

fileTar.close()

(15)

Moduł zip

import os, zipfile

fileZip=zipfile.ZipFile(”my.zip”,’w’) f=”C:/Python27/zbior.py

fileZip.write(f) fileZip.namelist() fileZip.close()

fileZip.read(f)

(16)

Moduły Pickle i cPickle

 pickle mamy następujące funkcje:

dump(object, file[, bin]) - Zapisuje obiekt object do otwartego zbioru file (funkcja ta jest równo­ważna

poleceniu Pickler(file, bin).dump(object). Jeśli argument bin jest True format marynowanego zbioru jest binarny a w przeciwnym razie tekstowy.

load(file) - Czyta łańcuch z otwartego zbioru file i interpretuje go jako strumień danych marynowanych.

(równoważne Unpickler(file).load()).

dumps(object[, bin]) - Zwraca zamarynowaną

reprezentację obiektu jako łańcuch zamiast zapisać go do zbioru. Parametr bin jak w metodzie dump.

loads(string) - Czyta hierarchię zamarynowanych

obiektów z łańcucha.

(17)

Moduł time

 Krotka tupletime

Index Pole Wartość

0 year (np., 1993) 1 month range [1,12]

2 day range [1,31]

3 hour range [0,23]

4 minute range [0,59]

5 second range [0,61]

6 weekday range [0,6], Poniedziałek to 0 7 Julian day range [1,366]

8 daylight savings flag 0, 1 lub -1;

(18)

Moduł time

asctime([tupletime]) - konwertuje opisaną powyżej tupletime na 24- znakowy napis np.: ‘Sun Jun 20 23:21:05 1993’. Napis taki będziemy dalej nazywać stringtime. Jeśli nie ma tupletime bieżący czas jest w ten sposób zwracany.

ctime([secs]) - konwertuje czas w sekundach secs od chwili, gdy zegar wystartował (zazwyczaj 1.01.1970) na stringtime. Jeśli secs nie występuje zwracany jest czas bieżący.

gmtime([secs]) - konwertuje czas w sekundach secs od chwili gdy zegar wystartował (zazwyczaj 1.01.1970) na tupletime. Jeśli secs nie występuje zwracany jest czas bieżący.

localtime([secs]) - podobnie jak gmtime() ale konwertuje na czas lokalny.

mktime(tupletime) - odwrotna funkcja do localtime().

sleep(secs) - zawiesza wykonanie programu na określoną w secs ilość sekund.

strftime(format[, tupletime]) - konwertuje tupletime zwracane przez gmtime() lub localtime() do łańcucha wyszczególnionego przez format. Jeśli tupletime nie występuje, zwracany jest czas bieżący.

time() - zwraca czas jako liczbę float wyrażając w sekundach od chwili gdy zegar wystartował.

timezone - zwraca strefę czasową.

(19)

Moduł threading

class Thread (group=None, target=None, name=None, args=(), kwargs={})

Argumentami są:

group powinno być None; dla dalszych zastosowań

target obiekt wywoływalny na który powołuje się metoda run().

name jest nazwą wątku. Domyślnie jest konstruowana na zasadzie ‘Thread-N’ gdzie N to kolejna liczba

args krotka argumentów które target wywołuje

kwargs słownika argumentów które target wywołuje.

Jeśli podklasa nadpisuje konstruktor to konstruktor Thread.__init__() też powinien być wywołany.

start()

start wątków (musi być wywołane raz na otwarcie procesów wielowątkowych).

run()

metoda uruchamiająca aktywność wątku.

join([timeout])

czeka aż wątek (normalnie lub z błędem) skończy się.

getName()

zwraca nazwę wątku.

setName(name)

ustawia nazwę wątku.

isAlive()

zwraca informację czy wątek “pracuje”.

(20)

Moduł threading

 obiekt Timer

class Timer(interval, function, args=[], kwargs={})

Tworzy timer który wywoła funkcję function z argumentami args i/lub słownikiem argumentów kwargs, po interval sekundach.

cancel() - zatrzymuje timer i wstrzymuje wykonanie funkcji function. Możliwe jest

wstrzymanie tylko wtedy gdy timer czeka a nie gdy wykonuje funkcję function.

 Można ten obiekt wykorzystać do przerwań

zegarowych.

(21)

Moduł queue

Kolejki FIFO

class Queue(maxsize)

maxsize jest liczbą całkowitą, która jest górną granicą liczby elementów w kolejce. Jeśli maxsize jest mniejsze bądź równe 0 rozmiar kolejki jest nieskończony.

Metody tej klasy to:

qsize() zwraca przybliżony rozmiar kolejki

empty() zwraca 1 jeśli kolejka jest pusta i 0 w przeciwnym razie

full() zwraca 1 jeśli kolejka jest pełna i 0 w przeciwnym razie

put(item[, block]) wstawia item do kolejki. Jeśli opcjonalny argument block jest 1 (domyślne) blokuje, jeśli trzeba, dopóki wolny slot nie będzie dostępny. W przeciwnym razie (block jest 0) wstawia item do kolejki jeśli wolny slot jest dostępny, a jeśli nie pojawia się wyjątek Full exception.

get([block]) usuwa i zwraca element z kolejki. Opcjonalny argument

block jak w put

Cytaty

Powiązane dokumenty

Uwaga: wartości ln 2 nie wyliczamy, tylko brana jest

where X is the number of water molecules replaced by one molecule of organic compound, c is the inhibitor concentration and k is the equilibrium constant of the adsorption reaction

(1.8) into an expression for what is plotted in the Figure, the energy per square centimeter per steradian per second.. Note that the x-axis is I/λ, the inverse wavelength of

Jeżeli pierwszy wyraz tego ciągu arytmetycznego zmniejszymy o 7, drugi pozostawimy bez zmian, a trzeci zwiększymy o 3, to otrzymamy trzy kolejne wyrazy ciągu