482_python_osnove_pythona.pdf
TRANSCRIPT
-
8/20/2019 482_Python_osnove_Pythona.pdf
1/49
AL SWEIGART
PRAKTIČNO PROGRAMIRANJE ZA POČETNIKE
UVOD U PYTHON Automatizovanje dosadnih poslova
-
8/20/2019 482_Python_osnove_Pythona.pdf
2/49
-
8/20/2019 482_Python_osnove_Pythona.pdf
3/49
Al Sweigart
PRAKTIČNO PROGRAMIRANJE ZA POČETNIKE
UVOD U PYTHON Automatizovanje dosadnih poslova
-
8/20/2019 482_Python_osnove_Pythona.pdf
4/49
Izdavač:
Obalskih radnika 15, Beograd
Tel: 011/2520272
e-mail: [email protected]
internet: www.kombib.rs
Urednik: Mihailo J. Šolajić
Za izdavača, direktor:
Mihailo J. Šolajić
Autor: Al Sweigart
Prevod: Slavica Prudkov
Lektura: Miloš Jevtović
Slog : Zvonko Aleksić
Znak Kompjuter biblioteke:
Miloš Milosavljević
Štampa: „Pekograf“, Zemun
Tiraž: 500
Godina izdanja: 2016.
Broj knjige: 482
Izdanje: Prvo
ISBN: 978-86-7310-505-5
Automate the Boring Stuff
with Python by Al Sweigart,
ISBN: 978-1-59327-599-02015
Copyright © 2015 by Al Sweigart, No Starch Press, Inc.
All right reserved. No part of this book may be reproduced or
transmitted in any form or by means, electronic or mechanical,
including photocopying, recording or by any information storage
retrieval system, without permission from the Publisher.
Autorizovani prevod sa engleskog jezika edicije u izdanju
„No Starch Press, Inc.”, Copyright © 2015.
Sva prava zadržana. Nije dozvoljeno da nijedan deo ove knjige
bude reprodukovan ili snimljen na bilo koji način ili bilokojim sredstvom, elektronskim ili mehaničkim, uključujućifotokopiranje, snimanje ili drugi sistem presnimavanja
informacija, bez dozvole izdavača.
Zaštitni znaci
Kompjuter Biblioteka i „No Starch Press, Inc.” su pokušali da u
ovoj knjizi razgraniče sve zaštitne oznake od opisnih termina, pra-teći stil isticanja oznaka velikim slovima.Autor i izdavač su učinili velike napore u pripremi ove knjige, čiji je sadržaj zasnovan na poslednjem (dostupnom) izdanju softvera.Delovi rukopisa su možda zasnovani na predizdanju softvera
dobijenog od strane proizvođača. Autor i izdavač ne daju nikakvegarancije u pogledu kompletnosti ili tačnosti navoda iz ove knjige,niti prihvataju ikakvu odgovornost za performanse ili gubitke,
odnosno oštećenja nastala kao direktna ili indirektna posledicakorišćenja informacija iz ove knjige.
CIP - Каталогизација у публикацијиНародна библиотека Србије, Београд
-
8/20/2019 482_Python_osnove_Pythona.pdf
5/49
iiiiii
Kratak sadržaj
UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
DEO I
POGLAVLJE 1
Osnove Pythona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
POGLAVLJE 2
Kontrola toka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
POGLAVLJE 3
Funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
POGLAVLJE 4
Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
POGLAVLJE 5
Rečnici i strukturiranje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
POGLAVLJE 6
Manipulisanje nizovima. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
DEO I
POGLAVLJE 7
Podudaranje šablona pomoću regularnih izraza . . . . . . . . . . . . . . . . . . . . . . . . 147
POGLAVLJE 8
Čitanje i pisanje fajlova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
-
8/20/2019 482_Python_osnove_Pythona.pdf
6/49
iv Kratak sadržaj
POGLAVLJE 9
Organizovanje fajlova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
POGLAVLJE 10
Ispravljanje grešaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
POGLAVLJE 11
Web isecanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
POGLAVLJE 12
Upotreba Excel tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
POGLAVLJE 13
Upotreba PDF i Word dokumenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
POGLAVLJE 14
Upotreba CSV fajlova i JSON podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
POGLAVLJE 15
Evidencija vremena, raspoređivanje zadatakai pokretanje programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
POGLAVLJE 16
Slanje e-maila i tekstualnih poruka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
POGLAVLJE 17
Manipulisanje slikama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
POGLAVLJE 18
Kontrolisanje tastature i miša pomoću GUI automatizacije . . . . . . . . . . . . . . 413
DODATAK A
Instaliranje nezavisnih modula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
DODATAK B
Pokretanje programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
DODATAK C
Odgovori na praktična pitanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
INDEKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
-
8/20/2019 482_Python_osnove_Pythona.pdf
7/49
Sadržaj
UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Za koga je ova knjiga? ...................................................................................................... ............................. 2Konvencije ......................................................................................... ................................................................ 2Šta je programiranje?..................................................................................................................................... 3
Šta je Python? .......................................................................................... ................................................ 4Programerima nije potrebno veliko poznavanje matematike ............................................... 4Programiranje je kreativna aktivnost .............................................................................................. 5
O ovoj knjizi ....................................................................................................... ................................................ 5Preuzimanje i instaliranje Pythona .............................................................................................. ............. 6
Pokretanje IDLE-a ............................................................................................ ................................................ 7Interaktivna konzola ................................................................................................ .............................. 8
Pronalaženje pomoći ...................................................................................................... ............................... 8„Pametno“ postavljanje programerskih pitanja .................................................................................. 9Rezime ............................................................................................... ................................................................10
DEO I
POGLAVLJE 1 13
Osnove Pythona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Unošenje izraza u interaktivnu konzolu ..............................................................................................14Vrste podataka celog broja, pokretne tačke i niza ................................................................................16Spajanje i ponavljanje niza .......................................................................................................................17Čuvanje vrednosti u promenljivim ........................................................................................................18
Iskazi dodele ..........................................................................................................................................18Nazivi promenljivih .............................................................................................................................20
Vaš prvi program ..........................................................................................................................................21Analiza programa ............................................................................................ ..............................................22
Komentari ...............................................................................................................................................22Funkcija print() ......................................................................................................................................23Funkcija input() .....................................................................................................................................23Štampanje imena korisnika .............................................................................................................24Funkcija len() ..........................................................................................................................................24
-
8/20/2019 482_Python_osnove_Pythona.pdf
8/49
vi Sadržaj
Funkcije str(), int() i float() ............................................................................................... ...................25Rezime ..............................................................................................................................................................28Praktična pitanja ...........................................................................................................................................29
POGLAVLJE 2 31
Kontrola toka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Bulove (logičke) vrednosti ........................................................................................................................32Operatori poređenja ...................................................................................................................................33Bulovi (logički) operatori ...........................................................................................................................35
Binarni Bulovi operatori ....................................................................................................................35Operator not .........................................................................................................................................36
Mešanje Bulovih operatora i operatora poređenja ..........................................................................36Elementi kontrole toka ...............................................................................................................................37
Uslovi .......................................................................................................................................................37
Blokovi koda ..........................................................................................................................................37Izvršavanje programa .................................................................................................................................38Iskazi kontrole toka ......................................................................................................................................38
Iskazi if .....................................................................................................................................................38Iskazi else ................................................................................................................................................39Iskazi elif ............................................................................................ .......................................................40Petlje while .............................................................................................................................................45
Dosadna petlja while ............................................................................................... ...................47Iskazi break ............................................................................................................................................49Iskazi continue ......................................................................................................................................50
Petlja for i funkcija range() ................................................................................................................53Ekvivalentna petlja while .........................................................................................................55Argumenti za početak, zaustavljanje i korake funkcije range() ................................56
Importovanje modula ................................................................................................................................57Iskazi from import ...............................................................................................................................58
Ranije završavanje programa pomoću funkcije sys .exit() ...........................................................58Rezime ..............................................................................................................................................................59Praktična pitanja ....................................................................................................... .....................................59
POGLAVLJE 3 .............................................................................................61
Funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Iskazi def sa parametrima ..................................................................................................... ....................63Vraćene vrednosti i iskazi return ........................................................................................ ....................63Vrednost None ...............................................................................................................................................65Argumenti ključne reči i funkcija print() ...............................................................................................65Lokalni i globalni opseg vidljivosti ..................................................................................................... ...66
Lokalne promenljive ne mogu da se upotrebe u globalnom opsegu vidljivosti ..........67Lokalni opsezi vidljivosti ne mogu da koriste promenljive u drugim lokalnim
opsezima vidljivosti ......................................................................................................................68Globalne promenljive mogu da se čitaju iz lokalnog opsega vidljivosti .........................69
Lokalne i globalne promenljive koje imaju isti naziv .............................................................69Iskaz global .....................................................................................................................................................70Rukovanje izuzecima ..................................................................................................................................72Kratak program: Guess the Number ......................................................................................................74
-
8/20/2019 482_Python_osnove_Pythona.pdf
9/49
viiSadržaj
Rezime ..............................................................................................................................................................76Praktična pitanja ...........................................................................................................................................76Praktični projekti ..........................................................................................................................................77
The Collatz Sequence .........................................................................................................................77
Provera ispravnosti unosa ........................................................................................................ .........77
POGLAVLJE 4 79
Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Vrsta podataka liste .....................................................................................................................................80
Dobijanje pojedinačnih vrednosti u listi pomoću indeksa ...................................................80Negativni indeksi .................................................................................................................................82Dobijanje podliste pomoću isečaka .............................................................................................82Dobijanje dužine liste pomoću funkcije len() ............................................................................83Menjanje vrednosti u listi pomoću indeksa ...............................................................................83
Spajanje i ponavljanje liste ..................................................................................................... .........83Uklanjanje vrednosti iz liste pomoću iskaza del .......................................................................84
Upotreba listi .................................................................................................................................................84Upotreba petlji for u listama .................................................................................................. .........86Operatori in i not in .............................................................................................................................87Trik višestruke dodele ........................................................................................................................87
Operatori naglašene dodele ....................................................................................................................88Metodi ..............................................................................................................................................................89
Pronalaženje vrednosti u listi pomoću metoda index() .......................................................89Dodavanje vrednosti u liste pomoću metoda append() i insert().......................................89
Uklanjanje vrednosti iz liste pomoću metoda remove() ........................................................90Sortiranje vrednosti u listi pomoću metoda sort() .................................................................. 91
Primer programa: Magic 8 Ball sa listom ..............................................................................................92Vrste slične listama: nizovi i zapisi ................................................................................................ ..........93
Promenljive i nepromenljive vrste podataka ............................................................................94Vrsta podataka zapisa ........................................................................................................................96Konvertovanje vrsta pomoću funkcija list() i tuple() ................................................................97
Reference ........................................................................................................................................................97Prelazne reference ..................................................................................................................... ...... 100Funkcije copy() i deepcopy() modula copy ........................................................................ 100
Rezime ................................................................................................ ........................................................... 101Praktična pitanja .............................................................................................. .......................................... 102Praktični projekti ....................................................................................................................................... 102
Comma Code ..................................................................................................................................... 102Character Picture Grid ...... ........................................................................................................ ...... 103
POGLAVLJE 5 105
Rečnici i strukturiranje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Vrsta podataka rečnika ............................................................................................................................ 105
Rečnici nasuprot listi ............................................................. .......................................................... 106Metodi keys(), values() i items() .............................................................................................. ...... 107Provera da li ključ ili vrednost postoje u rečniku .................................................................. 109Metod get() ................................................................................................ .......................................... 109Metod setdefault() ..................................................................................................... ....................... 110
-
8/20/2019 482_Python_osnove_Pythona.pdf
10/49
viii Sadržaj
Lepo štampanje ........................................................................................................ .................................. 111Upotreba struktura podataka za modelovanje stvarnih stvari ................................................. 112
Tabla za Iks-oks igricu ..................................................................................................... ................ 113Ugnežđeni rečnici i liste ................................................................................ ................................. 117
Rezime ....................................................................................................... .................................................... 119Praktična pitanja ...................................................................................................... .................................. 119Praktični projekti ....................................................................................................................................... 120
Inventar fantazi igre ........................................................................................................ ................ 120Lista za funkcije rečnika za inventar fantazi igre .................................................................... 120
POGLAVLJE 6 123
Manipulisanje nizovima. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Upotreba nizova ...................................................................................................... .................................. 123
Literali niza ........................................................................................................ ................................... 124
Dvostruki navodnici ................................................................................................. ................ 124Karakteri izlazne sekvence ..................................................................................................... 124Neprerađeni nizovi .................................................................................................. ................ 125Višelinijski nizovi sa trostrukim navodnicima ................................................................ 125Višelinijski komentari ............................................................................................... ................ 126
Indeksiranje i isecanje nizova ....................................................................................................... 126Operatori in i not in u nizovima .................................................................................................. 127
Korisni metodi niza ................................................................................................................................... 127Metodi niza upper(), lower(), isupper() i islower() .................................................................. 128Metodi niza isX ............................................................ ...................................................................... 129
Metodi niza startswith() i endswith() .......................................................................................... 131Metodi niza join() i split() ................................................................................................ ................ 131Poravnanje teksta pomoću rjust(), ljust() i center() metoda ............................................. 133Uklanjanje karaktera razmaka pomoću strip(), rstrip() i lstrip() metoda ....................... 134Kopiranje i pejstovanje nizova pomoću modula pyperclip .............................................. 135
Projekat: Ključ lozinke ............................................................................................ .................................. 136Korak 1: Dizajn programa i strukture podataka ..................................................................... 136Korak 2: Upotrebite argumente komandne linije ................................................................. 137Korak 3: Kopiranje prave lozinke ................................................................................................. 137
Projekat: Dodavanje oznake nabrajanja u Wiki članak ................................................................ 139
Korak 1: Kopiranje i pejstovanje iz klipborda ......................................................................... 139Korak 2: Razdvajanje linija teksta i dodavanje zvezde ......................................................... 140Korak 3: Spajanje modifikovanih linija ...................................................................................... 141
Rezime ....................................................................................................... .................................................... 141Praktična pitanja ...................................................................................................... .................................. 142Praktični projekti ....................................................................................................................................... 143
Stoni štampač ................................................................................................. ................................... 143
DEO II
POGLAVLJE 7 147
Podudaranje šablona pomoću regularnih izraza . . . . . . . . . . . . . . . . . . . . . . . . 147
Pronalaženje šablona teksta bez regularnih izraza ....................................................................... 148Pronalaženje šablona teksta pomoću regularnih izraza ............................................................. 150
-
8/20/2019 482_Python_osnove_Pythona.pdf
11/49
ixSadržaj
Kreiranje regex objekata ................................................................................................................ 150Podudaranje regex objekata ........................................................................................................ 151Pregled podudaranja regularnih izraza .................................................................................... 152
Više podudaranja šablona upotrebom regularnih izraza ........................................................... 152
Grupisanje pomoću zagrada ........................................................................................................ 152Podudaranje više grupa pomoću vertikalne crte .................................................................. 153Opciono podudaranje upotrebom upitnika ........................................................................... 154Podudaranje nula ili više primera teksta pomoću zvezdice ............................................. 155Podudaranje jednog ili više primera teksta pomoću znaka plus ..................................... 155Podudaranje specifičnih ponavljanja upotrebom velikih zagrada ................................ 156
„Gramzivo“ i „negramzivo“ podudaranje ................................ ......................................................... 156Metod findall() ................................................................................................... .......................................... 157Klase karaktera ........................................................................................................................................... 158Kreiranje sopstvenih klasa karaktera .................................................................................................. 159
Karakteri znaka za umetanje i znaka za dolar ................................................................................. 159Karakter zamene .............................................................................................. .......................................... 160Podudaranje svega upotrebom tačke i zvezdice .................................................................. 161Podudaranje novih linija pomoću karaktera tačke .............................................................. 162
Pregled regex simbola ................................................ ............................................................................ 162Podudaranje neosetljivo na veličinu slova ...................................................................................... 163Zamena nizova pomoću metoda sub() ......................................................................................... ..... 163Upravljanje složenim regexima .............. ............................................................................................. 164Kombinovanje promenljivih re .IGNORECASE, re .DOTALL i re.VERBOSE ............................. 164Projekat: Ekstraktor telefonskog broja i e-mail adrese .......................................... ...................... 165
Korak 1: Kreiranje regexa za brojeve telefona ........................................................................ 166Korak 2: Kreiranje regexa za e-mail adrese .............................................................................. 166Korak 3: Pronalaženje svih podudaranja u klipbord tekstu ............................................... 167Korak 4: Spajanje podudaranja u niz za klipbord................................................................... 168Pokretanje programa ............................................................................................... ....................... 169Ideje za slične programe ................................................................................................................ 169
Rezime ................................................................................................ ........................................................... 169Praktična pitanja .............................................................................................. .......................................... 170Praktični projekti ....................................................................................................................................... 172
Detekcija jake lozinke .......................................... ........................................................................... 172
Regex verzija metoda strip() .................................................................................................... ...... 172POGLAVLJE 8 173
Čitanje i pisanje fajlova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Fajlovi i putanje fajlova ................................................................ ........................................................... 173Obrnuta kosa crta na Windowsu i kosa crta na OS X i Linuxu .......................................... 174Aktuelni radni direktorijum ............................... ........................................................................... 175Apsolutne, nasuprot relativnih putanja ......................... .......................................................... 175Kreiranje novih direktorijuma pomoću funkcije os .makedirs() ....................................... 176
Modul os.path ............................................................................................................................................ 177
Rukovanje apsolutnim i relativnim putanjama ..................................................................... 177Pronalaženje veličina fajla i sadržaja direktorijuma ..................... ........................................ 179Provera validnosti putanje ............................................................................................................ 180
Proces čitanja/pisanja fajla ........................................ ............................................................................ 180Otvaranje fajlova pomoću funkcije open() .............................................................................. 181
-
8/20/2019 482_Python_osnove_Pythona.pdf
12/49
x Sadržaj
Čitanje sadržaja fajlova ................................................................................................................... 182Pisanje u fajlove ......................................... ....................................................................................... 183
Snimanje promenljivih pomoću modula shelve ........................................................................... 184Snimanje promenljivih pomoću funkcije pprint .pformat() ....................................................... 185
Projekat: Generisanje nasumičnih fajlova za test .......................................................................... 186Korak 1: Čuvanje podataka testa u rečniku ............................................................................. 187Korak 2: Kreiranje fajla testa i mešanje redosleda pitanja ................................................. 188Korak 3: Kreiranje opcija za odgovor ......................................................................................... 189Korak 4: Pisanje sadržaja za test i fajlova za odgovore ....................................................... 189
Projekat: Multiklipbord ........................................................................................................................... 191Korak 1: Komentari i podešavanja ............................................................. ................................. 192Korak 2: Snimanje sadržaja klipborda pomoću ključnih reči ............................ ................ 192Korak 3: Listanje ključnih reči i učitavanje sadržaja ključne reči ...................................... 193
Rezime ....................................................................................................... .................................................... 194
Praktična pitanja ...................................................................................................... .................................. 194Praktični projekti ....................................................................................................................................... 194Proširenje multiklipborda .............................................................................................. ................ 194Mad Lib program .............................................................................................................................. 195Pretraživanje regexa ........................................................................................ ................................. 195
POGLAVLJE 9 197
Organizovanje fajlova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Modul shutil ............................................................................................ .................................................... 198
Kopiranje fajlova i direktorijuma ................................................................................................. 198
Pomeranje i promena naziva fajlova i direktorijuma .......................................................... 199Trajno brisanje fajlova i direktorijuma ...................................................................................... 200Bezbedno brisanje pomoću modula send2trash .................................................................. 201
Pregled stabla direktorijuma .......................... ...................................................................................... 202Kompresovanje fajlova pomoću modula zipfile ............................................................................ 203
Čitanje ZIP fajlova ............................................................................................................................. 204Ekstrahovanje iz ZIP fajlova .......................................................................................... ................ 205Kreiranje i dodavanje u ZIP fajlove ............................................................................................. 205
Projekat: Menjanje naziva fajlova sa datumau američkom stilu na datum u evropskom stilu ...................................................................... 206
Korak 1: Kreiranje regexa za datume u američkom stilu .................................................... 206Korak 2: Identifikovanje delova datuma iz naziva fajlova .................................................. 207Korak 3: Formiranje novih i promena postojećih naziva fajlova ..................................... 209Ideje za slične programe ................................................................................................................ 209
Projekat: Kreiranje rezervne kopije direktorijuma u ZIP fajl ...................................................... 209Korak 1: Razumevanje naziva ZIP fajla .................................... .................................................. 210Korak 2: Kreiranje novog ZIP fajla ............................................................................................... 211Korak 3: Pregled stabla direktorijuma i dodavanje u ZIP fajl ............................ ................ 211Ideje za slične programe ................................................................................................................ 212
Rezime ....................................................................................................... .................................................... 213
Praktična pitanja ...................................................................................................... .................................. 213Praktični projekti ....................................................................................................................................... 213
Selektivno kopiranje ........................................................................................................ ................ 213Brisanje nepotrebnih fajlova ........................................................................................ ................ 214Popunjavanje praznina ................................................................................................... ................ 214
-
8/20/2019 482_Python_osnove_Pythona.pdf
13/49
xiSadržaj
POGLAVLJE 10 215
Ispravljanje grešaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Podizanje izuzetaka ........................................................................................ .......................................... 216
Dobijanje povratne informacije kao niza ......................................................................................... 217Navodi ................................................................................................ ........................................................... 219Upotreba navoda u simulaciji semafora .................................................................................. 219Isključivanje navoda ................................................................................................. ....................... 221
Evidentiranje ..................................................................................................... .......................................... 221Upotreba modula logging .................................................................... ........................................ 221Nemojte ispravljati grešku pomoću funkcije print() ............................................................. 223Nivoi evidentiranja .................................................................................................. ......................... 223Isključivanje evidentiranja ....................................................................................................... ...... 224Evidentiranje u fajl .............................................. ............................................................................. 225
IDLE-ova funkcija za ispravljanje greške ........................................................................................... 225Go ............................................................................................... ............................................................ 226Step ............................................................................................. ........................................................... 226Over ........................................................................................... ............................................................ 226Out ............................................................................................. ............................................................ 227Quit ............................................................................................ ............................................................ 227Ispravljanje grešaka u programu za dodavanje brojeva ............................. ....................... 227Tačke prekida ........................................................................................... .......................................... 229
Rezime ................................................................................................ ........................................................... 231Praktična pitanja i zadaci ................................................................................................. ........................ 231Praktični projekti ....................................................................................................................................... 232
Ispravljanje grešaka u programu bacanja novčića ................................................................ 232
POGLAVLJE 11 233
Web isecanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Projekat: mapIt .py sa modulom Webbrowser ....................................... ........................................ 234
Korak 1: Otkrivanje URL-a ....................................................................................... ....................... 234Korak 2: Rukovanje argumentima komandne linije ............................................................. 235Korak 3: Rukovanje sadržajem klipborda i pokretanje pretraživača .............................. 236Ideje za slične programe ................................................................................................................ 236
Preuzimanje fajlova sa Weba pomoću modula Requests .......................................................... 237Preuzimanje web stranica pomoću funkcije requests.get()............................................... 237Provera grešaka ........................................................................................................ ......................... 238
Snimanje preuzetih fajlova na hard drajv .............. .......................................................................... 239HTML ................................................................................................... ........................................................... 240
Izvori za učenje HTML-a ..................... ............................................................................................ 240Kratak podsetnik ....................................................................................................... ......................... 240Pregled izvornog HTML-a web stranice ................................................................................... 241Otvaranje alatki za programiranje u pretraživaču ...... .......................................................... 242Upotreba alatki za programiranje za pronalaženje HTML elemenata .......................... 244
Analiza HTML-a pomoću modula Beautiful Soup ................ ......................................................... 245Kreiranje Beautiful Soup objekta iz HTML-a ........................................................................... 245Pronalaženje elementa pomoću metoda select() ................................................................. 246Dobijanje podataka iz atributa elementa ......................................................... ....................... 248
-
8/20/2019 482_Python_osnove_Pythona.pdf
14/49
xii Sadržaj
Projekat: “I’m Feeling Lucky” Google pretraga ............................................................................... 248Korak 1: Upotreba argumenta komandne linije i traženje pretrage stranice ............. 249Korak 2: Pronalaženje svih rezultata .......................................................................... ................ 249Korak 3: Otvaranje web pretraživača za svaki rezultat ........................................................ 250
Ideje za slične programe ................................................................................................................ 251Projekat: Preuzimanje svih XKCD stripova ....................................................................................... 251
Korak 1: Dizajniranje programa ................................................................................................... 252Korak 2: Preuzimanje web stranice ........................ .................................................................... 253Korak 3: Pronalaženje i preuzimanje slike stripa ................................................................... 254Korak 4: Snimanje slike i pronalaženje prethodnog stripa ................................................ 255Ideje za slične programe ................................................................................................................ 256
Kontrola pretraživača pomoću modula Selenium ........................................................................ 256Pokretanje pretraživača kontrolisanog modulom Selenium ............................................ 256Pronalaženje elemenata na stranici ........................................................................................... 257
Klik na stranicu ........................................... ....................................................................................... 259Popunjavanje i slanje formulara ................................................................................................. 259Slanje specijalnih ključeva ............................................................................................. ................ 260Klik na dugmad pretraživača ........................................................................................................ 261Više informacija o Seleniumu ....................................................................................................... 261
Rezime ........................................................................................................ .................................................... 261Praktična pitanja ...................................................................................................... .................................. 261Praktični projekti ....................................................................................................................................... 262
Program za slanje e-mailova iz komandne linije ................................................................... 262Program za preuzimanje slika ...................................................................................................... 263
2048 ................................................................................................... .................................................... 263Potvrđivanje linka ........................................................................................... ................................... 263
POGLAVLJE 12 265
Upotreba Excel tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Excel dokumenti ...................................................................................................... .................................. 266Instaliranje modula openpyxl ............................................................................................................... 266Čitanje Excel dokumenata .................................................................................................... ................. 266
Otvaranja Excel dokumenata pomoću openpyxla ............................................................... 267Dobijanje radnih listova iz radne sveske .................................................................................. 268
Dobijanje ćelija iz listova ............................................................................................... ................ 268Konvertovanje između slova i brojeva kolone ....................................................................... 270Dobijanje redova i kolona iz listova ......................................... .................................................. 270Radne sveske, radni listovi i ćelije ............................................................................................... 272
Projekat: Čitanje podataka iz tabele ................................................................................................... 272Korak 1: Čitanje podataka iz tabele ............................................................................................ 273Korak 2: Popunjavanje strukture podataka ............................................................................. 274Korak 3: Pisanje rezultata u fajl .................................................................................... ................ 275Ideje za slične programe ................................................................................................................ 276
Pisanje Excel dokumenata ..................................................................................................................... 277
Kreiranje i snimanje Excel dokumenata ................................................................................... 277Kreiranje i uklanjanje radnih listova .......................................................................................... 278Pisanje vrednosti u ćelije ............................................................................................... ................ 278
Projekat: Ažuriranje tabele ............ ........................................................................................................ 279
-
8/20/2019 482_Python_osnove_Pythona.pdf
15/49
xiiiSadržaj
Korak 1: Podešavanje strukture podataka sa ažuriranim informacijama ..................... 280Korak 2: Provera svih redova i ažuriranje nepravilnih cena ............................................... 281Ideje za slične programe ................................................................................................................ 281
Podešavanje stila fonta ćelija ........................................................................................ ........................ 282
Font objekti ....................................................................................................... .......................................... 282Formule ............................................................................................. ........................................................... 284Podešavanje redova i kolona ................................................................................................................ 285
Podešavanje visine reda i širine kolone .................................................................................... 286Spajanje i rastavljanje ćelija ................................................................................... ....................... 286„Zamrznuta“ okna ...................................................................................................................... ...... 287
Grafikoni ............................................................................................ ........................................................... 288Rezime ................................................................................................ ........................................................... 290Praktična pitanja .............................................................................................. .......................................... 291Praktični projekti ....................................................................................................................................... 291
Kreator tablice množenja ................................... ........................................................................... 291Ubacivač praznog reda ........................................................................................... ........................ 292Invertor ćelije tabele ................................................................................................ ........................ 292Konvertovanje tekstualnih fajlova u tabelu ............................................................................ 293Konvertovanje tabele u tekstualne fajlove ............................................................................. 293
POGLAVLJE 13 295
Upotreba PDF i Word dokumenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295PDF dokumenti ................................................................................................ .......................................... 295
Ekstrahovanje teksta iz PDF fajlova ........................................................................................... 296
Dekodiranje PDF fajlova ......................................................................................... ........................ 297Kreiranje PDF fajlova ............................................................................... ........................................ 298
Kopiranje stranica ............................................................................................. ........................ 299Rotiranje stranica .............................................................................................. ........................ 300Preklapanje stranica ........................................................................................ ........................ 301Kodiranje PDF fajlova ........................................................................................................ ...... 302
Projekat: Kombinovanje selektovanih stranicaiz više PDF fajlova ................................................................................................................................ 303
Korak 1: Pronađite sve PDF fajlove ............................................................................................. 304Korak 2: Otvorite svaki PDF ................................................................... ........................................ 304
Korak 3: Dodajte svaku stranicu .......................................................... ........................................ 305Korak 4: Snimite rezultate ....................................................................................................... ...... 305Ideje za slične programe ................................................................................................................ 306
Word dokumenti ............................................................................................. .......................................... 306itanje Word dokumenata ........................................................................................ ....................... 307Dobijanje celog teksta iz .docx fajla .......................................................................................... 308Stilizovanje objekata Paragraph i Run ....................................................................................... 309Kreiranje Word dokumenata sa nestandardnim stilovima ................................................ 310Atributi objekta Run .................................................................................................. ....................... 311Pisanje Word dokumenata ............................................................................................................ 312
Dodavanje naslova .......................................................................................................................... 314Dodavanje preloma reda i preloma stranice ........................................................................... 315Dodavanje slika ........................................................................................................ ......................... 315
Rezime ................................................................................................ ........................................................... 316
-
8/20/2019 482_Python_osnove_Pythona.pdf
16/49
xiv Sadržaj
Praktična pitanja ...................................................................................................... .................................. 316Praktični projekti ....................................................................................................................................... 317
PDF paranoja ................................................................................................... ................................... 317Pozivnice kao Word dokumenti ................................................................. ................................. 317
Brutalni „rušitelj“ PDF lozinke ....................................................................................................... 318
POGLAVLJE 14 319
Upotreba CSV fajlova i JSON podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Modul csv ................................................................................................. .................................................... 320
Objekti Reader ................................................................................................ ................................... 321Čitanje podataka iz objekata Reader u petlji for ................................................................... 322Objekti Writer .................................................................................................. ................................... 322Argumenti ključnih reči delimiter i lineterminator .............................................................. 323
Projekat: Uklanjanje zaglavlja iz CSV fajlova ................................................................................... 324
Korak 1: Kruženje kroz svaki CSV fajl .......................................................................................... 325Korak 2: Učitavanje CSV fajla ........................................................................................................ 325Korak 3: Ispisivanje CSV fajla bez prvog reda ....................... .................................................. 326Ideje za slične programe ................................................................................................................ 327
JSON i API ..................................................................................................................................................... 327Modul json ............................................................................................... .................................................... 328
Čitanje JSON-a pomoću funkcije loads() ................................................................................... 328Pisanje JSON-a pomoću funkcije dumps() ............................................................................... 329
Projekat: Prikazivanje aktuelnih podataka o vremenskoj prognozi ....................................... 329Korak 1: Dobijanje lokacije iz argumenta komandne linije ............................................... 330
Korak 2: Preuzimanje JSON podataka ...................................................... ................................. 330Korak 3: Učitavanje JSON podataka i štampanje vremenske prognoze ....................... 331Ideje za slične programe ................................................................................................................ 332
Rezime ....................................................................................................... .................................................... 333Praktična pitanja ....................................................................................................... .................................. 333Praktični projekat ...................................................................................................................................... 333
Konvertor Excel-u-CSV ..................................................................................................... ................ 333
POGLAVLJE 15 335
Evidencija vremena, raspoređivanje zadatakai pokretanje programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Modul time .............................................................................................. .................................................... 336Funkcija time .time() ........................................................................................ ................................. 336Funkcija time.sleep() ........................................................................................................ ................ 337
Zaokruživanje brojeva ........................................................................................... .................................. 338Projekat: Super štoperica .................................................. ..................................................................... 338
Korak 1: Podešavanje programa da prati vreme ................. .................................................. 339Korak 2: Praćenje i štampanje vremena kruga ....................................................................... 339Ideje za slične programe ................................................................................................................ 340
Modul datetime ....................................................................................................... .................................. 341Vrsta podataka timedelta ............................................................................. ................................. 342Pauziranje do specifičnog datuma ............................................................................................ 344Konvertovanje datetime objekata u nizove ........................................................................... 344Konvertovanje nizova u datetime objekte .............................................................................. 345
-
8/20/2019 482_Python_osnove_Pythona.pdf
17/49
xvSadržaj
Pregled Pythonovih funkcija Time ...................................................................................................... 346Višenitni rad ................................................................................................................................................ 347
Prosleđivanje argumenata u ciljnu funkciju niti .................................................................... 348Problemi konkurencije ................................................................................................................... 349
Projekat: Višenitni XKCD program za preuzimanje ....................................................................... 349Korak 1: Modifikovanje programa da koristi funkciju ......................................................... 350Korak 2: Kreiranje i pokretanje niti ...................................................................... ....................... 351Korak 3: Sačekajte da se sve niti završe .................................................................................... 352
Pokretanje drugih programa iz Pythona ................ .......................................................................... 352Prosleđivanje argumenata komandne linije u funkciju Popen() ...................................... 354Task Scheduler, launchd i cron ............................................................ ........................................ 354Otvaranje web sajtova pomoću Pythona ..... ........................................................................... 355Pokretanje drugih Python skriptova ......................................................................................... 355Otvaranje programa pomoću standardnih aplikacija ......................................................... 355
Projekat: Jednostavan program za odbrojavanje ......................................................................... 357Korak 1: Odbrojavanje ............................................................................ ........................................ 357Korak 2: Reprodukovanje zvučnog fajla ................................................................................... 358Ideje za slične programe ................................................................................................................ 358
Rezime ................................................................................................ ........................................................... 359Praktična pitanja .............................................................................................. .......................................... 359Praktični projekti ....................................................................................................................................... 360
„Ulepšana“ štoperica ................................................................................................ ....................... 360Program za preuzimanje web stripova sa rasporedom ....................................................... 360
POGLAVLJE 16 361
Slanje e-maila i tekstualnih poruka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361SMTP ................................................................................................... ........................................................... 362Slanje e-maila ............................................................................................................................................. 362
Povezivanje na SMTP server ............................................... .......................................................... 363Slanje SMTP „Hello“ poruke .................................................................. ........................................ 364Pokretanje TLS enkripcije ...................................................................... ........................................ 364Prijava na SMTP server ............................................................................................. ....................... 364Slanje e-maila ........................................................................................... .......................................... 365Diskonektovanje sa SMTP servera ....................................................................... ....................... 366
IMAP .................................................................................................... ........................................................... 366Vraćanje i brisanje e-mailova pomoću IMAP-a ............................................................................... 366
Konektovanje na IMAP server .............................................................. ........................................ 367Prijava na IMAP server ............................................................................................. ....................... 368Pretraživanje e-maila ................................................................................................ ....................... 368
Biranje direktorijuma ....................................................................................... ........................ 368Izvršavanje pretrage ........................................................................................ ........................ 369Ograničenja veličine ........................................................................................ ........................ 371
Preuzimanje i označavanje e-maila kao pročitanog ............................................................ 372Dobijanje e-mail adrese iz neobrađene poruke ............................ ........................................ 373
Dobijanje teksta iz neobrađene poruke ................................................................................... 374Brisanje e-mailova ..................................................................................................... ....................... 375Diskonektovanje sa IMAP servera ............................................................................................... 375
Projekat: Slanje podsetnika za plaćanje članarine e-mailom ............ ........................................ 376
-
8/20/2019 482_Python_osnove_Pythona.pdf
18/49
xvi Sadržaj
Korak 1: Otvaranje Excel fajla ....................................................................................................... 376Korak 2: Pronalaženje svih članova koji nisu platili članarinu .......................................... 378Korak 3: Slanje prilagođenih podsetnika e-mailom ............................................. ................ 378
Slanje tekstualnih poruka pomoću servisa Twilio ......................................................................... 380
Prijava za Twilio nalog ............. ....................................................................................................... 380Slanje tekstualnih poruka .............................................................................................................. 381
Projekat: Just Text Me modul ................................................................................................................ 383Rezime ....................................................................................................... .................................................... 384Praktična pitanja ...................................................................................................... .................................. 384Praktični projekti ....................................................................................................................................... 385
Program koji nasumično šalje e-mailove za izvršavanje zadataka .................................. 385Podsetnik za kišobran ..................................................................................................................... 385Automatska odjava ......................................................................................... ................................. 385Kontrolisanje računara korišćenjem e-maila ........................................................................... 386
POGLAVLJE 17 387
Manipulisanje slikama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387Osnove računarskih slika ........................................................................................................................ 388
Boje i RGBA vrednosti .............. ....................................................................................................... 388Koordinate i torke okvira ............................................................................................... ................ 389
Manipulisanje slikama pomoću modula Pillow ............................................................................. 390Upotreba vrste podataka slika ..................................................................................... ................ 392Opsecanje slika ............................................................................................... ................................... 393Kopiranje i pejstovanje slika u druge slike .......... .................................................................... 394
Promena veličine slike .................................................................................................... ................ 397Rotiranje i preslikavanje slika .................................................... ................................................... 398Menjanje pojedinačnih piksela ............................... .................................................................... 400
Projekat: Dodavanje logotipa ............................................................................................................... 401Korak 1: Otvaranje slike logotipa ............................................................... ................................. 401Korak 2: Kruženje kroz sve fajlove i otvaranje slika .............................................................. 402Korak 3: Promena veličine slike .............. ..................................................................................... 403Korak 4: Dodavanje logotipa i snimanje promena ............. .................................................. 404Ideje za slične programe ................................................................................................................ 406
Crtanje na slikama .................................................................................................... .................................. 406
Crtanje oblika .................................................................................................. ................................... 406Tačke .......................................................................................... ................................................... 406Linije ........................................................................................... ................................................... 406Pravougaonici .......................................................................................... .................................. 407Elipse .......................................................................................... ................................................... 407Mnogougaonici ........................................................................................................ ................. 407Primer crtanja ........................................................................................... .................................. 407
Crtanje teksta .................................................................................................. ................................... 408Rezime ....................................................................................................... .................................................... 410Praktična pitanja ...................................................................................................... .................................. 410
Praktični projekti ....................................................................................................................................... 411Proširenje i ispravljanje programa iz projekta poglavlja ..................................................... 411Identifikovanje direktorijuma koji sadrže fotografije na hard drajvu ............................ 411Posebne kartice za sedišta ............................................................................................. ................ 412
-
8/20/2019 482_Python_osnove_Pythona.pdf
19/49
xviiSadržaj
POGLAVLJE 18 413
Kontrolisanje tastature i miša pomoću GUI automatizacije . . . . . . . . . . . . . . 413Instaliranje modula pyautogui ............................................................................................................. 414
Ostajanje na putu ............................................................................................ .......................................... 414Isključivanje svega odjavljivanjem ............................................................................................. 414Pauze i bezbednost sistema u slučaju otkaza ........................................................................ 415
Kontrolisanje pokreta miša .................................................................................................................... 415Pomeranje miša ................................................................................................................................ 416Dobijanje pozicije miša ........................................................ .......................................................... 417
Projekat: „Gde je moj miš trenutno?“ ................................................................................................. 417Korak 1: Importovanje modula .............................................................................................. ...... 418Korak 2: Podešavanje koda za zatvaranje i beskonačne petlje ........................................ 418Korak 3: Dobijanje i štampanje koordinata miša .................................................................. 418
Kontrolisanje interakcije miša ................ .............................................................................................. 419Klik mišem ................................................................................................. .......................................... 420Prevlačenje miša ...................................................................................................... ......................... 420Skrolovanje točkića miša .................................... ........................................................................... 422
Upotreba ekrana ............................................................................................. .......................................... 423Dobijanje snimka ekrana ..................................................... .......................................................... 423Analiziranje snimka ekrana ................................................................... ........................................ 424
Projekat: Proširenje programa mouseNow ...................................................................................... 424Prepoznavanje slike .......................................................................................................................... ....... 425Kontrolisanje tastature .................................................................................................... ........................ 426
Slanje niza sa tastature ............................................................................................................. ...... 426Nazivi tastera ............................................................................................. .......................................... 427Pritiskanje i otpuštanje tastature ......................................................................... ....................... 428Kombinacije „vrućih“ tastera ........................................................................................................ 429
Pregled funkcija PyAutoGUI .......................................................................................... ........................ 430Projekat: Automatsko popunjavanje formulara ............................................................................ 430
Korak 1: Otkrivanje koraka ...................................................................................................... ...... 432Korak 2: Podešavanje koordinata ..................................... .......................................................... 432Korak 3: Početak kucanja podataka ................................................... ........................................ 434Korak 4: Rukovanje listama za selekciju i radio-dugmadima ............................................ 435Korak 5: Prosleđivanje formulara i čekanje ............................................................................. 436
Rezime ................................................................................................ ........................................................... 437Praktična pitanja .............................................................................................. .......................................... 438Praktični projekti ....................................................................................................................................... 438
Izgleda zauzeto ................................................................................................................................. 438Robot za slanje poruka ......................................................... .......................................................... 438Uputstvo za robota za igranje igrice .......................................................................................... 439
DODATAK A 441
Instaliranje nezavisnih modula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Alatka pip .......................................................................................... ........................................................... 441Instaliranje nezavisnih modula ................................................. ........................................................... 442
-
8/20/2019 482_Python_osnove_Pythona.pdf
20/49
xviii Sadržaj
DODATAK B 443
Pokretanje programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443Šebeng linija ............................................................................................................................................... 443
Pokretanje Python programa na Windowsu ................................................................................... 444Pokretanje Python programa na OS X-u i Linuxu .......................................................................... 445Pokretanje Python programa sa isključenim izjavama ............................................................... 445
DODATAK C 447
Odgovori na praktična pitanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447Poglavlje 1 ................................................................................................ .................................................... 448Poglavlje 2 ................................................................................................ .................................................... 448Poglavlje 3 ................................................................................................ .................................................... 450Poglavlje 4 ................................................................................................ .................................................... 450
Poglavlje 5 ................................................................................................ .................................................... 451Poglavlje 6 ................................................................................................ .................................................... 452Poglavlje 7 ................................................................................................ .................................................... 452Poglavlje 8 ................................................................................................ .................................................... 453Poglavlje 9 ................................................................................................ .................................................... 454Poglavlje 10 ................................................................