Wykład 3: Środowisko
__init__.py sys.path __path__
Pliki .pth DOS
PATH C:\Python;%PATH%
SET PYTHONPATH=.,C:\Python\lib\python;C:\Python\lib SET PYTHONSTARTUP =.,C:\Python\main\program.py python
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
Środowisko i tryb
programowy
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)
Pliki
open(path [, mode [,buffersize]])
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()
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.
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()
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()
Atrybuty i metody obiektu file
Atrybuty i metody obiektu file cd
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
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).
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’]
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()
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)
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.
Moduł time
Krotka tupletime
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ą.
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”.
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.
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