Test pliku mp4

Transkrypt

Test pliku mp4
Wprowadzenie do programowania
Wykład 9 ­ 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
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**
w Pythonie 2.7 funkcja reload jest wbudowana
w Pythonie 3.X wymaga zaimportowania dodatkowego modułu
moduły to przykłady obiektów typy **singleton**
(https://pl.wikipedia.org/wiki/Singleton_(wzorzec_projektowy)) 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 sqrt nie 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
In [1]:
print dir(__builtin__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseExcept
ion', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFErro
r', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'Floating
PointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportEr
ror', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyErro
r', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',
'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'Overf
lowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeE
rror', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxE
rror', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'T
rue', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'Unic
odeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeW
arning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionErro
r', '__IPYTHON__', '__IPYTHON__active', '__debug__', '__doc__', '__
import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply',
'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'call
able', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex',
'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'drelo
ad', 'enumerate', 'eval', 'execfile', 'file', 'filter', 'float', 'f
ormat', 'frozenset', 'get_ipython', 'getattr', 'globals', 'hasatt
r', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinsta
nce', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'lo
ng', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'o
pen', 'ord', 'pow', 'print', 'property', 'range', 'raw_input', 'red
uce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'sli
ce', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'typ
e', 'unichr', 'unicode', '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 [1]:
import math
print(math.sqrt(2))
1.4142135623730951
Moduł możemy zaimportować w taki sposób, aby odnosić się do niego poprzez własną (najczęściej krótszą)
nazwę:
In [3]:
import math as m
print(m.sin(m.pi/2))
1.0
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 [4]:
from math import sqrt as SQ
print(SQ(2))
1.4142135623730951
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:
In [5]:
from math import *
print(sqrt(2))
1.4142135623730951
In [6]:
sqrt(-2)
-------------------------------------------------------------------------ValueError
Traceback (most recent ca
ll last)
<ipython-input-6-4cf32322fa95> in <module>()
----> 1 sqrt(-2)
ValueError: math domain error
In [7]:
from cmath import *
In [8]:
sqrt(-2)
Out[8]:
1.4142135623730951j
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 [10]:
def fib(n):
# wypisz na ekranie wyrazy szeregu Fibonacciego mniejsze 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 od n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
In [6]:
fib(10)
112358
In [11]:
fib2(10)
Out[11]:
[1, 1, 2, 3, 5, 8]
Ponieważ funkcje te mogą nam się jeszcze przydać, zapiszmy je do pliku fibo.py:
In [14]:
%%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
Overwriting fibo.py
Ten plik to nic innego jak nasz pierwszy (dość prosty) moduł:
In [15]:
import fibo
dir(fibo)
Out[15]:
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'fib',
'fib2']
In [16]:
fibo.fib(10)
1
1
2
3
5
8
In [17]:
fibo.fib2(10)
Out[17]:
[1, 1, 2, 3, 5, 8]
Moduł ten możemy nieco "podrasować", dodając m.in. dokumentację:
In [27]:
%%writefile fibo.py
# -*- coding: utf-8 -*u"""Funkcje generujące wyrazy szeregu Fibonacciego"""
def fib(n):
u"""Wyświetl wyrazy szeregu mniejsze od n na ekranie.
kjsghncekjvnkntkjshskjrtvgwmcjgmlgjle
;ljljgcljgvevgjcmjgm;egje;cgjwerjgr"""
a, b = 0, 1
while b < n:
print(b,)
a, b = b, a+b
def fib2(n):
u"""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 [28]:
reload(fibo)
-------------------------------------------------------------------------NameError
Traceback (most recent ca
ll last)
<ipython-input-28-4c46423cb2cb> in <module>()
----> 1 reload(fibo)
NameError: name 'reload' is not defined
In [29]:
import importlib
importlib.reload(fibo)
Out[29]:
<module 'fibo' from '/home/szwabin/Dropbox/Zajecia/WstepDoProgramow
ania/9_Moduly_i_pliki/fibo.py'>
In [30]:
help(fibo)
Help on module fibo:
NAME
fibo - Funkcje generujące wyrazy szeregu Fibonacciego
FUNCTIONS
fib(n)
Wyświetl wyrazy szeregu mniejsze od n na ekranie.
kjsghncekjvnkntkjshskjrtvgwmcjgmlgjle
;ljljgcljgvevgjcmjgm;egje;cgjwerjgr
fib2(n)
Zwróć listę wyrazów szeregu mniejszych od n
FILE
/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Moduly_i_p
liki/fibo.py
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 -a przy %%writefile oznacza, że dodajemy do istniejącego pliku):
In [31]:
%%writefile -a fibo.py
def test():
u"""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 [32]:
importlib.reload(fibo)
Out[32]:
<module 'fibo' from '/home/szwabin/Dropbox/Zajecia/WstepDoProgramow
ania/9_Moduly_i_pliki/fibo.py'>
In [33]:
dir(fibo)
Out[33]:
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'fib',
'fib2',
'test']
Możemy ją oczywiście wywołać ręcznie:
In [34]:
fibo.test()
Test zakończony poprawnie
Przy uruchomieniu modułu jako skryptu, zostanie ona uruchomiona automatycznie:
In [35]:
!python fibo.py
Test zakończony poprawnie
Ścieżka wyszukiwania modułów
gdy moduł fibo jest importowany, interpreter Pythona poszukuje pliku fibo.py w katalogu
bieżącym, a następnie w katalogach określonych w zmiennej środowiskowej PYTHONPATH
jeśli zmienna PYTHONPATH nie 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/python lub /usr/local/lib/python)
na samym końcu przeszukiwane są katalogi umieszczone w zmiennej sys.path
In [37]:
import sys
print(sys.path)
['', '/usr/local/lib/python3.4/dist-packages/pandas-0.18.0-py3.4-li
nux-x86_64.egg', '/usr/local/lib/python3.4/dist-packages/geograpy0.3.7-py3.4.egg', '/usr/local/lib/python3.4/dist-packages/pycountry
-1.20-py3.4.egg', '/usr/local/lib/python3.4/dist-packages/jellyfish
-0.5.3-py3.4-linux-x86_64.egg', '/usr/local/lib/python3.4/dist-pack
ages/newspaper-0.0.9.8-py3.4.egg', '/usr/local/lib/python3.4/dist-p
ackages/nltk-3.2-py3.4.egg', '/usr/local/lib/python3.4/dist-package
s/python_dateutil-2.4.0-py3.4.egg', '/usr/local/lib/python3.4/distpackages/feedfinder2-0.0.1-py3.4.egg', '/usr/local/lib/python3.4/di
st-packages/tldextract-1.5.1-py3.4.egg', '/usr/lib/python3.4', '/us
r/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dyn
load', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/
dist-packages', '/usr/local/lib/python3.4/dist-packages/IPython/ext
ensions', '/home/szwabin/.ipython']
In [38]:
!echo $PYTHONPATH
Rozszerzanie ścieżki wyszukiwania
Pod Linuksem dodajemy do pliku .bashrc w 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 open otwiera 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 [40]:
f = open('workfile','w')
print(f)
<_io.TextIOWrapper name='workfile' mode='w' encoding='UTF-8'>
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 n bajtó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 k bajtów do punktu odniesienia p:
p=0 ­ początek pliku
p=1 ­ pozycja bieżąca
p=2 ­ koniec pliku
close() ­ zamknięcie pliku
In [43]:
f.close()
Otwórzmy powyższy plik raz jeszcze, tym razem w trybie do odczytu i zapisu:
In [44]:
f = open("workfile",'r+')
Sprawdzamy jego zawartość:
In [45]:
f.read() #powinien być pusty
Out[45]:
''
Wpisujemy coś do pliku:
In [46]:
f.write("0123456789abcdef")
Out[46]:
16
Odczytujemy pozycję w pliku:
In [47]:
f.tell()
Out[47]:
16
Przechodzimy do 5 bajtu w pliku i odczytujemy kolejny jeden bajt:
In [56]:
f.seek(5)
f.read(1)
Out[56]:
'5'
Ponownie odczytujemy pozycję:
In [57]:
f.tell()
Out[57]:
6
Wracamy na początek i odczytujemy dwa kolejne bajty:
In [59]:
f.seek(0)
f.read(2)
Out[59]:
'01'
Wczytujemy cały wiersz:
In [60]:
f.seek(0)
f.readline()
Out[60]:
'0123456789abcdef'
Próba odczytu po zamknięciu pliku spowoduje błąd:
In [61]:
f.close()
f.readline()
-------------------------------------------------------------------------ValueError
Traceback (most recent ca
ll last)
<ipython-input-61-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:
In [62]:
!head -20 osc_rk4.dat
#osc_rk4.dat
#oscylator harmoniczny z tlumieniem
#i sila wymuszajaca
#czas(s)
polozenie(m) predkosc(m/s)
0.251327
0.0247305
0.113945
0.502655
0.0652931
0.204403
0.753982
0.125012
0.265655
1.00531
0.196106
0.294634
1.25664
0.270357
0.290914
1.50796
0.339749
0.256465
1.75929
0.397015
0.195193
2.01062
0.436054
0.112386
2.26195
0.452214
0.0141906
2.51327
0.442452
-0.092775
2.7646
0.405419
-0.201675
3.01593
0.341495
-0.305649
3.26726
0.252758
-0.398059
3.51858
0.142889
-0.472887
3.76991
0.0169508
-0.52526
4.02124
-0.118975
-0.551995
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 [63]:
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)
(0.251327, 0.0247305, 0.113945)
(0.502655, 0.0652931, 0.204403)
(0.753982, 0.125012, 0.265655)
(1.00531, 0.196106, 0.294634)
(1.25664, 0.270357, 0.290914)
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 [64]:
results = []
f = open("osc_rk4.dat","r")
#iteracja po wierszach - w każdym kroku wczytywany tylko jeden wiersz
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)
[0.251327, 0.0247305, 0.113945]
[0.502655, 0.0652931, 0.204403]
[0.753982, 0.125012, 0.265655]
[1.00531, 0.196106, 0.294634]
[1.25664, 0.270357, 0.290914]
Iterację po wierszach można również wykonać w wersji "tylko dla wtajemniczonych":
In [65]:
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)
[0.251327, 0.0247305, 0.113945]
[0.502655, 0.0652931, 0.204403]
[0.753982, 0.125012, 0.265655]
[1.00531, 0.196106, 0.294634]
[1.25664, 0.270357, 0.290914]
Inna możliwość to pętla while:
In [66]:
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 with przy 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 [67]:
with open('osc_rk4.dat') as f:
results4 = [[float(val) for val in l.split()] for l in f if l[0] != "#"]
for i in results4[:5]: print(i)
[0.251327, 0.0247305, 0.113945]
[0.502655, 0.0652931, 0.204403]
[0.753982, 0.125012, 0.265655]
[1.00531, 0.196106, 0.294634]
[1.25664, 0.270357, 0.290914]
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 zamyka również plik.
Zapisywanie do pliku
In [68]:
#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 [69]:
!head -10 dane.dat
#dane.dat
#oscylator harmoniczny z tlumieniem i sila wym.
#czas
polozenie
predkosc
0.25
0.02
0.11
0.50
0.07
0.20
0.75
0.13
0.27
1.01
0.20
0.29
1.26
0.27
0.29
1.51
0.34
0.26
1.76
0.40
0.20
Zauważmy, że write w pętli for w 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. 00041)
%g ­ liczba zmiennoprzecinkowa w formacie %f lub %e
%e ­ liczba zmiennoprzecinkowa w formacie naukowym (np. 1.100000e + 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ę sprintf w języku C. Jednak uważany jest on za nieco przestarzały i obecnie zaleca
się stosowanie metody format obiektu 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 [70]:
print('{0}, {1}, {2}'.format('a', 'b', 'c')) #wstawianie argumentów na 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 [71]:
print('{2},{1},{0}'.format(*'abc'))
ować
print('{0}{1}{0}'.format('abra', 'cad'))
# sekwencję w argumencie można rozpak
# indeksy argumentów można powtarzać
c,b,a
abracadabra
In [72]:
#wartości wstawiane po kluczach
print('Współrzędne: {latitude}, {longitude}'.format(latitude='37.24N', longitude='115.81W'))
coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
print('Współrzędne: {latitude}, {longitude}'.format(**coord))
Współrzędne: 37.24N, -115.81W
Współrzędne: 37.24N, -115.81W
In [73]:
#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 [74]:
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
+3.140000; -3.140000
3.140000; -3.140000
3.140000; -3.140000
In [75]:
# 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: 101010
In [76]:
'{:,}'.format(1234567890) #przecinek jako separator między tysiącami
Out[76]:
'1,234,567,890'
Więcej na temat metody format pod adresem https://docs.python.org/3/library/string.html#formatstrings
(https://docs.python.org/3/library/string.html#formatstrings)
Marynowanie danych czyli moduł pickle
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ł pickle potrafi 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ć"
In [78]:
import pickle
In [79]:
dir(pickle)
Out[79]:
['ADDITEMS',
'APPEND',
'APPENDS',
'BINBYTES',
'BINBYTES8',
'BINFLOAT',
'BINGET',
'BININT',
'BININT1',
'BININT2',
'BINPERSID',
'BINPUT',
'BINSTRING',
'BINUNICODE',
'BINUNICODE8',
'BUILD',
'DEFAULT_PROTOCOL',
'DICT',
'DUP',
'EMPTY_DICT',
'EMPTY_LIST',
'EMPTY_SET',
'EMPTY_TUPLE',
'EXT1',
'EXT2',
'EXT4',
'FALSE',
'FLOAT',
'FRAME',
'FROZENSET',
'FunctionType',
'GET',
'GLOBAL',
'HIGHEST_PROTOCOL',
'INST',
'INT',
'LIST',
'LONG',
'LONG1',
'LONG4',
'LONG_BINGET',
'LONG_BINPUT',
'MARK',
'MEMOIZE',
'NEWFALSE',
'NEWOBJ',
'NEWOBJ_EX',
'NEWTRUE',
'NONE',
'OBJ',
'PERSID',
'POP',
'POP_MARK',
'PROTO',
'PUT',
'PickleError',
'Pickler',
'PicklingError',
'PyStringMap',
'REDUCE',
'SETITEM',
'SETITEMS',
'SHORT_BINBYTES',
'SHORT_BINSTRING',
'SHORT_BINUNICODE',
'STACK_GLOBAL',
'STOP',
'STRING',
'TRUE',
'TUPLE',
'TUPLE1',
'TUPLE2',
'TUPLE3',
'UNICODE',
'Unpickler',
'UnpicklingError',
'_Framer',
'_Pickler',
'_Stop',
'_Unframer',
'_Unpickler',
'__all__',
'__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'_compat_pickle',
'_dump',
'_dumps',
'_extension_cache',
'_extension_registry',
'_getattribute',
'_inverted_registry',
'_load',
'_loads',
'_test',
'_tuplesize2code',
'bytes_types',
'codecs',
'compatible_formats',
'decode_long',
'dispatch_table',
'dump',
'dumps',
'encode_long',
'format_version',
'io',
'islice',
'load',
'loads',
'maxsize',
'pack',
're',
'sys',
'unpack',
'whichmodule']
In [80]:
help(pickle.dump)
Help on built-in function dump in module _pickle:
dump(obj, file, protocol=None, *, fix_imports=True)
Write a pickled representation of obj to the open file object f
ile.
This is equivalent to ``Pickler(file, protocol).dump(obj)``, bu
t may
be more efficient.
The optional *protocol* argument tells the pickler to use the g
iven
protocol supported protocols are 0, 1, 2, 3 and 4. The default
protocol is 3; a backward-incompatible protocol designed for Py
thon 3.
Specifying a negative protocol version selects the highest prot
ocol
version supported. The higher the protocol used, the more rece
nt the
version of Python needed to read the pickle produced.
The *file* argument must have a write() method that accepts a s
ingle
bytes argument. It can thus be a file object opened for binary
writing, a io.BytesIO instance, or any other custom object that
meets
this interface.
If *fix_imports* is True and protocol is less than 3, pickle wi
ll try
to map the new Python 3 names to the old module names used in P
ython
2, so that the pickle data stream is readable with Python 2.
Przygotujmy jakieś dane do zapisania:
In [88]:
tel = {'Yoda' : 1111, 'Chewie' : 2222, 'Luke' : 3333}
lis = list(range(5))
l = 123
Zapisujemy je do pliku:
In [89]:
of = open("marynata","wb") #otwieramy plik w trybie binarnym
pickle.dump(tel,of)
pickle.dump(lis,of)
pickle.dump(l,of)
of.close()
Podglądnijmy zapisany plik:
In [90]:
!cat marynata
X\00\00\00YodaqMWu.�]q\00(K\00KKKKe.�K{.
Dane z pliku ładujemy w kolejności zapisania:
In [91]:
f = open("marynata","rb")
telefony = pickle.load(f)
zakres = pickle.load(f)
liczba = pickle.load(f)
f.close()
In [92]:
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 os wybierany jest odpowiedni z nich
operacje na plikach (zmiana nazwy i atrybutów, usuwanie)
operacje na katalogach
operacje na procesach
In [93]:
import os
Usuwanie plików
Tworzymy najpierw jakiś plik do usunięcia:
In [94]:
f = open("testos.txt","w")
f.write("Jakiś test")
f.close()
Usunięcie pliku jest proste:
In [95]:
os.remove("testos.txt")
Powtórzenie usunięcia wygeneruje znany już wyjątek:
In [96]:
os.remove("testos.txt")
-------------------------------------------------------------------------FileNotFoundError
Traceback (most recent ca
ll last)
<ipython-input-96-a342e4040f74> in <module>()
----> 1 os.remove("testos.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'testos.tx
t'
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 [97]:
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 [98]:
name1 = "plik.txt"
fi = open(name1,'w')
fi.write("To jest plik roboczy o nazwie %s."%name1)
fi.close()
Sprawdźmy, czy plik taki rzeczywiście powstał, i co zawiera:
In [99]:
%%bash
ls -l plik.txt
-rw-rw-r-- 1 szwabin szwabin 39 wrz 14 13:44 plik.txt
In [100]:
%%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 [101]:
name2 = "file.txt"
os.rename(name1,name2)
Sprawdźmy wynik działania tego polecenia:
In [102]:
fi = open(name1)
-------------------------------------------------------------------------FileNotFoundError
Traceback (most recent ca
ll last)
<ipython-input-102-296f70111754> in <module>()
----> 1 fi = open(name1)
FileNotFoundError: [Errno 2] No such file or directory: 'plik.txt'
In [103]:
fi = open(name2)
fi.read()
Out[103]:
'To jest plik roboczy o nazwie plik.txt.'
In [104]:
fi.close()
Informacje o pliku
In [105]:
os.stat(name2)
Out[105]:
os.stat_result(st_mode=33204, st_ino=9704262, st_dev=2054, st_nlink
=1, st_uid=1000, st_gid=1000, st_size=39, st_atime=1473853480, st_m
time=1473853452, st_ctime=1473853476)
Jak widać, wynik działania polecenia os.stat nie jest szczególnie czytelny. Możemy jednak to zmienić:
In [106]:
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: 1000 1000
- utworzony: Wed Sep 14 13:44:36 2016
- ostatni dostęp: Wed Sep 14 13:44:40 2016
- ostatnia modyfikacja: Wed Sep 14 13:44:12 2016
Dygresja! Gdybyśmy planowali stworzyć własny moduł z przydatnymi funkcjami do pracy na plikach, funkcja dump byłaby bardzo dobrą kandydatką na element tego modułu.
Podstawowe operacje na katalogach
Sprawdźmy bieżący katalog:
In [107]:
os.getcwd()
Out[107]:
'/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Moduly_i_plik
i'
Jego zawartość wyświetlimy przy pomocy funkcji os.listdir:
In [108]:
print(os.listdir(os.getcwd()))
['6_moduly_i_pliki.html', 'bpyfd_diags6.png', 'dane.dat', '__pycach
e__', 'modutils.py', '6_Moduly_i_pliki.pdf', '.ipynb_checkpoints',
'file.txt', 'fibo.py~', '9_moduly_i_pliki.ipynb', 'workfile', 'Unt
itled0.ipynb', 'fibo.py', 'marynata', 'box.jpg', 'calc.py', 'fibo.p
yc', 'osc_rk4.dat', 'Chapter8_Modules.ipynb', 'Untitled1.ipynb']
Można również tak:
In [109]:
for item in os.listdir(os.getcwd()):
print(item)
6_moduly_i_pliki.html
bpyfd_diags6.png
dane.dat
__pycache__
modutils.py
6_Moduly_i_pliki.pdf
.ipynb_checkpoints
file.txt
fibo.py~
9_moduly_i_pliki.ipynb
workfile
Untitled0.ipynb
fibo.py
marynata
box.jpg
calc.py
fibo.pyc
osc_rk4.dat
Chapter8_Modules.ipynb
Untitled1.ipynb
Przy podawaniu ścieżki do katalogów można korzystać z typowych skrótów:
In [110]:
print("Zawartość katalogu bieżącego:\n")
print(os.listdir('.'))
print("\n\nZawartość katalogu nadrzędnego:\n")
print(os.listdir('..'))
Zawartość katalogu bieżącego:
['6_moduly_i_pliki.html', 'bpyfd_diags6.png', 'dane.dat', '__pycach
e__', 'modutils.py', '6_Moduly_i_pliki.pdf', '.ipynb_checkpoints',
'file.txt', 'fibo.py~', '9_moduly_i_pliki.ipynb', 'workfile', 'Unt
itled0.ipynb', 'fibo.py', 'marynata', 'box.jpg', 'calc.py', 'fibo.p
yc', 'osc_rk4.dat', 'Chapter8_Modules.ipynb', 'Untitled1.ipynb']
Zawartość katalogu nadrzędnego:
['9_Biblioteka', '3_Zmienne_wyrazenia_instrukcje', 'Przykłady', '10
_adv', '2_Pierwsze_kroki', '12_num', '4_Reprezentacja_liczb', '13_n
um', '9_Moduly_i_pliki', '1_Intro', '7_Funkcje', '9_gui', '10_OOP',
'11_num', '5_Podstawowe_techniki', '6_Zlozone_typy_danych', '14_ga
me', '8_Podstawowe_techniki_2', 'Egzamin']
Przejście do innego katalogu roboczego:
In [112]:
os.chdir("/home/szwabin/MyPython")
os.getcwd()
Out[112]:
'/home/szwabin/MyPython'
Tworzenie katalogów:
In [113]:
os.listdir('.')
Out[113]:
[]
In [114]:
os.mkdir('Test')
os.listdir('.')
Out[114]:
['Test']
Jeśli katalog już istnieje:
In [115]:
os.mkdir('Test')
-------------------------------------------------------------------------FileExistsError
Traceback (most recent ca
ll last)
<ipython-input-115-f2fde2339d88> in <module>()
----> 1 os.mkdir('Test')
FileExistsError: [Errno 17] File exists: 'Test'
Możemy tworzyć kilka poziomów na raz:
In [116]:
os.makedirs('Test2/Poziom1/Poziom2')
os.listdir('.')
Out[116]:
['Test2', 'Test']
In [117]:
print(os.listdir('Test2'))
print(os.listdir('Test2/Poziom1'))
['Poziom1']
['Poziom2']
Pojedynczy katalog usuniemy w następujący sposób:
In [118]:
os.rmdir("Test")
os.listdir('.')
Out[118]:
['Test2']
Możliwe jest również usunięcie całej ścieżki na raz:
In [119]:
os.removedirs('Test2/Poziom1/Poziom2')
os.listdir('.')
Out[119]:
[]
Uwaga! Usuwany katalog musi być pusty:
In [120]:
os.mkdir('Test')
f = open('Test/plik.txt','w')
f.write('Bla bla bla')
f.close()
In [121]:
os.rmdir('Test')
-------------------------------------------------------------------------OSError
Traceback (most recent ca
ll last)
<ipython-input-121-9d11237dd07e> in <module>()
----> 1 os.rmdir('Test')
OSError: [Errno 39] Directory not empty: 'Test'
In [122]:
os.remove('Test/plik.txt')
os.rmdir('Test')
In [123]:
os.listdir('.')
Out[123]:
[]
Ścieżki dostępu do plików
In [124]:
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 [125]:
os.path.split(plik)
Out[125]:
('/home/szwabin/Books', 'Programming.Collective.Intelligence.pdf')
Nazwę katalogu i pliku możemy też odczytać specjalnymi funkcjami:
In [126]:
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 [127]:
os.path.join(kat,pl)
Out[127]:
'/home/szwabin/Books/Programming.Collective.Intelligence.pdf'
Przeszukiwanie drzewa katalogów
In [129]:
for root, dirs, files in os.walk("/home/szwabin/Dropbox/Zajecia/WstepDoProgramow
ania/", topdown=False):
print(root)
print(dirs)
print(files)
print('-'*20)
/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Biblioteka/.ip
ynb_checkpoints
[]
['7_biblioteka-checkpoint.ipynb', '6_moduly_i_pliki-checkpoint.ipyn
b']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Biblioteka
['.ipynb_checkpoints']
['6_moduly_i_pliki.ipynb', 'kernel_restart.png', 'tpython.pdf', 'ar
gparse_example3.py', 'przyklad2.py', 'argparse_example4c.py', '7_bi
blioteka.html', 'sys_exit.py', 'time_example.py', 'sys-settrace.p
y', 'args.py', 'csv_example2.csv', 'halo.py', 'argparse_example2.py
~', 'przyklad2.pyc', 'argparse_example.py', 'argparse_example3b.p
y', 'getopt_example.py', 'python.zip', '7_Biblioteka.pdf', 'csv_exa
mple3.csv', 'hello.py', 'argparse_example2.py', 'csv_example.csv',
'argparse_example4.py~', 'argparse_example4b.py', 'argparse_exampl
e4.py', '7_biblioteka.ipynb', 'GreenTeaPress.zip', 'sys-setprofile
r.py', 'getopt_example2.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/3_Zmienne_wyraze
nia_instrukcje/.ipynb_checkpoints
[]
['3_Zmienne_wyrazenia_instrukcje-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/3_Zmienne_wyraze
nia_instrukcje
['.ipynb_checkpoints']
['3_Zmienne_wyrazenia_instrukcje.ipynb', 'state_diagram.svg', 'stat
e_diagram.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Przykłady/rkwad
[]
['rkwad.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Przykłady/game/d
ata
[]
['romulanwarbird.jpg.bak', 'defiant.jpg', 'bkg.jpg', 'romulanwarbir
d.xcf', 'fed_laser.bmp', 'rom_laser.bmp', 'fed_laser.wav', 'rom_las
er.wav', 'romulanwarbird.jpg', 'explode2.wav', 'explode.wav']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Przykłady/game
['data']
['pytrek.py~', 'pytrek.py', 'pytrek.py.backup']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Przykłady/ball
[]
['football.jpg', 'ball.py', 'ball.py~']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Przykłady
['rkwad', 'game', 'ball']
['sunset.py', 'myturtle.py', 'pytrek.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/.ipynb_ch
eckpoints
[]
['SciPython3-checkpoint.ipynb', '11_adv-checkpoint.ipynb', '10_advcheckpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/build/tem
p.linux-x86_64-2.7
[]
['cy_dcumsum.o']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/build
['temp.linux-x86_64-2.7']
[]
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl/http1.0
[]
['pkgIndex.tcl', 'http.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl/opt0.4
[]
['pkgIndex.tcl', 'optparse.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl/encoding
[]
['jis0208.enc', 'iso8859-7.enc', 'koi8-u.enc', 'ebcdic.enc', 'cp86
1.enc', 'iso8859-14.enc', 'ascii.enc', 'cp866.enc', 'tis-620.enc',
'gb2312.enc', 'iso8859-13.enc', 'ksc5601.enc', 'macTurkish.enc',
'iso8859-8.enc', 'iso8859-5.enc', 'macRoman.enc', 'cp869.enc', 'ma
cDingbats.enc', 'symbol.enc', 'macIceland.enc', 'cp775.enc', 'iso88
59-1.enc', 'cp737.enc', 'cp850.enc', 'macCyrillic.enc', 'macJapan.e
nc', 'macCroatian.enc', 'cp932.enc', 'gb12345.enc', 'cp863.enc', 'c
p1253.enc', 'iso8859-9.enc', 'cp857.enc', 'macRomania.enc', 'big5.e
nc', 'macThai.enc', 'dingbats.enc', 'gb1988.enc', 'euc-cn.enc', 'is
o8859-16.enc', 'cp1252.enc', 'cp1251.enc', 'cp1254.enc', 'jis0212.e
nc', 'shiftjis.enc', 'euc-kr.enc', 'cp855.enc', 'iso8859-4.enc', 'k
oi8-r.enc', 'cp864.enc', 'cp862.enc', 'cp1258.enc', 'iso8859-15.en
c', 'cp865.enc', 'macCentEuro.enc', 'cp1257.enc', 'iso8859-10.enc',
'euc-jp.enc', 'iso2022.enc', 'iso2022-kr.enc', 'cp949.enc', 'cp125
5.enc', 'cp1250.enc', 'cp950.enc', 'cp874.enc', 'cp1256.enc', 'macG
reek.enc', 'iso8859-3.enc', 'iso8859-2.enc', 'cp860.enc', 'cp437.en
c', 'cp852.enc', 'cp936.enc', 'macUkraine.enc', 'gb2312-raw.enc',
'iso2022-jp.enc', 'iso8859-6.enc', 'jis0201.enc']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl/msgs
[]
['kok_in.msg', 'zh_tw.msg', 'ar_lb.msg', 'es_py.msg', 'nl_be.msg',
'ms_my.msg', 'en_za.msg', 'mt.msg', 'is.msg', 'ar_jo.msg', 'mk.ms
g', 'he.msg', 'en_ca.msg', 'en_gb.msg', 'kl.msg', 'en_hk.msg', 'it_
ch.msg', 'es_ve.msg', 'hr.msg', 'sw.msg', 'ta.msg', 'es_gt.msg', 'a
f_za.msg', 'en_sg.msg', 'en_au.msg', 'ko_kr.msg', 'ro.msg', 'da.ms
g', 'uk.msg', 'zh_cn.msg', 'es_pr.msg', 'eo.msg', 'ca.msg', 'ru.ms
g', 'es_mx.msg', 'ar.msg', 'cs.msg', 'ar_sy.msg', 'de_be.msg', 'en_
bw.msg', 'ja.msg', 'lt.msg', 'en_ph.msg', 'mr.msg', 'te_in.msg', 'e
s_ec.msg', 'es_ni.msg', 'zh.msg', 'es_do.msg', 'fr_ca.msg', 'es_ar.
msg', 'sr.msg', 'ar_in.msg', 'es_sv.msg', 'kw_gb.msg', 'gl_es.msg',
'hi.msg', 'es_pe.msg', 'vi.msg', 'es_uy.msg', 'pt_br.msg', 'zh_sg.
msg', 'fi.msg', 'zh_hk.msg', 'nb.msg', 'ko.msg', 'en_ie.msg', 'fr.m
sg', 'id.msg', 'be.msg', 'gl.msg', 'fo.msg', 'gv.msg', 'pl.msg', 'm
s.msg', 'ru_ua.msg', 'es_cl.msg', 'id_id.msg', 'kw.msg', 'kok.msg',
'de_at.msg', 'ga_ie.msg', 'es_cr.msg', 'ga.msg', 'af.msg', 'sq.ms
g', 'bg.msg', 'nl.msg', 'fr_be.msg', 'eu.msg', 'en_be.msg', 'kl_gl.
msg', 'sv.msg', 'tr.msg', 'hi_in.msg', 'bn.msg', 'bn_in.msg', 'et.m
sg', 'mr_in.msg', 'sh.msg', 'nn.msg', 'fa.msg', 'it.msg', 'es_bo.ms
g', 'es.msg', 'ta_in.msg', 'sk.msg', 'es_hn.msg', 'hu.msg', 'en_zw.
msg', 'fa_ir.msg', 'te.msg', 'th.msg', 'es_co.msg', 'en_in.msg', 'g
v_gb.msg', 'fo_fo.msg', 'en_nz.msg', 'lv.msg', 'fa_in.msg', 'eu_es.
msg', 'de.msg', 'fr_ch.msg', 'es_pa.msg', 'el.msg', 'pt.msg', 'sl.m
sg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl/tcl8/platform
[]
['shell-1.1.4.tm']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl/tcl8
['platform']
['http-2.8.8.tm', 'platform-1.0.13.tm', 'tcltest-2.3.8.tm', 'msgcat
-1.5.2.tm']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tcl
['http1.0', 'opt0.4', 'encoding', 'msgs', 'tcl8']
['parray.tcl', 'tclAppInit.c', 'tclIndex', 'package.tcl', 'tm.tcl',
'history.tcl', 'clock.tcl', 'auto.tcl', 'init.tcl', 'word.tcl', 's
afe.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tk/images
[]
['logo100.gif', 'pwrdLogo175.gif', 'logo64.gif', 'logoMed.gif', 'lo
go.eps', 'pwrdLogo.eps', 'tai-ku.gif', 'pwrdLogo200.gif', 'pwrdLogo
100.gif', 'logoLarge.gif', 'pwrdLogo150.gif', 'README', 'pwrdLogo7
5.gif', 'lamp.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tk/msgs
[]
['en_gb.msg', 'da.msg', 'eo.msg', 'ru.msg', 'cs.msg', 'en.msg', 'f
r.msg', 'pl.msg', 'nl.msg', 'sv.msg', 'it.msg', 'es.msg', 'hu.msg',
'de.msg', 'el.msg', 'pt.msg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tk/ttk
[]
['xpTheme.tcl', 'notebook.tcl', 'aquaTheme.tcl', 'combobox.tcl', 'e
ntry.tcl', 'sizegrip.tcl', 'treeview.tcl', 'altTheme.tcl', 'utils.t
cl', 'clamTheme.tcl', 'button.tcl', 'vistaTheme.tcl', 'scale.tcl',
'defaults.tcl', 'cursors.tcl', 'fonts.tcl', 'classicTheme.tcl', 'm
enubutton.tcl', 'scrollbar.tcl', 'progress.tcl', 'panedwindow.tcl',
'ttk.tcl', 'spinbox.tcl', 'winTheme.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist/tk
['images', 'msgs', 'ttk']
['focus.tcl', 'menu.tcl', 'msgbox.tcl', 'optMenu.tcl', 'listbox.tc
l', 'megawidget.tcl', 'tclIndex', 'scrlbar.tcl', 'entry.tcl', 'bger
ror.tcl', 'tkAppInit.c', 'tkfbox.tcl', 'comdlg.tcl', 'unsupported.t
cl', 'console.tcl', 'tk.tcl', 'mkpsenc.tcl', 'dialog.tcl', 'button.
tcl', 'choosedir.tcl', 'scale.tcl', 'clrpick.tcl', 'fontchooser.tc
l', 'tearoff.tcl', 'icons.tcl', 'text.tcl', 'xmfbox.tcl', 'iconlis
t.tcl', 'panedwindow.tcl', 'obsolete.tcl', 'safetk.tcl', 'spinbox.t
cl', 'palette.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l/dist
['tcl', 'tk']
['libpython2.7.so.1.0', '_codecs_kr.x86_64-linux-gnu.so', '_ctypes.
x86_64-linux-gnu.so', '_codecs_jp.x86_64-linux-gnu.so', '_codecs_is
o2022.x86_64-linux-gnu.so', '_codecs_cn.x86_64-linux-gnu.so', 'bz2.
x86_64-linux-gnu.so', '_codecs_hk.x86_64-linux-gnu.so', '_multibyte
codec.x86_64-linux-gnu.so', '_tkinter.so', '_codecs_tw.x86_64-linux
-gnu.so', 'ball']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs/bal
l
['dist']
['ball.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv/progs
['ball']
['epdb1.py', 'epdb0.py', 'epdb2.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_adv
['.ipynb_checkpoints', 'build', 'progs']
['dprod.pyf', 'functions.c', 'dprod.f', 'SciPython5.ipynb', 'setup.
py', 'particles.pyc', 'functions.pyc', 'libfunctions.so', 'function
s.py', '11_adv.html~', 'particles.py', 'cy_dcumsum.so', '11_adv.ipy
nb', 'workfile', 'trytest.py', 'hellofortran.f', 'hellofortran.so',
'run_hello_c.py', 'animation.mp4', 'dcumsum.so', '11_adv.html', 'c
y_dcumsum.pyx', 'hello.py', 'iftest.py', '11_adv.pdf', 'SciPython4.
ipynb', 'SciPython3.ipynb', '10_adv.ipynb', 'dprod.so', 'cy_dcumsu
m.c', 'osc_rk4.dat', 'matrix.jpg', 'dcumsum.f', 'functions.o']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/2_Pierwsze_krok
i/.ipynb_checkpoints
[]
['2_Pierwsze_kroki-checkpoint.ipynb', 'Untitled0-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/2_Pierwsze_krok
i/progs/.ipynb_checkpoints
[]
[]
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/2_Pierwsze_krok
i/progs/examples/Sunset
[]
[]
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/2_Pierwsze_krok
i/progs/examples
['Sunset']
[]
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/2_Pierwsze_krok
i/progs
['.ipynb_checkpoints', 'examples']
['apl.py', 'nowy.txt', 'Untitled0.ipynb', 'apl.py~']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/2_Pierwsze_kroki
['.ipynb_checkpoints', 'progs']
['bpyfd_diags1.png', 'nodejs.png', 'custom.js', 'mojplik.txt', 'sp
e.png', 'pyscripter.png', 'cli_python.png', 'program.svg', '2_Pierw
sze_kroki.ipynb', 'geany.png', 'Arrow_up_font_awesome.svg', 'progra
m.png', 'Untitled0.ipynb', 'ipython.png', 'cli_python_inter.png',
'vi.png', 'ivsc.png', 'interpreter.png', 'interpreter.svg', 'gedi
t.png', 'nano.png', 'idle.png', 'pycrust.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/12_num/.ipynb_ch
eckpoints
[]
['12_scipy-new-checkpoint.ipynb', '12_scipy-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/12_num/images
[]
['Pendulum.jpg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/12_num
['.ipynb_checkpoints', 'images']
['12_scipy.pdf', '12_scipy.ipynb', '12_scipy-new.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/4_Reprezentacja_
liczb/.ipynb_checkpoints
[]
['silnia3.5-checkpoint.ipynb', 'silnia2.7-checkpoint.ipynb', '4_Rep
rezentacja_liczb-checkpoint.ipynb', '1_Wprowadzenie-checkpoint.ipyn
b']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/4_Reprezentacja_
liczb
['.ipynb_checkpoints']
['rep3', 'rep2b', 'a.out', 'reprezentacja.cpp', 'przesuniecie.png',
'4_Reprezentacja_liczb.ipynb', 'dodawanie.png', 'rep', 'fints.f9
0', 'reprezentacja4.cpp', 'repb', 'rep4', 'reprezentacja2.cpp', 'ci
nts.cpp', 'reprezentacja2b.cpp', 'rep3b', 'reprezentacjab.cpp', 're
prezentacja3b.cpp', 'uzupelnienie.png', 'fints', 'ieee.png', 'silni
a.cpp', 'reprezentacja3.cpp', 'silnia2.7.ipynb', 'rep2', 'cints',
'1_Wprowadzenie.ipynb', 'silnia3.5.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/13_num/.ipynb_ch
eckpoints
[]
['13_inne-checkpoint.ipynb', '12_scipy-new-checkpoint.ipynb', '13_w
iz-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/13_num/images
[]
['Pendulum.jpg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/13_num
['.ipynb_checkpoints', 'images']
['filename.png', '13_inne.ipynb', 'animation.mp4', '13_inne.pdf',
'12_scipy-new.ipynb', 'filename.pdf', '13_inne.html', '13_wiz.ipyn
b']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Moduly_i_plik
i/__pycache__
[]
['fibo.cpython-34.pyc']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Moduly_i_plik
i/.ipynb_checkpoints
[]
['Untitled0-checkpoint.ipynb', 'SciPython3-checkpoint.ipynb', '5_fu
nkcje-checkpoint.ipynb', 'Chapter8_Modules-checkpoint.ipynb', '9_mo
duly_i_pliki-checkpoint.ipynb', 'Untitled1-checkpoint.ipynb', '6_mo
duly_i_pliki-checkpoint.ipynb', '4_zlozone_typy_danych-checkpoint.i
pynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Moduly_i_pliki
['__pycache__', '.ipynb_checkpoints']
['6_moduly_i_pliki.html', 'bpyfd_diags6.png', 'dane.dat', 'modutil
s.py', '6_Moduly_i_pliki.pdf', 'file.txt', 'fibo.py~', '9_moduly_i_
pliki.ipynb', 'workfile', 'Untitled0.ipynb', 'fibo.py', 'marynata',
'box.jpg', 'calc.py', 'fibo.pyc', 'osc_rk4.dat', 'Chapter8_Module
s.ipynb', 'Untitled1.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/.ipynb_c
heckpoints
[]
['1_Notatki-checkpoint.ipynb', 'week08-02-random_walk_simulation-ch
eckpoint.ipynb', '1_Wprowadzenie-checkpoint.ipynb', 'SciPython7-che
ckpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/UnlimitedSprites
[]
['bob.gif', 'unlimited-sprites.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/Ball
[]
['football.jpg', 'ball.py', 'ball.py~']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/SpaceInvaders/pyspaceinvaders/img
[]
['alien1b.png', 'alien3.png', 'player.png', 'alien2b.png', 'player
b.png', 'alien3b.png', 'alien2.png', 'missile_player.png', 'explosi
on.png', 'alien1.png', 'missile_alien.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/SpaceInvaders/pyspaceinvaders
['img']
['libgame.py', 'pyspaceinvaders.py', 'LICENSE_GNU_GPL.txt', 'notes.
txt', 'libutils.py', 'README.txt', 'libutils.pyc', 'libgame.pyc']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/SpaceInvaders
['pyspaceinvaders']
['pyspaceinvaders_20050109.zip.gz']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/Portscan
[]
['portscan']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/Rzut
[]
['rzut.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/Sunset
[]
['sunset.py', 'sunset.py~', '20150708_163539.jpg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/WebServer/cgi-bin
[]
['beispiele.py', 'index.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/WebServer
['cgi-bin']
['index.html', 'Webserver.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/TomPong/tompong/data
[]
['win_icon.png', 'ball.png', 'background.png', 'bat.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/TomPong/tompong
['data']
['pong.py', 'LICENSE', 'README', 'pong.py~']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/TomPong
['tompong']
[]
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/Average
[]
['time_evolution_tri_0087.dat', 'time_evolution_tri_0008.dat', 'tim
e_evolution_tri_0052.dat', 'time_evolution_tri_0032.dat', 'time_evo
lution_tri_0020.dat', 'time_evolution_tri_0031.dat', 'time_evolutio
n_tri_0071.dat', 'time_evolution_tri_0068.dat', 'time_evolution_tri
_0067.dat', 'time_evolution_tri_0039.dat', 'time_evolution_tri_001
6.dat', 'time_evolution_tri_0074.dat', 'time_evolution_tri_0086.da
t', 'time_evolution_tri_0096.dat', 'time_evolution_tri_0069.dat',
'time_evolution_tri_0054.dat', 'time_evolution_average.dat', 'time
_evolution_tri_0085.dat', 'time_evolution_tri_0057.dat', 'time_evol
ution_tri_0076.dat', 'time_evolution_tri_0078.dat', 'time_evolution
_tri_0043.dat', 'time_evolution_tri_0006.dat', 'time_evolution_tri_
0033.dat', 'time_evolution_tri_0056.dat', 'time_evolution_tri_0045.
dat', 'time_evolution_tri_0059.dat', 'time_evolution_tri_0046.dat',
'time_evolution_tri_0047.dat', 'time_evolution_tri_0037.dat', 'tim
e_evolution_tri_0051.dat', 'time_evolution_tri_0022.dat', 'time_evo
lution_tri_0083.dat', 'time_evolution_tri_0011.dat', 'time_evolutio
n_tri_0034.dat', 'time_evolution_tri_0024.dat', 'time_evolution_tri
_0058.dat', 'time_evolution_tri_0080.dat', 'time_evolution_tri_001
0.dat', 'time_evolution_tri_0050.dat', 'time_evolution_tri_0100.da
t', 'time_evolution_tri_0019.dat', 'time_evolution_tri_0036.dat',
'time_evolution_tri_0095.dat', 'time_evolution_tri_0028.dat', 'tim
e_evolution_tri_0041.dat', 'time_evolution_tri_0012.dat', 'time_evo
lution_tri_0077.dat', 'time_evolution_tri_0026.dat', 'time_evolutio
n_tri_0015.dat', 'time_evolution_tri_0009.dat', 'time_evolution_tri
_0065.dat', 'time_evolution_tri_0038.dat', 'time_evolution_tri_009
8.dat', 'time_evolution_tri_0002.dat', 'time_evolution_tri_0018.da
t', 'time_evolution_tri_0081.dat', 'time_evolution_average.py', 'ti
me_evolution_tri_0027.dat', 'time_evolution_tri_0075.dat', 'time_ev
olution_tri_0005.dat', 'time_evolution_tri_0093.dat', 'time_evoluti
on_tri_0089.dat', 'time_evolution_tri_0049.dat', 'time_evolution_tr
i_0007.dat', 'time_evolution_tri_0079.dat', 'time_evolution_tri_006
4.dat', 'time_evolution_tri_0061.dat', 'time_evolution_tri_0001.da
t', 'time_evolution_tri_0053.dat', 'time_evolution_tri_0090.dat',
'time_evolution_tri_0004.dat', 'time_evolution_tri_0055.dat', 'tim
e_evolution_tri_0084.dat', 'time_evolution_tri_0017.dat', 'time_evo
lution_tri_0040.dat', 'time_evolution_tri_0021.dat', 'time_evolutio
n_tri_0099.dat', 'time_evolution_tri_0062.dat', 'time_evolution_tri
_0023.dat', 'time_evolution_tri_0030.dat', 'time_evolution_tri_007
2.dat', 'time_evolution_tri_0044.dat', 'time_evolution_tri_0063.da
t', 'time_evolution_tri_0042.dat', 'time_evolution_tri_0029.dat',
'time_evolution_tri_0003.dat', 'time_evolution_tri_0097.dat', 'tim
e_evolution_tri_0092.dat', 'time_evolution_tri_0094.dat', 'time_evo
lution_tri_0014.dat', 'time_evolution_tri_0073.dat', 'time_evolutio
n_tri_0060.dat', 'time_evolution_tri_0048.dat', 'time_evolution_tri
_0025.dat', 'time_evolution_tri_0066.dat', 'time_evolution_tri_009
1.dat', 'time_evolution_tri_0013.dat', 'time_evolution_tri_0035.da
t', 'time_evolution_tri_0082.dat', 'time_evolution_tri_0070.dat',
'time_evolution_tri_0088.dat']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y/TicTacToe
[]
['tictactoe.py', 'ttt-tutorial.pdf']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/Przyklad
y
['UnlimitedSprites', 'Ball', 'SpaceInvaders', 'Portscan', 'Rzut',
'Sunset', 'WebServer', 'TomPong', 'Average', 'TicTacToe']
[]
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro/progs
[]
['a.out', 'hello.o', 'hellof', 'hello', 'hello.rb', 'hello.pl', 'he
llo.cs', 'hellocpp', 'hello.cpp', 'helloc', 'hello.pas', 'hello.p
y', 'HelloWorld.class', 'hello.php', 'hello.f90', 'hello.c', 'hell
o.exe', 'hello.jl', 'HelloWorld.java']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/1_Intro
['.ipynb_checkpoints', 'Przyklady', 'progs']
['a.out', 'custom.js', 'bug.jpg', 'tiobe.png', '1_Notatki.ipynb',
'ivsc.png', 'ivsc.svg', '1_Wprowadzenie.ipynb', 'Pendulum.jpg', 'l
anguages.jpg', '1_Wprowadzenie.html~']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/7_Funkcje/.ipynb
_checkpoints
[]
['5_Podstawowe_techniki-checkpoint.ipynb', '7_funkcje-checkpoint.ip
ynb', '5_funkcje-checkpoint.ipynb', '4_zlozone_typy_danych-checkpoi
nt.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/7_Funkcje
['.ipynb_checkpoints']
['5_funkcje.pdf', '7_funkcje.ipynb', '5_funkcje.html', 'box.jpg',
'5_Podstawowe_techniki.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/.ipynb_che
ckpoints
[]
['9_gui_new-checkpoint.ipynb', '9_gui-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/images
[]
['kernel_restart.png', 'bad-functionaloverload1.jpg', 'konqueror.pd
f', 'ui_conventions.png', 'bad-functionaloverload2.jpg', 'konquero
r.png', 'badui2.jpg', 'Pendulum.jpg', 'ui_paper_design.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/GUI/
plotting
[]
['PyPlot.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/GUI
['plotting']
['witaj-4-utf.py', 'witaj-4.py', 'witaj-3.py', 'witaj-1.py', 'demo2.py', 'filebrowser2.py', 'demo-4.py', 'witaj-7a.py', 'witaj-2.py',
'demo-3.py', 'witaj-5.py', 'witaj-7.py', 'witaj-6.py', 'demo-1.p
y']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/http1.0
[]
['pkgIndex.tcl', 'http.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/opt0.4
[]
['pkgIndex.tcl', 'optparse.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/encoding
[]
['jis0208.enc', 'iso8859-7.enc', 'koi8-u.enc', 'ebcdic.enc', 'cp86
1.enc', 'iso8859-14.enc', 'ascii.enc', 'cp866.enc', 'tis-620.enc',
'gb2312.enc', 'iso8859-13.enc', 'ksc5601.enc', 'macTurkish.enc',
'iso8859-8.enc', 'iso8859-5.enc', 'macRoman.enc', 'cp869.enc', 'ma
cDingbats.enc', 'symbol.enc', 'macIceland.enc', 'cp775.enc', 'iso88
59-1.enc', 'cp737.enc', 'cp850.enc', 'macCyrillic.enc', 'macJapan.e
nc', 'macCroatian.enc', 'cp932.enc', 'gb12345.enc', 'cp863.enc', 'c
p1253.enc', 'iso8859-9.enc', 'cp857.enc', 'macRomania.enc', 'big5.e
nc', 'macThai.enc', 'dingbats.enc', 'gb1988.enc', 'euc-cn.enc', 'is
o8859-16.enc', 'cp1252.enc', 'cp1251.enc', 'cp1254.enc', 'jis0212.e
nc', 'shiftjis.enc', 'euc-kr.enc', 'cp855.enc', 'iso8859-4.enc', 'k
oi8-r.enc', 'cp864.enc', 'cp862.enc', 'cp1258.enc', 'iso8859-15.en
c', 'cp865.enc', 'macCentEuro.enc', 'cp1257.enc', 'iso8859-10.enc',
'euc-jp.enc', 'iso2022.enc', 'iso2022-kr.enc', 'cp949.enc', 'cp125
5.enc', 'cp1250.enc', 'cp950.enc', 'cp874.enc', 'cp1256.enc', 'macG
reek.enc', 'iso8859-3.enc', 'iso8859-2.enc', 'cp860.enc', 'cp437.en
c', 'cp852.enc', 'cp936.enc', 'macUkraine.enc', 'gb2312-raw.enc',
'iso2022-jp.enc', 'iso8859-6.enc', 'jis0201.enc']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/msgs
[]
['kok_in.msg', 'zh_tw.msg', 'ar_lb.msg', 'es_py.msg', 'nl_be.msg',
'ms_my.msg', 'en_za.msg', 'mt.msg', 'is.msg', 'ar_jo.msg', 'mk.ms
g', 'he.msg', 'en_ca.msg', 'en_gb.msg', 'kl.msg', 'en_hk.msg', 'it_
ch.msg', 'es_ve.msg', 'hr.msg', 'sw.msg', 'ta.msg', 'es_gt.msg', 'a
f_za.msg', 'en_sg.msg', 'en_au.msg', 'ko_kr.msg', 'ro.msg', 'da.ms
g', 'uk.msg', 'zh_cn.msg', 'es_pr.msg', 'eo.msg', 'ca.msg', 'ru.ms
g', 'es_mx.msg', 'ar.msg', 'cs.msg', 'ar_sy.msg', 'de_be.msg', 'en_
bw.msg', 'ja.msg', 'lt.msg', 'en_ph.msg', 'mr.msg', 'te_in.msg', 'e
s_ec.msg', 'es_ni.msg', 'zh.msg', 'es_do.msg', 'fr_ca.msg', 'es_ar.
msg', 'sr.msg', 'ar_in.msg', 'es_sv.msg', 'kw_gb.msg', 'gl_es.msg',
'hi.msg', 'es_pe.msg', 'vi.msg', 'es_uy.msg', 'pt_br.msg', 'zh_sg.
msg', 'fi.msg', 'zh_hk.msg', 'nb.msg', 'ko.msg', 'en_ie.msg', 'fr.m
sg', 'id.msg', 'be.msg', 'gl.msg', 'fo.msg', 'gv.msg', 'pl.msg', 'm
s.msg', 'ru_ua.msg', 'es_cl.msg', 'id_id.msg', 'kw.msg', 'kok.msg',
'de_at.msg', 'ga_ie.msg', 'es_cr.msg', 'ga.msg', 'af.msg', 'sq.ms
g', 'bg.msg', 'nl.msg', 'fr_be.msg', 'eu.msg', 'en_be.msg', 'kl_gl.
msg', 'sv.msg', 'tr.msg', 'hi_in.msg', 'bn.msg', 'bn_in.msg', 'et.m
sg', 'mr_in.msg', 'sh.msg', 'nn.msg', 'fa.msg', 'it.msg', 'es_bo.ms
g', 'es.msg', 'ta_in.msg', 'sk.msg', 'es_hn.msg', 'hu.msg', 'en_zw.
msg', 'fa_ir.msg', 'te.msg', 'th.msg', 'es_co.msg', 'en_in.msg', 'g
v_gb.msg', 'fo_fo.msg', 'en_nz.msg', 'lv.msg', 'fa_in.msg', 'eu_es.
msg', 'de.msg', 'fr_ch.msg', 'es_pa.msg', 'el.msg', 'pt.msg', 'sl.m
sg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/tcl8/platform
[]
['shell-1.1.4.tm']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/tcl8
['platform']
['http-2.8.7.tm', 'platform-1.0.12.tm', 'tcltest-2.3.6.tm', 'msgcat
-1.5.2.tm']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/vtk/vtkinteraction
[]
['setget.tcl', 'vtkinteraction.tcl.in', 'Interactor.tcl', 'bindings
-rw.tcl', 'bindings.tcl', 'CMakeLists.txt', 'bindings-iw.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl/vtk
['vtkinteraction']
['TestSetGet.tcl', 'FindString.tcl', 'prtImageTest.tcl', 'PrintSelf
Check.tcl', 'rtImageTest.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tcl
['http1.0', 'opt0.4', 'encoding', 'msgs', 'tcl8', 'vtk']
['parray.tcl', 'tclAppInit.c', 'tclIndex', 'package.tcl', 'tm.tcl',
'history.tcl', 'clock.tcl', 'auto.tcl', 'init.tcl', 'word.tcl', 's
afe.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tk/images
[]
['logo100.gif', 'pwrdLogo175.gif', 'logo64.gif', 'lamp.svg', 'logoM
ed.gif', 'logo.eps', 'pwrdLogo.eps', 'tai-ku.gif', 'pwrdLogo200.gi
f', 'pwrdLogo100.gif', 'logoLarge.gif', 'pwrdLogo150.gif', 'READM
E', 'pwrdLogo75.gif', 'lamp.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tk/msgs
[]
['en_gb.msg', 'da.msg', 'eo.msg', 'ru.msg', 'cs.msg', 'en.msg', 'f
r.msg', 'pl.msg', 'nl.msg', 'sv.msg', 'it.msg', 'es.msg', 'hu.msg',
'de.msg', 'el.msg', 'pt.msg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tk/ttk
[]
['xpTheme.tcl', 'notebook.tcl', 'aquaTheme.tcl', 'combobox.tcl', 'e
ntry.tcl', 'sizegrip.tcl', 'treeview.tcl', 'altTheme.tcl', 'utils.t
cl', 'clamTheme.tcl', 'button.tcl', 'vistaTheme.tcl', 'scale.tcl',
'defaults.tcl', 'cursors.tcl', 'fonts.tcl', 'classicTheme.tcl', 'm
enubutton.tcl', 'scrollbar.tcl', 'progress.tcl', 'panedwindow.tcl',
'ttk.tcl', 'spinbox.tcl', 'winTheme.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist/tk
['images', 'msgs', 'ttk']
['focus.tcl', 'menu.tcl', 'msgbox.tcl', 'optMenu.tcl', 'listbox.tc
l', 'megawidget.tcl', 'tclIndex', 'scrlbar.tcl', 'entry.tcl', 'bger
ror.tcl', 'tkAppInit.c', 'tkfbox.tcl', 'comdlg.tcl', 'unsupported.t
cl', 'console.tcl', 'tk.tcl', 'mkpsenc.tcl', 'dialog.tcl', 'button.
tcl', 'choosedir.tcl', 'scale.tcl', 'clrpick.tcl', 'fontchooser.tc
l', 'tearoff.tcl', 'icons.tcl', 'text.tcl', 'xmfbox.tcl', 'iconlis
t.tcl', 'panedwindow.tcl', 'obsolete.tcl', 'safetk.tcl', 'spinbox.t
cl', 'palette.tcl']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/bal
l/dist
['tcl', 'tk']
['libpython2.7.so.1.0', '_codecs_kr.x86_64-linux-gnu.so', '_ctypes.
x86_64-linux-gnu.so', '_codecs_jp.x86_64-linux-gnu.so', '_codecs_is
o2022.x86_64-linux-gnu.so', '_codecs_cn.x86_64-linux-gnu.so', 'bz2.
x86_64-linux-gnu.so', '_codecs_hk.x86_64-linux-gnu.so', '_multibyte
codec.x86_64-linux-gnu.so', '_tkinter.so', '_codecs_tw.x86_64-linux
-gnu.so', 'ball']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs/ball
['dist']
['ball.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui/progs
['GUI', 'ball']
['tpython.pdf', 'argparse_example3.py', 'argparse_example4c.py', 's
ys_exit.py', 'sys-settrace.py~', 'time_example.py', 'sys-settrace.p
y', 'args.py', 'csv_example2.csv', 'halo.py', 'argparse_example2.py
~', 'argparse_example.py', 'argparse_example3b.py', 'getopt_exampl
e.py', 'sys-setprofiler.py~', 'csv_example3.csv', 'argparse_example
2.py', 'csv_example.csv', 'argparse_example4.py~', 'argparse_exampl
e4b.py', 'argparse_example4.py', 'sys-setprofiler.py', 'getopt_exam
ple2.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_gui
['.ipynb_checkpoints', 'images', 'progs']
['9_gui_new.ipynb', '9_gui.ipynb', '9-gui.pdf']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_OOP/.ipynb_ch
eckpoints
[]
['Untitled0-checkpoint.ipynb', '8_oop-checkpoint.ipynb', '7_bibliot
eka-checkpoint.ipynb', 'Atrybuty_klasy_dodatek-checkpoint.ipynb',
'Atrybuty klasy - dodatek-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/10_OOP
['.ipynb_checkpoints']
['tpython.pdf', 'input_encoding.py', 'particles.pyc', 'particles.p
y', 'Untitled0.ipynb', '8_oop.pdf', 'jar', '8_oop.ipynb', '9_gui.ip
ynb', '8_oop.html', '7_biblioteka.ipynb', 'GreenTeaPress.zip', 'ukl
ad.svg', 'Atrybuty_klasy_dodatek.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/11_num/.ipynb_ch
eckpoints
[]
['11_numpy-new-checkpoint.ipynb', '11_numpy-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/11_num/data
[]
['random-matrix.csv', 'wroclaw_oct_2014.txt', 'matrix.csv', 'random
-matrix.npy']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/11_num
['.ipynb_checkpoints', 'data']
['11_numpy.pdf', '11_numpy-new.ipynb', '11_numpy.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/5_Podstawowe_tec
hniki/.ipynb_checkpoints
[]
['5_Podstawowe_techniki-checkpoint.ipynb', '1_Wprowadzenie-checkpoi
nt.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/5_Podstawowe_tec
hniki
['.ipynb_checkpoints']
['bisekcja.png', 'bubble.png', '1_Wprowadzenie.ipynb', '5_Podstawow
e_techniki.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/6_Zlozone_typy_d
anych/.ipynb_checkpoints
[]
['6_zlozone_typy_danych-checkpoint.ipynb', '4_zlozone_typy_danych-c
heckpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/6_Zlozone_typy_d
anych
['.ipynb_checkpoints']
['labela2.svg', 'boxa2.svg', 'labela1.svg', '4_zlozone_typy_danych.
html~', 'labelab2.svg', 'box.jpg', '6_zlozone_typy_danych.ipynb',
'label.svg', 'box.svg', 'boxab2.svg', 'boxa1.svg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/14_game/.ipynb_c
heckpoints
[]
['Notatki do wykładu-checkpoint.ipynb', 'Game Intro-checkpoint.ipyn
b']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/14_game/wyklad/d
ata
[]
['romulanwarbird.jpg.bak', 'defiant.jpg', 'bkg.jpg', 'romulanwarbir
d.xcf', 'fed_laser.bmp', 'rom_laser.bmp', 'fed_laser.wav', 'rom_las
er.wav', 'romulanwarbird.jpg', 'explode2.wav', 'explode.wav']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/14_game/wyklad
['data']
['game.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/14_game/progs/da
ta
[]
['defiant.jpg', 'bkg.jpg', 'fed_laser.bmp', 'rom_laser.bmp', 'fed_l
aser.wav', 'rom_laser.wav', 'romulanwarbird.jpg', 'explode2.wav',
'explode.wav']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/14_game/progs
['data']
['wyklad_12_13.tar.gz', 'game_6.py', 'game_11.py', 'game_15.py', 'g
ame_10.py', 'game_3.py', 'game_8.py', 'game_4.py', 'game_5.py', 'ga
me_2.py', 'game_14.py', 'game_13.py', 'game_1.py', 'game_9.py', 'ga
me_7.py', 'game_12.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/14_game
['.ipynb_checkpoints', 'wyklad', 'progs']
['Game Intro.ipynb', 'game_intro.pdf', 'notatki_do_wykladu.pdf_zmia
ny.xoj', 'Notatki do wykładu.ipynb', 'notatki_do_wykladu.pdf', 'not
atki_do_wykladu.pdf_zmiany.pdf', 'scene.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/8_Podstawowe_tec
hniki_2/.ipynb_checkpoints
[]
['8_Podstawowe_techniki_2-checkpoint.ipynb']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/8_Podstawowe_tec
hniki_2
['.ipynb_checkpoints']
['hanoi.gif', 'hanoi.png', '8_Podstawowe_techniki_2.ipynb', 'tostr.
png', 'droste.jpg']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin/2016/pop
rawkowy
[]
['tabliczka_mnozenia.py', 'armstrong.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin/2016/zer
owy
[]
['tabliczka_mnozenia.py', 'wielokrotnosc.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin/2016/dru
gi/shoop_files
[]
['mikko-flagan.png.100x100_q85.png', 'screenshot-reddit-gifts-djang
o-websites.png', 'django-logo-django-websites.png', '22.png__1000x0
_q85_subsampling-2.png', 'saved_resource.html', 'ga.js', 'screensho
t-playfire-django-websites.png', 'screenshot-mahalo-django-website
s.png', 'screenshot-youtube-python-websites.png', 'shoop.svg', 'scr
eenshot-dropbox-python-websites.png__601x305_q85_subsampling-2.pn
g', 'screenshot-survey-monkey-python-websites.png__601x291_q85_subs
ampling-2.png', 'ServiceGetProactiveChatAgent', 'lounge.bundle.00fa
02922a3882296ad8e083d22a7bdb.js', 'embed.js', 'lounge.b6aa56dd8e66d
a3366729e9a99a5cb75.css', 'screenshot-pitchfork-django-websites.pn
g', 'shoop.js', 'screenshot-instagram-python-websites.png', 'screen
shot-bitly-python-websites.png', 'css', 'screenshot-bitbucket-djang
o-websites.png', '_Incapsula_Resource', 'screenshot-hipmunk-pythonwebsites.png', 'screenshot-eventbrite-django-websites.png', 'shoop_
logo_with_text.svg', 'screenshot-pinterest-django-websites.png', 's
creenshot-google-python-websites.png__601x303_q85_subsampling-2.pn
g', 'noavatar92.4549c5353ccf103d32a8b81a856576ed.png', 'screenshotwashington-post-django-websites.png', 'screenshot-firefox-support-d
jango-websites.png', 'screenshot-the-onion-django-websites.png', 's
creenshot-spotify-python-websites.jpg', 'shoop.css', 'lounge.load.5
3b9c10388f784fd4079c153789a74db.js', 'screenshot-disqus-django-webs
ites.png', 'screenshot-yahoo-maps-python-websites.png__601x289_q85_
subsampling-2.png', 'noavatar92.png', 'discovery.2f3e6d9b40187bc008
976bc1b207157b.css', 'c220b86b-fa41-4ea0-9eab-c5f543803a91.js', 'sc
reenshot-reddit-python-websites.png', 'analytics.js', 'screenshot-n
asa-django-websites.png', 'statusImage', 'common.bundle.d443bd6764d
eb8306d597348ec223cc5.js', 'config.js', 'fira.css', 'discovery.bund
le.9235b3911b16f0d3d06880af5bab0c62.js', 'python-logo-python-websit
es.png', 'screenshot-prezi-django-websites.png', 'screenshot-quorapython-websites.png', '526721.js', 'jstracker.min.js', 'screenshotrdio-django-websites.png']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin/2016/dru
gi
['shoop_files']
['matmul.py', 'shoop.html', 'parser.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin/2016/pie
rwszy
[]
['tux.bmp', 'bmp.py', 'lcm.py']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin/2016
['poprawkowy', 'zerowy', 'drugi', 'pierwszy']
['tux.bmp', 'poprawkowy.aux', 'poprawkowy.log', 'zerowy.pdf', 'popr
awkowy.tex', 'pierwszy.tex', 'drugi.tex', 'terminy', 'zerowy.log',
'poprawkowy.synctex.gz', 'zerowy.aux', 'drugi.aux', 'pierwszy.pd
f', 'drugi.log', 'pierwszy.aux', 'drugi.synctex.gz', 'zerowy.tex',
'pierwszy.synctex.gz', 'drugi.pdf', 'poprawkowy.pdf', 'pierwszy.lo
g', 'egzamin_przyklad.tex', 'zerowy.synctex.gz', 'egzamin_przyklad.
pdf']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/Egzamin
['2016']
['tux.bmp', 'ciekawe_zadania.synctex.gz', 'ciekawe_zadania.aux', 'c
iekawe_zadania.tex', 'perlin.jpg', 'lista1.tex', 'ciekawe_zadania.p
df', 'timeline.jpg', 'ciekawe_zadania.log']
-------------------/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/
['9_Biblioteka', '3_Zmienne_wyrazenia_instrukcje', 'Przykłady', '10
_adv', '2_Pierwsze_kroki', '12_num', '4_Reprezentacja_liczb', '13_n
um', '9_Moduly_i_pliki', '1_Intro', '7_Funkcje', '9_gui', '10_OOP',
'11_num', '5_Podstawowe_techniki', '6_Zlozone_typy_danych', '14_ga
me', '8_Podstawowe_techniki_2', 'Egzamin']
[]
--------------------
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 [130]:
import glob
os.chdir('/home/szwabin/Dropbox/Zajecia/WstepDoProgramowania/9_Moduly_i_pliki')
Wszystkie pliki o rozszerzeniu ipynb:
In [132]:
print(glob.glob('*.ipynb'))
['9_moduly_i_pliki.ipynb', 'Untitled0.ipynb', 'Chapter8_Modules.ipy
nb', 'Untitled1.ipynb']
Wszystkie pliki w aktualnym katalogu:
In [133]:
print(glob.glob('*.*'))
['6_moduly_i_pliki.html', 'bpyfd_diags6.png', 'dane.dat', 'modutil
s.py', '6_Moduly_i_pliki.pdf', 'file.txt', 'fibo.py~', '9_moduly_i_
pliki.ipynb', 'Untitled0.ipynb', 'fibo.py', 'box.jpg', 'calc.py',
'fibo.pyc', 'osc_rk4.dat', 'Chapter8_Modules.ipynb', 'Untitled1.ip
ynb']
Pliki o rozszerzeniu składającym się z 3 liter:
In [134]:
print(glob.glob("*.???"))
['bpyfd_diags6.png', 'dane.dat', '6_Moduly_i_pliki.pdf', 'file.tx
t', 'fibo.py~', 'box.jpg', 'fibo.pyc', 'osc_rk4.dat']
Pliki o rozszerzeniu składającym się z 3 liter, przy czym pierwszą literą rozszerzenia jest p lub t:
In [135]:
print(glob.glob("*.[pt]??"))
['bpyfd_diags6.png', '6_Moduly_i_pliki.pdf', 'file.txt', 'fibo.py
~', 'fibo.pyc']