第一部分Python編程基礎
第1章 Python基礎 3
1.1 在交互式環境中輸入錶達式 3
1.2 整型、浮點型和字符串數據類型 6
1.3 字符串連接和復製 6
1.4 在變量中保存值 7
1.4.1 賦值語句 7
1.4.2 變量名 9
1.5 第一個程序 9
1.6 程序剖析 11
1.6.1 注釋 11
1.6.2 print()函數 11
1.6.3 input()函數 11
1.6.4 打印用戶的名字 12
1.6.5 len()函數 12
1.6.6 str()、int()和float()函數 13
1.7 小結 15
1.8 習題 15
第2章 控製流 17
2.1 布爾值 18
2.2 比較操作符 19
2.3 布爾操作符 20
2.3.1 二元布爾操作符 20
2.3.2 not操作符 21
2.4 混閤布爾和比較操作符 21
2.5 控製流的元素 22
2.5.1 條件 22
2.5.2 代碼塊 22
2.6 程序執行 23
2.7 控製流語句 23
2.7.1 if語句 23
2.7.2 else語句 24
2.7.3 elif語句 25
2.7.4 while循環語句 30
2.7.5 惱人的循環 31
2.7.6 break語句 33
2.7.7 continue語句 34
2.7.8 for循環和range()函數 37
2.7.9 等價的while循環 39
2.7.10 range()的開始、停止和步長參數 39
2.8 導入模塊 40from import語句 41
2.9 用sys.exit()提前結束程序 41
2.10 小結 41
2.11 習題 41
第3章 函數 43
3.1 def語句和參數 44
3.2 返迴值和return語句 45
3.3 None值 46
3.4 關鍵字參數和print()47
3.5 局部和全局作用域 48
3.5.1 局部變量不能在全局作用域內使用 48
3.5.2 局部作用域不能使用其他局部作用域內的變量 49
3.5.3 全局變量可以在局部作用域中讀取 49
3.5.4 名稱相同的局部變量和全局變量 50
3.6 global語句 50
3.7 異常處理 52
3.8 一個小程序:猜數字 54
3.9 小結 55
3.10 習題 56
3.11 實踐項目 56
3.11.1 Collatz序列 56
3.11.2 輸入驗證 57
第4章 列錶 59
4.1 列錶數據類型 59
4.1.1 用下標取得列錶中的單個值 60
4.1.2 負數下標 61
4.1.3 利用切片取得子列錶 61
4.1.4 用len()取得列錶的長度 62
4.1.5 用下標改變列錶中的值 62
4.1.6 列錶連接和列錶復製 62
4.1.7 用del語句從列錶中刪除值 63
4.2 使用列錶 63
4.2.1 列錶用於循環 64
4.2.2 in和notin操作符 65
4.2.3 多重賦值技巧 66
4.3 增強的賦值操作 66
4.4 方法 67
4.4.1 用index()方法在列錶中查找值 67
4.4.2 用append()和insert()方法在列錶中添加值 68
4.4.3 用remove()方法從列錶中刪除值 69
4.4.4 用sort()方法將列錶中的值排序 69
4.5 例子程序:神奇8球和列錶 70
4.6 類似列錶的類型:字符串和元組 71
4.6.1 可變和不可變數據類型 72
4.6.2 元組數據類型 73
4.6.3 用list()和tuple()函數來轉換類型 74
4.7 引用 75
4.7.1 傳遞引用 76
4.7.2 copy模塊的copy()和deepcopy()函數 77
4.8 小結 78
4.9 習題 78
4.10 實踐項目 79
4.10.1 逗號代碼 79
4.10.2 字符圖網格 79
第5章 字典和結構化數據 81
5.1 字典數據類型 81
5.1.1 字典與列錶 82
5.1.2 keys()、values()和items()方法 83
5.1.3 檢查字典中是否存在鍵或值 84
5.1.4 get()方法 84
5.1.5 setdefault()方法 85
5.2 漂亮打印 86
5.3 使用數據結構對真實世界建模 87
5.3.1 井字棋盤 88
5.3.2 嵌套的字典和列錶 91
5.4 小結 92
5.5 習題 93
5.6 實踐項目 93
5.6.1 好玩遊戲的物品清單 93
5.6.2 列錶到字典的函數,針對好玩遊戲物品清單 94
第6章 字符串操作 95
6.1 處理字符串 95
6.1.1 字符串字麵量 95
6.1.2 雙引號 96
6.1.3 轉義字符 96
6.1.4 原始字符串 96
6.1.5 用三重引號的多行字符串 97
6.1.6 多行注釋 97
6.1.7 字符串下標和切片 98
6.1.8 字符串的in和notin操作符 98
6.2 有用的字符串方法 99
6.2.1 字符串方法upper()、lower()、isupper()和islower()99
6.2.2 isX字符串方法 100
6.2.3 字符串方法startswith()和endswith()102
6.2.4 字符串方法join()和split()102
6.2.5 用rjust()、ljust()和center()方法對齊文本 103
6.2.6 用strip()、rstrip()和lstrip()刪除空白字符 104
6.2.7 用pyperclip模塊拷貝粘貼字符串 105
6.3 項目:口令保管箱 106
第1步:程序設計和數據結構 106
第2步:處理命令行參數 106
第3步:復製正確的口令 107
6.4 項目:在Wiki標記中添加無序列錶 108
第1步:從剪貼闆中復製和粘貼 108
第2步:分離文本中的行,並添加星號 109
第3步:連接修改過的行 109
6.5 小結 110
6.6 習題 110
6.7 實踐項目 111
錶格打印 111
第二部分 自動化任務
第7章 模式匹配與正則錶達式 115
7.1 不用正則錶達式來查找文本模式 116
7.2 用正則錶達式查找文本模式 117
7.2.1 創建正則錶達式對象 118
7.2.2 匹配Regex對象 118
7.2.3 正則錶達式匹配復習 119
7.3 用正則錶達式匹配更多模式 119
7.3.1 利用括號分組 119
7.3.2 用管道匹配多個分組 120
7.3.3 用問號實現可選匹配 121
7.3.4 用星號匹配零次或多次 121
7.3.5 用加號匹配一次或多次 122
7.3.6 用花括號匹配特定次數 122
7.4 貪心和非貪心匹配 123
7.5 findall()方法 124
7.6 字符分類 124
7.7 建立自己的字符分類 125
7.8 插入字符和美元字符 126
7.9 通配字符 126
7.9.1 用點—星匹配所有字符 127
7.9.2 用句點字符匹配換行 127
7.10 正則錶達式符號復習 128
7.11 不區分大小寫的匹配 128
7.12 用sub()方法替換字符串 129
7.13 管理復雜的正則錶達式 129
7.14 組閤使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
7.15 項目:電話號碼和Email地址提取程序 130
第1步:為電話號碼創建一個正則錶達式 131
第2步:為email地址創建一個正則錶達式 132
第3步:在剪貼闆文本中找到所有匹配 132
第4步:所有匹配連接成一個字符串,復製到剪貼闆 133
第5步:運行程序 133
第6步:類似程序的構想 134
7.16 小結 134
7.17 習題 134
7.18 實踐項目 136
7.18.1 強口令檢測 136
7.18.2 strip()的正則錶達式版本 136
第8章 讀寫文件 137
8.1 文件與文件路徑 137
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
8.1.2 當前工作目錄 139
8.1.3 絕對路徑與相對路徑 139
8.1.4 用os.makedirs()創建新文件夾 140
8.1.5 os.path模塊 140
8.1.6 處理絕對路徑和相對路徑 141
8.1.7 查看文件大小和文件夾內容 142
8.1.8 檢查路徑有效性 143
8.2 文件讀寫過程 144
8.2.1 用open()函數打開文件 145
8.2.2 讀取文件內容 145
8.2.3 寫入文件 146
8.3 用shelve模塊保存變量 147
8.4 用pprint.pformat()函數保存變量 148
8.5 項目:生成隨機的測驗試捲文件 149
第1步:將測驗數據保存在一個字典中 149
第2步:創建測驗文件,並打亂問題的次序 150
第3步:創建答案選項 151
第4步:將內容寫入測驗試捲和答案文件 151
8.6 項目:多重剪貼闆 153
第1步:注釋和shelf設置 153
第2步:用一個關鍵字保存剪貼闆內容 154
第3步:列齣關鍵字和加載關鍵字的內容 154
8.7 小結 155
8.8 習題 155
8.9 實踐項目 156
8.9.1 擴展多重剪貼闆 156
8.9.2 瘋狂填詞 156
8.9.3 正則錶達式查找 156
第9章 組織文件 157
9.1 shutil模塊 158
9.1.1 復製文件和文件夾 158
9.1.2 文件和文件夾的移動與改名 158
9.1.3 永久刪除文件和文件夾 160
9.1.4 用send2trash模塊安全地刪除 160
9.2 遍曆目錄樹 161
9.7 用zipfile模塊壓縮文件 162
9.3.1 讀取ZIP文件 163
9.3.2 從ZIP文件中解壓縮 164
9.3.3 創建和添加到ZIP文件 164
9.4 項目:將帶有美國風格日期的文件改名為歐洲風格日期 165
第1步:為美國風格的日期創建一個正則錶達式 165
第2步:識彆文件名中的日期部分 166
第3步:構成新文件名,並對文件改名 167
第4步:類似程序的想法 168
9.5 項目:將一個文件夾備份到一個ZIP文件 168
第1步:弄清楚ZIP文件的名稱 168
第2步:創建新ZIP文件 169
第3步:遍曆目錄樹並添加到ZIP文件。170
第4步:類似程序的想法 170
9.6 小結 171
9.7 習題 171
9.8 實踐項目 171
9.8.1 選擇性拷貝 171
9.8.2 刪除不需要的文件 172
9.8.3 消除缺失的編號 172
第10章 調試 173
10.1 拋齣異常 174
10.2 取得反嚮跟蹤的字符串 175
10.3 斷言 176
10.3.1 在交通燈模擬中使用斷言 177
10.3.2 禁用斷言 178
10.4 日誌 178
10.4.1 使用日誌模塊 178
10.4.2 不要用print()調試 180
10.4.3 日誌級彆 180
10.4.4 禁用日誌 181
10.4.5 將日誌記錄到文件 182
10.5 IDLE的調試器 182
10.5.1 Go 183
10.5.2 Step 183
10.5.3 Over 183
10.5.4 Out 183
10.5.5 Quit 183
10.5.6 調試一個數字相加的程序 184
10.5.7 斷點 185
10.6 小結 187
10.7 習題 187
10.7 實踐項目 188
調試硬幣拋擲 188
第11章 從Web抓取信息 189
11.1 項目:利用webbrowser模塊的mapIt.py 190
第1步:弄清楚URL 190
第2步:處理命令行參數 191
第3步:處理剪貼闆內容,加載瀏覽器 191
第4步:類似程序的想法 192
11.2 用requests模塊從Web下載文件 192
11.2.1 用requests.get()函數下載一個網頁 193
11.2.2 檢查錯誤 193
10.3 將下載的文件保存到硬盤 194
10.4 HTML 195
10.4.1 學習HTML的資源 195
10.4.2 快速復習 195
10.4.3 查看網頁的HTML源代碼 196
10.4.4 打開瀏覽器的開發者工具 197
10.4.5 使用開發者工具來尋找HTML元素 198
10.5 用BeautifulSoup模塊解析HTML 199
10.5.1 從HTML創建一個BeautifulSoup對象 200
10.5.2 用select()方法尋找元素 200
10.5.3 通過元素的屬性獲取數據 202
10.6 項目:“I’mFeelingLucky”Google查找 202
第1步:獲取命令行參數,並請求查找頁麵 203
第2步:找到所有的結果 203第3步:針對每個結果打開Web瀏覽器 204
第4步:類似程序的想法 205
10.7 項目:下載所有XKCD漫畫 205
第1步:設計程序 206
第2步:下載網頁 207
第3步:尋找和下載漫畫圖像 207
第4步:保存圖像,找到前一張漫畫 208
第4步:類似程序的想法 209
10.8 用selenium模塊控製瀏覽器 210
10.8.1 啓動selenium控製的瀏覽器 210
10.8.2 在頁麵中尋找元素 211
10.8.3 點擊頁麵 212
10.8.4 填寫並提交錶單 212
10.8.5 發送特殊鍵 213
10.8.6 點擊瀏覽器按鈕 213
10.8.7 關於selenium的更多信息 214
10.9 小結 214
10.10 習題 214
10.11 實踐項目 215
10.11.1 命令行郵件程序 215
10.11.2 圖像網站下載 215
10.11.32048215
10.11.4 鏈接驗證 215
第12章 處理Excel電子錶格 217
12.1 Excel文檔 217
12.2 安裝openpyxl模塊 218
12.3 讀取Excel文檔 218
12.3.1 用openpyxl模塊打開Excel文檔 219
12.3.2 從工作簿中取得工作錶 219
12.3.3 從錶中取得單元格 220
12.3.4 列字母和數字之間的轉換 221
12.3.5 從錶中取得行和列 222
12.3.6 工作薄、工作錶、單元格 223
12.4 項目:從電子錶格中讀取數據 223
第1步:讀取電子錶格數據 224
第2步:填充數據結構 225
第3步:將結果寫入文件 226
第4步:類似程序的思想 227
12.5 寫入Excel文檔 227
12.5.1 創建並保存Excel文檔 227
12.5.2 創建和刪除工作錶 228
12.5.3 將值寫入單元格 229
12.6 項目:更新一個電子錶格 229
第1步:利用更新信息建立數據結構 230
第2步:檢查所有行,更新不正確的價格 231
第4步:類似程序的思想 231
12.7 設置單元格的字體風格 232
12.8 Font對象 232
12.9 公式 234
12.10 調整行和列 235
12.10.1 設置行高和列寬 235
12.10.2 閤並和拆分單元格 236
12.10.3 凍結窗格 237
12.10.4 圖錶 238
12.11 小結 240
12.11 習題 240
12.12 實踐項目 241
12.12.1 乘法錶 241
12.12.2 空行插入程序 241
12.12.3 電子錶格單元格翻轉程序 242
12.12.4 文本文件到電子錶格 242
12.12.5 電子錶格到文本文件 242
第13章 處理PDF和Word文檔 243
13.1 PDF文檔 243
13.1.1 從PDF提取文本 244
13.1.2 解密PDF 245
13.1.3 創建PDF 246
13.1.4 拷貝頁麵 246
13.1.5 鏇轉頁麵 247
13.1.6 疊加頁麵 248
13.1.7 加密PDF 249
13.2 項目:從多個PDF中閤並選擇的頁麵 250
第1步:找到所有PDF文件 250
第2步:打開每個PDF文件 251
第3步:添加每一頁 252
第4步:保存結果 252
第5步:類似程序的想法 253
13.3 Word文檔 253
13.3.1 讀取Word文檔 254
13.3.2 從.docx文件中取得完整的文本 254
13.3.3 設置Paragraph和Run對象的樣式 255
13.3.4 創建帶有非默認樣式的Word文檔 257
13.3.5 Run屬性 257
13.3.6 寫入Word文檔 258
13.3.7 添加標題 260
13.3.8 添加換行符和換頁符 261
13.3.9 添加圖像 261
13.4 小結 262
13.5 習題 262
13.6 實踐項目 263
13.6.1 PDF偏執狂 263
13.6.2 定製邀請函,保存為Word文檔 263
13.6.3 暴力PDF口令破解程序 264
第14章 處理CSV文件和JSON數據 265
14.1 csv模塊 265
14.2.1 Reader對象 266
14.2.2 在for循環中,從Reader對象讀取數據 267
14.2.3 Writer對象 268
14.2.4 delimiter和lineterminator關鍵字參數 269
14.3 項目:從CSV文件中刪除錶頭 269
第1步:循環遍曆每個CSV文件 270
第2步:讀入CSV文件 270
第3步:寫入CSV文件,沒有
第一行 271
第4步:類似程序的想法 272
14.4 JSON和API 272
14.5 json模塊 273
14.5.1 用loads()函數讀取
JSON 273
14.5.2 用dumps函數寫齣
JSON 273
14.6 項目:取得當前的天氣數據 274
第1步:從命令行參數獲取位置 274
第2步:下載JSON數據 275
第3步:加載JSON數據並打印天氣 275
第4步:類似程序的想法 277
14.7 小結 277
14.8 習題 277
14.9 實踐項目 277
Excel到CSV的轉換程序 277
第15章 保持時間、計劃任務和啓動程序 279
15.1 time模塊 279
15.1.1 time.time()函數 279
15.1.2 time.sleep()函數 280
15.2 數字四捨五入 281
15.3 項目:超級秒錶 282
第1步:設置程序來記錄時間 282
第2步:記錄並打印單圈時間 283
第4步:類似程序的想法 283
15.4 datetime模塊 284
15.4.1 timedelta數據類型 285
15.4.2 暫停直至特定日期 286
15.4.3 將datetime對象轉換為字符串 287
15.4.4 將字符串轉換成datetime對象 288
15.5 迴顧Python的時間函數 288
15.6 多綫程 289
15.6.1 嚮綫程的目標函數傳遞參數 290
15.6.2 並發問題 291
15.7 項目:多綫程XKCD下載程序 291
第1步:修改程序以使用函數 292
第2步:創建並啓動綫程 293
第3步:等待所有綫程結束 293
15.8 從Python啓動其他程序 294
15.8.1 嚮Popen()傳遞命令行參數 295
15.8.2 TaskScheduler、launchd和
cron 296
15.8.3 用Python打開網站 296
15.8.4 運行其他Python腳本 296
15.8.5 用默認的應用程序打開文件 297
15.9 項目:簡單的倒計時程序 298
第1步:倒計時 298
第2步:播放聲音文件 298
第3步:類似程序的想法 299
15.10 小結 299
15.11 習題 300
15.12 實踐項目 300
15.12.1 美化的秒錶 300
15.12.2 計劃的Web漫畫下載 301
第16章 發送電子郵件和短信 303
16.1 SMTP 303
16.2 發送電子郵件 304
16.2.1 連接到SMTP服務器 304
16.2.2 發送SMTP的“Hello”消息 305
16.2.3 開始TLS加密 306
16.2.4 登錄到SMTP服務器 306
16.2.5 發送電子郵件 306
16.2.6 從SMTP服務器斷開 307
16.3 IMAP 307
16.4 用IMAP獲取和刪除電子郵件 307
16.4.1 連接到IMAP服務器 308
16.4.2 登錄到IMAP服務器 309
16.4.3 搜索電子郵件 309
16.4.4 選擇文件夾 309
16.4.5 執行搜索 310
16.4.6 大小限製 312
16.4.7 取郵件並標記為已讀 312
16.4.8 從原始消息中獲取電子郵件地址 313
16.4.9 從原始消息中獲取正文 314
16.4.10 刪除電子郵件 315
16.4.11 從IMAP服務器斷開 315
16.5 項目:嚮會員發送會費提醒電子郵件 316
第1步:打開Excel文件 316
第2步:查找所有未付成員 317
第3步:發送定製的電子郵件提醒 318
16.6 用Twilio發送短信 319
16.6.1 注冊Twilio賬號 319
16.6.2 發送短信 320
16.7 項目:“隻給我發短信”模塊 321
16.8 小結 322
16.9 習題 323
16.10 實踐項目 323
16.10.1 隨機分配傢務活的電子郵件程序 323
16.10.2 傘提醒程序 324
16.10.3 自動退訂 324
16.10.4 通過電子郵件控製你的電腦 324
第17章 操作圖像 327
17.1 計算機圖像基礎 327
17.1.1 顔色和RGBA值 328
17.1.2 坐標和Box元組 329
17.2 用Pillow操作圖像 330
17.2.1 處理Image數據類型 331
17.2.2 裁剪圖片 332
17.2.3 復製和粘貼圖像到其他圖像 333
17.2.4 調整圖像大小 335
17.2.5 鏇轉和翻轉圖像 336
17.2.6 更改單個像素 338
17.3 項目:添加徽標 339
第1步:打開徽標圖像 340
第2步:遍曆所有文件並打開圖像 341
第3步:調整圖像的大小 341
第4步:添加徽標,並保存更改 342
第5步:類似程序的想法 343
17.4 在圖像上繪畫 344
17.4.1 繪製形狀 344
17.4.2 繪製文本 346
17.5 小結 347
17.6 習題 348
17.7 實踐項目 348
17.7.1 擴展和修正本章項目的程序 348
17.7.2 在硬盤上識彆照片文件夾 349
17.7.3 定製的座位卡 350
第18章 用GUI自動化控製鍵盤和鼠標 351
18.1 安裝pyautogui模塊 351
18.2 走對路 352
18.2.1 通過注銷關閉所有程序 352
18.2.2 暫停和自動防故障裝置 352
18.3 控製鼠標移動 353
18.3.1 移動鼠標 354
18.3.2 獲取鼠標位置 354
18.4 項目:“現在鼠標在哪裏?”355
第1步:導入模塊 355
第2步:編寫退齣代碼和無限循環 355
第3步:獲取並打印鼠標坐標。356
18.5 控製鼠標交互 357
18.5.1 點擊鼠標 357
18.5.2 拖動鼠標 357
18.5.3 滾動鼠標 359
18.6 處理屏幕 360
18.6.1 獲取屏幕快照 360
18.6.2 分析屏幕快照 360
18.7 項目:擴展mouseNow程序 361
18.8 圖像識彆 362
18.9 控製鍵盤 363
18.9.1 通過鍵盤發送一個字符串 363
18.9.2 鍵名 364
18.9.3 按下和釋放鍵盤 365
18.9.4 熱鍵組閤 365
18.10 復習PyAutoGUI的函數 366
18.11 項目:自動填錶程序 367
第1步:弄清楚步驟 368
第2步:建立坐標 368
第3步:開始鍵入數據 370
第4步:處理選擇列錶和單選按鈕 371
第5步:提交錶單並等待 372
18.12 小結 372
18.13 習題 373
18.14 實踐項目 373
18.14.1 看起來很忙 373
18.14.2 即時通信機器人 373
18.14.3 玩遊戲機器人指南 374
附錄A 安裝第三方模塊 375
附錄B 運行程序 377
附錄C 習題答案 381
· · · · · · (
收起)