Opis produktu: Automatyzacja nudnych zadań z Pythonem. Nauka programowania. Wydanie II - Al Sweigart
Drugie wydanie nietypowego podręcznika o programowaniu w Pythonie. Dzięki niemu możesz nauczyć się jak tworzyć programy, które oszczędzą Ci mnóstwo czasu i wysiłku. Dla osób, które nigdy nie programowały książka ta będzie stanowiła pomoc w błyskawicznym opanowaniu podstaw i zapoznaniu się z obszerną biblioteką Pythona, przeznaczoną do automatyzacji takich zadań jak pobieranie danych z witryn internetowych, odczytywanie dokumentów oraz operacje wymagające klikania myszą i wpisywania tekstu. Wydanie drugie zawiera nowy rozdział poświęcony weryfikacji danych wejściowych, a także samouczki dotyczące automatyzacji pracy z arkuszami Google i pocztą Gmail oraz podpowiedzi związane z automatycznym uaktualnianiem plików CVS.
Główne zagadnienia
- Wyszukiwanie ciągu znaków w pliku lub wielu plikach
- Tworzenie, uaktualnianie, przenoszenie i zmiany nazw plików oraz katalogów
- Wyszukiwanie treści w sieci WWW oraz ich pobieranie
- Podział, łączenie, nakładanie znaku wodnego i szyfrowanie dokumentów PDF
- Wysyłanie powiadomień za pomocą wiadomości e-mail oraz SMS
- Wypełnianie formularzy internetowych
Informacje o książce
- Tytuł oryginału: Automate the Boring Stuff with Python, 2nd Edition: Practical Programming for Total Beginners
- Autor: Al Sweigart
- Tłumaczenie: Robert Górczyński
- ISBN: 978-83-283-7489-8
- Rok wydania: 2021
- Format: 170 x 235 mm
- Ilość stron: 648
- Wydawnictwo: Helion S.A.
- Oprawa: miękka
Spis treści:
Podziękowania 19
Wprowadzenie 21
- Do kogo jest skierowana ta książka? 22
- Konwencje 23
- Czym jest programowanie? 23
- Co to jest Python? 24
- Programiści nie muszą dobrze znać matematyki 24
- Nigdy nie jest za późno na rozpoczęcie nauki programowania 25
- Programowanie to aktywność kreatywna 26
- O tej książce 26
- Pobieranie i instalacja Pythona 29
- Pobieranie i instalowanie edytora tekstu Mu 30
- Uruchomienie edytora Mu 30
- Uruchomienie środowiska IDLE 31
- Powłoka interaktywna 31
- Instalowanie modułów zewnętrznych 33
- Jak otrzymać pomoc? 33
- Sprytne zadawanie pytań dotyczących programowania 34
- Podsumowanie 35
CZĘŚĆ I. PODSTAWY PROGRAMOWANIA W PYTHONIE
1. Podstawy Pythona 39
- Wprowadzanie wyrażeń w powłoce interaktywnej 40
- Liczby całkowite, zmiennoprzecinkowe i ciągi tekstowe 43
- Konkatenacja i replikacja ciągu tekstowego 43
- Przechowywanie wartości w zmiennych 45
- Polecenia przypisania 45
- Nazwy zmiennych 46
- Twój pierwszy program 48
- Analiza programu 49
- Komentarze 49
- Funkcja print() 50
- Funkcja input() 50
- Wyświetlanie imienia użytkownika 51
- Funkcja len() 51
- Funkcje str(), int() i float() 52
- Podsumowanie 55
- Pytania kontrolne 56
2. Kontrola przepływu działania programu 59
- Wartości boolowskie 60
- Operatory porównania 61
- Operatory boolowskie 63
- Binarne operatory boolowskie 63
- Operator not 64
- Łączenie operatorów boolowskich i porównania 64
- Elementy kontroli przepływu działania programu 65
- Warunek 65
- Blok kodu 66
- Wykonywanie programu 66
- Polecenia kontroli przepływu działania programu 67
- Polecenie if 67
- Polecenie else 68
- Polecenie elif 69
- Pętla while 74
- Polecenie break 78
- Polecenie continue 79
- Pętla for i funkcja range() 83
- Import modułów 87
- Polecenie from import 88
- Wcześniejsze zakończenie programu za pomocą sys.exit() 88
- Krótki program - odgadnij liczbę 89
- Krótki program - kamień, papier, nożyce 91
- Podsumowanie 95
- Pytania kontrolne 95
3. Funkcje 97
- Polecenie def wraz z parametrami 99
- Definiowanie, wywoływanie, przekazywanie, argument i parametr 99
- Wartość zwrotna funkcji i polecenie return 100
- Wartość None 102
- Argumenty w postaci słów kluczowych i funkcja print() 102
- Stos wywołań 104
- Zasięgi lokalny i globalny 106
- Zmienne lokalne nie mogą być używane w zasięgu globalnym 107
- W zasięgu lokalnym nie można używać zmiennych zdefiniowanych w innych zasięgach lokalnych 108
- Zmienna globalna może być używana w zasięgu lokalnym 109
- Zmienna lokalna i globalna o takiej samej nazwie 109
- Polecenie global 110
- Obsługa wyjątków 113
- Krótki program - zigzag 115
- Podsumowanie 117
- Pytania kontrolne 117
- Projekt praktyczny 118
- Problem Collatza 118
- Weryfikacja danych wyjściowych 119
4. Listy 121
- Typ danych List 121
- Pobieranie poszczególnych wartości listy za pomocą indeksu 122
- Indeks ujemny 124
- Pobieranie podlisty za pomocą wycinka 124
- Pobieranie długości listy za pomocą polecenia len() 125
- Zmiana wartości na liście za pomocą indeksu 125
- Konkatenacja i replikacja listy 126
- Usunięcie wartości listy za pomocą polecenia del 126
- Praca z listą 126
- Użycie pętli for wraz z listą 128
- Operatory in i not in 129
- Sztuczka pozwalająca na wiele jednoczesnych operacji przypisania 130
- Używanie funkcji enumerate() z listą 131
- Używanie funkcji random.choice() i random.shuffle() z listą 131
- Operatory przypisania i zmiany wartości 132
- Metody 133
- Odszukanie wartości na liście za pomocą metody index() 133
- Dodanie wartości do listy za pomocą metod append() i insert() 134
- Usuwanie wartości z listy za pomocą metody remove() 135
- Sortowanie wartości listy za pomocą metody sort() 136
- Odwrócenie kolejności wartości listy za pomocą metody reverse() 137
- Przykładowy program - Magic 8 Ball utworzony za pomocą listy 137
- Typy danych w postaci sekwencji 139
- Modyfikowalne i niemodyfikowalne typy danych 139
- Typ danych krotka 142
- Konwersja typu za pomocą funkcji list() i tuple() 143
- Odwołania 143
- Identyfikator i funkcja id() 145
- Przekazywanie odwołania 147
- Funkcje copy() i deepcopy() modułu copy 147
- Krótki program - gra w życie 148
- Podsumowanie 153
- Pytania kontrolne 154
- Projekty praktyczne 154
- Kod z przecinkami 155
- Rzut monetą 155
- Obraz na podstawie macierzy 156
5. Słowniki i strukturyzacja danych 157
- Typ danych Dictionary 157
- Słownik kontra lista 158
- Metody keys(), values() i items() 160
- Sprawdzenie, czy klucz lub wartość istnieją w słowniku 162
- Metoda get() 162
- Metoda setdefault() 163
- Eleganckie wyświetlanie danych 164
- Użycie struktur danych do modelowania rzeczywistych rozwiązań 165
- Plansza do gry w kółko i krzyżyk 166
- Zagnieżdżone słowniki i listy 171
- Podsumowanie 173
- Pytania kontrolne 173
- Projekty praktyczne 173
- Weryfikacja słownika modelującego grę w szachy 174
- Inwentarz w grze fantasy 174
- Funkcja konwertująca listę na słownik dla inwentarza w grze fantasy 175
6. Operacje na ciągach tekstowych 177
- Praca z ciągami tekstowymi 177
- Literały ciągu tekstowego 178
- Indeksowanie i wycinanie ciągów tekstowych 181
- Użycie operatorów in i not in podczas pracy z ciągami tekstowymi 182
- Umieszczenie ciągu tekstowego w innym 182
- Użyteczne metody ciągu tekstowego 183
- Metody upper(), lower(), isupper() i islower() 183
- Metody typu isX() 185
- Metody startswith() i endswith() 187
- Metody join() i split() 188
- Podział tekstu za pomocą metody partition() 189
- Wyrównywanie tekstu za pomocą metod rjust(), ljust() i center() 190
- Usunięcie białych znaków za pomocą strip(), rstrip() i lstrip() 192
- Wartości liczbowe znaków pobrane za pomocą funkcji ord() i chr() 193
- Kopiowanie i wklejanie ciągów tekstowych za pomocą modułu pyperclip 194
- Projekt - schowek dla wielu ciągów tekstowych 195
- Etap 1. Projekt programu i struktur danych 195
- Etap 2. Obsługa argumentów wiersza poleceń 196
- Etap 3. Skopiowanie odpowiedniej wiadomości 196
- Projekt - dodanie wypunktowania do kodu znaczników Wiki 197
- Etap 1. Kopiowanie i wklejanie ze schowka 198
- Etap 2. Rozdzielenie wierszy tekstu i dodanie gwiazdki 199
- Etap 3. Złączenie zmodyfikowanych wierszy 200
- Krótki program - świńska łacina 200
- Podsumowanie 204
- Pytania kontrolne 205
- Projekt praktyczny 206
- Wyświetlenie tabeli 206
- Symulator Zombie Dice 206
CZĘŚĆ II. AUTOMATYZACJA ZADAŃ
7. Dopasowanie wzorca za pomocą wyrażeń regularnych 213
- Wyszukiwanie wzorców w tekście bez użycia wyrażeń regularnych 214
- Wyszukiwanie wzorców w tekście z użyciem wyrażeń regularnych 216
- Tworzenie obiektów wyrażeń regularnych 217
- Dopasowanie obiektów wyrażeń regularnych 218
- Przegląd dopasowania za pomocą wyrażenia regularnego 218
- Jeszcze więcej o dopasowaniach wzorca za pomocą wyrażeń regularnych 219
- Grupowanie z użyciem nawiasów 219
- Dopasowanie wielu grup za pomocą potoku 221
- Opcjonalne dopasowanie za pomocą znaku zapytania 222
- Dopasowanie zera wystąpień lub większej liczby wystąpień za pomocą gwiazdki 222
- Dopasowanie jednego wystąpienia lub wielu wystąpień za pomocą plusa 223
- Dopasowanie określonych powtórzeń za pomocą nawiasu klamrowego 224
- Dopasowanie zachłanne i niezachłanne 225
- Metoda findall() 225
- Klasy znaków 226
- Utworzenie własnej klasy znaków 227
- Znaki ^ oraz $ 228
- Znak wieloznaczny 229
- Dopasowanie wszystkiego za pomocą kropki i gwiazdki 229
- Dopasowanie znaku nowego wiersza za pomocą kropki 230
- Przegląd znaków stosowanych w wyrażeniach regularnych 231
- Dopasowanie bez uwzględnienia wielkości znaków 232
- Zastępowanie ciągu tekstowego za pomocą metody sub() 232
- Zarządzanie skomplikowanymi wyrażeniami regularnymi 233
- Połączenie opcji re.IGNORECASE, re.DOTALL i re.VERBOSE 234
- Projekt - wyodrębnianie numeru telefonu i adresu e-mail 235
- Etap 1. Utworzenie wyrażenia regularnego dopasowującego numer telefonu 236
- Etap 2. Utworzenie wyrażenia regularnego dopasowującego adres e-mail 237
- Etap 3. Wyszukanie wszystkich dopasowań w tekście umieszczonym w schowku 237
- Etap 4. Połączenie dopasowań w celu utworzenia pojedynczego ciągu tekstowego do umieszczenia w schowku 238
- Uruchomienie programu 239
- Pomysły na podobne programy 239
- Podsumowanie 240
- Pytania kontrolne 240
- Projekty praktyczne 242
- Wykrywanie daty 242
- Wykrywanie silnego hasła 242
- Oparta na wyrażeniu regularnym wersja metody strip() 243
8. Weryfikacja danych wejściowych 245
- Moduł PyInputPlus 246
- Argumenty w postaci słów kluczowych min, max, greaterThan i lessThan 248
- Argument w postaci słowa kluczowego blank 249
- Argumenty w postaci słów kluczowych limit, timeout i default 250
- Argumenty w postaci słów kluczowych allowRegexes i blockRegexes 251
- Przekazanie do inputCustom() niestandardowej funkcji weryfikacji danych wejściowych 252
- Projekt - zajęcie kogoś godzinami 253
- Projekt - quiz z tabliczki mnożenia 255
- Podsumowanie 257
- Pytania kontrolne 258
- Projekty praktyczne 258
- Program przygotowujący kanapki 259
- Własna wersja quizu z zakresu tabliczki mnożenia 259
9. Odczyt i zapis plików 261
- Pliki i ścieżki dostępu do plików 261
- Lewy ukośnik w systemie Windows, prawy ukośnik w systemach macOS i Linux 262
- Używanie operatora / do złączania ścieżek dostępu 264
- Bieżący katalog roboczy 266
- Katalog domowy 267
- Względne kontra bezwzględne ścieżki dostępu 267
- Tworzenie nowych katalogów za pomocą funkcji os.makedirs() 267
- Obsługa bezwzględnych i względnych ścieżek dostępu 268
- Pobieranie fragmentów ścieżki dostępu do pliku 270
- Ustalenie wielkości pliku i zawartości katalogu 273
- Modyfikowanie listy plików za pomocą wzorców glob 274
- Sprawdzenie poprawności ścieżki dostępu 276
- Proces odczytu i zapisu pliku 277
- Otwieranie pliku za pomocą funkcji open() 278
- Odczyt zawartości pliku 279
- Zapis pliku 280
- Zapis zmiennych za pomocą modułu shelve 281
- Zapis zmiennych za pomocą funkcji pprint.pformat() 283
- Projekt - generowanie losowych plików quizu 284
- Etap 1. Umieszczenie danych quizu w słowniku 285
- Etap 2. Utworzenie pliku quizu i losowe umieszczenie odpowiedzi na pytania 286
- Etap 3. Utworzenie odpowiedzi 287
- Etap 4. Zapis treści w plikach quizu i odpowiedzi 288
- Projekt - schowek przechowujący wiele elementów 289
- Etap 1. Komentarze i konfiguracja pliku binarnego 290
- Etap 2. Zapis zawartości schowka wraz ze słowem kluczowym 291
- Etap 3. Wyświetlenie słów kluczowych i wczytanie treści powiązanej ze słowem kluczowym 291
- Podsumowanie 292
- Pytania kontrolne 293
- Projekty praktyczne 293
- Rozbudowa programu schowka przechowującego wiele elementów 294
- Program Mad Libs 294
- Wyszukiwanie wyrażenia regularnego 294
10. Organizacja plików 295
- Moduł shutil 296
- Kopiowanie plików i katalogów 296
- Przenoszenie oraz zmiana nazwy plików i katalogów 297
- Trwałe usunięcie plików i katalogów 298
- Bezpieczne usuwanie danych za pomocą modułu send2trash 299
- Przejście przez drzewo katalogu 300
- Kompresja plików za pomocą modułu zipfile 302
- Odczyt pliku w formacie ZIP 302
- Wyodrębnianie plików z archiwum ZIP 303
- Utworzenie i dodawanie elementów do archiwum ZIP 304
- Projekt - zmiana plików z datami w stylu amerykańskim na daty w stylu europejskim 304
- Etap 1. Utworzenie wyrażenia regularnego dla daty w stylu amerykańskim 305
- Etap 2. Identyfikacja w nazwie pliku fragmentów określających datę 307
- Etap 3. Utworzenie nowej nazwy pliku i zmiana nazw plików 308
- Pomysły na podobne programy 309
- Projekt - utworzenie archiwum ZIP będącego kopią katalogu 309
- Etap 1. Ustalenie nazwy pliku archiwum ZIP 309
- Etap 2. Utworzenie nowego archiwum ZIP 310
- Etap 3. Przejście przez drzewo katalogu i dodanie plików do archiwum ZIP 311
- Pomysły na podobne programy 312
- Podsumowanie 312
- Pytania kontrolne 313
- Projekty praktyczne 313
- Kopiowanie selektywne 314
- Usunięcie niepotrzebnych plików 314
- Wypełnienie przerw 314
11. Usuwanie błędów 315
- Zgłaszanie wyjątku 316
- Pobranie stosu wywołań w postaci ciągu tekstowego 318
- Asercje 319
- Użycie asercji w projekcie symulacji ulicznej sygnalizacji świetlnej 321
- Rejestracja danych 322
- Użycie modułu logging 323
- Nie przeprowadzaj procesu usuwania błędów za pomocą funkcji print() 325
- Poziomy rejestrowania informacji 325
- Wyłączenie rejestrowania informacji 326
- Rejestrowanie informacji w pliku 327
- Debugger edytora Mu 327
- Kontynuuj 328
- Krok do wewnątrz 329
- Przekrocz 329
- Krok na zewnątrz 329
- Zatrzymaj 329
- Debugowanie programu sumującego liczby 329
- Punkty kontrolne 331
- Podsumowanie 333
- Pytania kontrolne 333
- Projekt praktyczny 334
- Debugowanie programu symulującego rzut monetą 334
12. Pobieranie danych z internetu 337
- Projekt - mapIt.py z użyciem modułu webbrowser 338
- Etap 1. Ustalenie adresu URL 339
- Etap 2. Obsługa argumentów wiersza poleceń 339
- Etap 3. Obsługa zawartości schowka i uruchomienie przeglądarki WWW 340
- Pomysły na podobne programy 341
- Pobieranie plików z internetu za pomocą modułu requests 341
- Pobieranie strony internetowej za pomocą funkcji requests.get() 342
- Sprawdzenie pod kątem błędów 343
- Zapis pobranych plików na dysku twardym 344
- HTML 345
- Zasoby pomagające w poznawaniu języka HTML 346
- Krótkie wprowadzenie 346
- Wyświetlenie kodu źródłowego HTML strony internetowej 347
- Wyświetlenie oferowanych przez przeglądarkę WWW narzędzi programistycznych 348
- Użycie narzędzi programistycznych do wyszukiwania elementów HTML 350
- Przetwarzanie kodu HTML za pomocą modułu bs4 352
- Utworzenie obiektu BeautifulSoup na podstawie kodu HTML 352
- Wyszukiwanie elementu za pomocą metody select() 353
- Pobieranie danych z atrybutów elementu 355
- Projekt - wyświetlenie wyników wyszukiwania 356
- Etap 1. Pobranie argumentów wiersza poleceń i żądanie strony wyszukiwarki 357
- Etap 2. Wyszukanie wszystkich wyników 357
- Etap 3. Otworzenie kart przeglądarki WWW dla poszczególnych wyników 358
- Pomysły na podobne programy 359
- Projekt - pobranie wszystkich komiksów z witryny XKCD 360
- Etap 1. Projekt programu 361
- Etap 2. Pobranie strony internetowej 362
- Etap 3. Odszukanie i pobranie obrazu komiksu 363
- Etap 4. Zapis obrazu i odszukanie poprzedniego komiksu 363
- Pomysły na podobne programy 365
- Kontrolowanie przeglądarki WWW za pomocą modułu selenium 365
- Uruchomienie przeglądarki WWW kontrolowanej przez moduł selenium 366
- Wyszukanie elementów na stronie 368
- Kliknięcie na stronie 370
- Wypełnianie i wysyłanie formularzy sieciowych 370
- Symulacja naciśnięcia klawiszy specjalnych 371
- Klikanie przycisków przeglądarki WWW 372
- Więcej informacji na temat modułu selenium 372
- Podsumowanie 372
- Pytania kontrolne 373
- Projekty praktyczne 374
- Klient poczty działający w wierszu poleceń 374
- Pobieranie obrazów z witryny internetowej 374
- 2048 374
- Weryfikacja łącza 375
13. Praca z arkuszami kalkulacyjnymi programu Excel 377
- Dokumenty Excela 378
- Instalacja modułu openpyxl 378
- Odczyt dokumentów Excela 379
- Otwieranie istniejącego dokumentu Excela za pomocą openpyxl 379
- Pobranie arkuszy ze skoroszytu 380
- Pobieranie komórek z arkuszy 380
- Konwersja między literami kolumn i liczbami 382
- Pobieranie wierszy i kolumn z arkuszy 383
- Skoroszyty, arkusze i komórki 385
- Projekt - odczyt danych z arkusza kalkulacyjnego 385
- Etap 1. Odczyt danych z arkusza kalkulacyjnego 386
- Etap 2. Wypełnienie struktury danych 387
- Etap 3. Zapis wyników do pliku 389
- Pomysły na podobne programy 390
- Zapis dokumentów Excela 390
- Tworzenie i zapisywanie dokumentów Excela 391
- Tworzenie i usuwanie arkuszy kalkulacyjnych 391
- Zapis wartości w komórkach 392
- Projekt - uaktualnienie skoroszytu 393
- Etap 1. Przygotowanie struktury danych wraz z uaktualnionymi informacjami 394
- Etap 2. Sprawdzenie wszystkich wierszy i skorygowanie nieprawidłowych cen 395
- Pomysły na podobne programy 396
- Ustawienie stylu czcionki komórek 396
- Obiekt Font 397
- Formuły 398
- Dostosowanie wierszy i kolumn do własnych potrzeb 400
- Ustalenie wysokości wiersza i szerokości kolumny 400
- Łączenie i dzielenie komórki 401
- Zablokowane okienka 402
- Wykresy 403
- Podsumowanie 404
- Pytania kontrolne 405
- Projekty praktyczne 406
- Program tworzący tabliczkę mnożenia 406
- Program wstawiający pusty wiersz 407
- Program zmieniający położenie komórek arkusza kalkulacyjnego 407
- Przeniesienie zawartości pliku tekstowego do arkusza kalkulacyjnego 408
- Przeniesienie zawartości arkusza kalkulacyjnego do plików tekstowych 409
14. Praca z Arkuszami Google 411
- Instalacja i konfiguracja EZSheets 411
- Pobranie danych uwierzytelniających i plików tokenów 412
- Unieważnienie pliku danych uwierzytelniających 414
- Obiekt skoroszytu 415
- Tworzenie, przekazywanie i wyświetlanie skoroszytów 415
- Atrybuty skoroszytu 417
- Pobieranie i przekazywanie skoroszytów 418
- Usuwanie skoroszytu 419
- Obiekt arkusza 419
- Odczytywanie i zapisywanie danych 420
- Tworzenie i usuwanie arkuszy 425
- Kopiowanie arkusza 426
- Praca z ograniczeniami nakładanymi przez Arkusze Google 427
- Podsumowanie 428
- Pytania kontrolne 428
- Projekty praktyczne 429
- Pobieranie danych Formularzy Google 429
- Konwertowanie skoroszytów na inne formaty 429
- Wyszukiwanie błędów w skoroszytach 429
15. Praca z dokumentami PDF i Worda 431
- Dokumenty w formacie PDF 431
- Wyodrębnianie tekstu z dokumentu PDF 432
- Deszyfrowanie dokumentu PDF 434
- Tworzenie dokumentów PDF 435
- Projekt - połączenie wybranych stron z wielu dokumentów PDF 440
- Etap 1. Wyszukanie wszystkich plików w formacie PDF 441
- Etap 2. Otworzenie poszczególnych dokumentów PDF 442
- Etap 3. Dodanie poszczególnych stron 442
- Etap 4. Zapis dokumentu wynikowego 443
- Pomysły na podobne programy 444
- Dokumenty procesora tekstu Microsoft Word 444
- Odczyt dokumentów Worda 445
- Pobranie pełnego tekstu z pliku w formacie .docx 446
- Nadawanie stylu akapitom i obiektom Run 447
- Utworzenie dokumentu Worda z niestandardowymi stylami 449
- Atrybuty obiektu Run 449
- Zapis dokumentów Worda 451
- Dodanie nagłówków 453
- Dodanie znaku podziału wiersza i strony 454
- Dodanie obrazu 454
- Tworzenie dokumentu PDF na podstawie dokumentu Worda 455
- Podsumowanie 455
- Pytania kontrolne 456
- Projekty praktyczne 457
- PDF Paranoja 457
- Własne zaproszenia utworzone w dokumencie Worda 457
- Program łamiący hasło dokumentu PDF za pomocą ataku typu brute force 458
16. Praca z plikami CSV i danymi JSON 461
- Moduł csv 462
- Obiekt reader 463
- Użycie pętli for do odczytu danych z obiektu reader 464
- Obiekt writer 464
- Argumenty w postaci słów kluczowych delimiter i lineterminator 466
- Obiekty CSV DictReader i DictWriter 467
- Projekt - usunięcie nagłówka z pliku CSV 469
- Etap 1. Iteracja przez poszczególne pliki CSV 470
- Etap 2. Odczyt zawartości pliku CSV 470
- Etap 3. Zapis pliku CSV bez pierwszego wiersza 471
- Pomysły na podobne programy 472
- JSON i API 473
- Moduł json 474
- Odczyt danych JSON za pomocą funkcji loads() 474
- Zapis danych w formacie JSON za pomocą funkcji dumps() 475
- Projekt - pobieranie bieżących danych prognozy pogody 475
- Etap 1. Pobranie z wiersza poleceń informacji o lokalizacji 476
- Etap 2. Pobranie danych w formacie JSON 477
- Etap 3. Wczytanie danych w formacie JSON i wyświetlenie prognozy pogody 478
- Pomysły na podobne programy 480
- Podsumowanie 480
- Pytania kontrolne 481
- Projekty praktyczne 481
- Konwerter danych w formacie Excel do formatu CSV 481
17. Czas, harmonogram zadań i uruchamianie programów 483
- Moduł time 483
- Funkcja time.time() 484
- Funkcja time.sleep() 485
- Zaokrąglanie liczb 486
- Projekt - superstoper 486
- Etap 1. Przygotowanie programu do pomiaru czasu 487
- Etap 2. Monitorowanie i wyświetlenie czasu okrążenia 488
- Pomysły na podobne programy 489
- Moduł datetime 490
- Typ danych timedelta 491
- Pauza aż do chwili osiągnięcia określonej daty 493
- Konwersja obiektu datetime na ciąg tekstowy 493
- Konwersja ciągu tekstowego na obiekt datetime 495
- Przegląd funkcji czasu w Pythonie 495
- Wielowątkowość 496
- Przekazanie argumentów funkcji docelowej dla nowego wątku 498
- Kwestie związane ze współbieżnością 499
- Projekt - wielowątkowy program pobierający dane z witryny XKCD 500
- Etap 1. Modyfikacja programu w celu użycia funkcji 500
- Etap 2. Utworzenie i uruchomienie wątków 502
- Etap 3. Zaczekanie na zakończenie działania wszystkich wątków 502
- Uruchamianie innych programów z poziomu Pythona 503
- Przekazanie funkcji Popen() argumentów wiersza poleceń 506
- Harmonogram zadań, launchd i cron 506
- Otwieranie witryn internetowych za pomocą Pythona 507
- Wykonywanie innych skryptów Pythona 507
- Otwieranie plików w ich aplikacjach domyślnych 508
- Projekt - prosty program odliczający czas 509
- Etap 1. Odliczanie 509
- Etap 2. Odtworzenie pliku dźwiękowego 510
- Pomysły na podobne programy 510
- Podsumowanie 511
- Pytania kontrolne 512
- Projekty praktyczne 512
- Ładniejszy stoper 512
- Oparty na harmonogramie program pobierający komiksy 513
18. Wysyłanie wiadomości e-mail i tekstowych 515
- Wysyłanie i odbieranie poczty za pomocą API Gmail 516
- Włączenie API Gmail 516
- Wysyłanie wiadomości za pomocą konta Gmail 517
- Odczytywanie wiadomości za pomocą konta Gmail 518
- Wyszukiwanie wiadomości w koncie poczty Gmail 520
- Pobieranie załączników z konta Gmail 521
- SMTP 521
- Wysyłanie wiadomości e-mail 522
- Nawiązanie połączenia z serwerem SMTP 522
- Wysłanie wiadomości SMTP typu "Witaj" 524
- Włączenie szyfrowania TLS 524
- Logowanie w serwerze SMTP 525
- Wysyłanie wiadomości e-mail 525
- Zamknięcie połączenia z serwerem SMTP 526
- IMAP 526
- Pobieranie i usuwanie wiadomości e-mail za pomocą protokołu IMAP 527
- Nawiązanie połączenia z serwerem IMAP 527
- Logowanie w serwerze IMAP 528
- Wyszukiwanie wiadomości e-mail 529
- Pobieranie wiadomości e-mail i oznaczanie jej jako przeczytanej 533
- Pobieranie adresów e-mail z niezmodyfikowanych wiadomości e-mail 534
- Pobranie treści z niezmodyfikowanej wiadomości e-mail 535
- Usuwanie wiadomości e-mail 536
- Zamknięcie połączenia z serwerem IMAP 536
- Projekt - wysyłanie wiadomości e-mail z przypomnieniami o składkach 537
- Etap 1. Otworzenie pliku Excela 538
- Etap 2. Wyszukanie wszystkich członków klubu, którzy zalegają ze składką 539
- Etap 3. Wysłanie spersonalizowanego przypomnienia 540
- Wysyłanie wiadomości tekstowych za pomocą bramek SMS 541
- Wysyłanie wiadomości tekstowych za pomocą Twilio 543
- Założenie konta w serwisie Twilio 544
- Wysyłanie wiadomości tekstowych 544
- Projekt - moduł typu "wyślij mi wiadomość SMS" 546
- Podsumowanie 548
- Pytania kontrolne 548
- Projekty praktyczne 549
- Program losowo przypisujący uciążliwe zadania 549
- Przypomnienie o parasolu 550
- Automatyczna rezygnacja z subskrypcji 550
- Kontrola komputera za pomocą wiadomości e-mail 550
19. Praca z obrazami 553
- Podstawy teorii obrazu cyfrowego 553
- Kolory i wartości RGBA 554
- Współrzędne i krotki pudełek 555
- Praca z obrazami za pomocą modułu pillow 556
- Praca z typem danych Image 558
- Przycinanie obrazu 559
- Kopiowanie i wklejanie obrazów w innych obrazach 560
- Zmiana wielkości obrazu 563
- Rotacja i lustrzane odbicia obrazu 564
- Zmiana poszczególnych pikseli 566
- Projekt - dodanie logo 568
- Etap 1. Otworzenie pliku logo 569
- Etap 2. Iteracja przez wszystkie pliki i otworzenie obrazów 570
- Etap 3. Zmiana wielkości obrazu 571
- Etap 4. Dodanie obrazu logo i zapisanie zmian 572
- Pomysły na podobne programy 573
- Rysowanie na obrazach 574
- Rysowanie kształtów 574
- Umieszczanie tekstu na obrazie 576
- Podsumowanie 578
- Pytania kontrolne 579
- Projekty praktyczne 579
- Rozbudowa i poprawa projektów omówionych w rozdziale 580
- Odszukanie na dysku twardym katalogów zawierających zdjęcia 580
- Własne wizytówki 581
20. Kontrolowanie klawiatury i myszy za pomocą automatyzacji GUI 583
- Instalacja modułu pyautogui 584
- Konfiguracja ustawień dostępności w macOS 585
- Pozostajemy na kursie 585
- Pauzy i funkcja bezpiecznej awarii 585
- Zamknięcie wszystkiego przez wylogowanie się 586
- Kontrola poruszania myszą 586
- Poruszanie kursorem myszy 587
- Pobranie informacji o położeniu kursora myszy 588
- Kontrola działania myszy 589
- Kliknięcie myszą 589
- Przeciąganie myszą 590
- Przewijanie myszą 592
- Planowanie ruchu myszą 592
- Praca z ekranem 594
- Wykonanie zrzutu ekranu 594
- Analiza zrzutu ekranu 594
- Rozpoznawanie obrazu 596
- Pobieranie informacji o oknie 598
- Pobranie aktywnego okna 598
- Inne sposoby na pobieranie okna 599
- Przeprowadzanie operacji na oknach 600
- Kontrola klawiatury 602
- Przekazanie ciągu tekstowego z klawiatury 602
- Nazwy klawiszy 603
- Naciskanie i zwalnianie klawiszy 604
- Kombinacja klawiszy 604
- Konfiguracja skryptów automatyzacji GUI 605
- Przegląd funkcji modułu pyautogui 607
- Projekt - automatyczne wypełnianie formularzy 608
- Etap 1. Ustalenie kroków do wykonania 610
- Etap 2. Przygotowanie współrzędnych 611
- Etap 3. Rozpoczęcie wpisywania danych 612
- Etap 4. Obsługa rozwijanych list i przycisków opcji 613
- Etap 5. Wysłanie formularza i oczekiwanie 614
- Wyświetlanie okien dialogowych 615
- Podsumowanie 616
- Pytania kontrolne 617
- Projekty praktyczne 618
- Symulowanie zajętości 618
- Używanie schowka do odczytywania pola tekstowego 618
- Bot komunikatora internetowego 619
- Samouczek dotyczący bota grającego w grę 620
A. Instalacja modułów firm trzecich 621
- Narzędzie pip 621
- Instalacja modułów firm trzecich 622
- Instalowanie modułów dla edytora Mu 624
B. Uruchamianie programów 627
- Uruchamianie programów z poziomu powłoki 627
- Uruchamianie programów Pythona w Windows 629
- Uruchamianie programów Pythona w systemie macOS 630
- Uruchamianie programów Pythona w systemie Ubuntu Linux 631
- Uruchamianie programów Pythona z wyłączonymi asercjami 632
C. Odpowiedzi na pytania kontrolne 633
- Rozdział 1. 634
- Rozdział 2. 634
- Rozdział 3. 636
- Rozdział 4. 637
- Rozdział 5. 638
- Rozdział 6. 638
- Rozdział 7. 639
- Rozdział 8. 640
- Rozdział 9. 640
- Rozdział 10. 641
- Rozdział 11. 641
- Rozdział 12. 642
- Rozdział 13. 643
- Rozdział 14. 644
- Rozdział 15. 645
- Rozdział 16. 645
- Rozdział 17. 646
- Rozdział 18. 646
- Rozdział 19. 647
- Rozdział 20. 648