482_python_osnove_pythona.pdf

Upload: mikica

Post on 07-Aug-2018

355 views

Category:

Documents


7 download

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 ................................................................