• 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

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

(2)

Środowisko i tryb

programowy

(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]])

(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

(10)

Atrybuty i metody obiektu file cd

(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

(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

Niech punkt I będzie środkiem okręgu wpisanego w trójkąt ABC, zaś D, E, F niech będą punktami przecięcia dwusiecznych kątów A, B, C trójkąta ABC odpowiednio z bokami BC, AC

(Jeśli przed nawiasem jest „+” lub nie ma żadnego znaku, to opuszczamy nawias nic nie robiąc. Jeśli przed nawiasem jest znak „–” to opuszczając nawias zmieniamy każdy znak

Celem projektu jest opis algebr ba- zowych uogólnionego typu kwaternionowego oraz pokazanie, że są one okresowe o okresie 4. Kołczan Q nazywamy 2-regularnym, jeśli w każdym

1.. Dowód Twierdzenia rozbijemy na ciąg implikacji:. a)

zyka niż człowieka, wtedy jednak powoływałoby się do istnienia nową total ­ ność, na gruncie której możliwa byłaby ciągła historia, historia dyskursu jako nauka

Z tego względu, nawet jeśli Nie ­ tzsche powiada, iż „źródło muzyki leży poza wszelką indywiduacją”, a więc poza wszelką wolą, w samym Dionizosie, to jest ona

Jeżeli jakieś dane em ­ piryczne przemawiają przeciw jednej lub drugiej teorii, powstały konflikt traktuje się jako dowód na to, że teoria nie stosuje się do sytuacji,

Operator A jest liniowy, tzn... Kwantowy