Python 編程快速上手讓繁瑣工作自動化 (Automate the boring stuff with Python) Python编程快速上手:让繁琐工作自动化

斯維加特 (Al Sweigart)

  • 出版商: 人民郵電
  • 出版日期: 2016-07-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 390
  • 裝訂: 平裝
  • ISBN: 7115422699
  • ISBN-13: 9787115422699
  • 相關分類: Python

已絕版

買這商品的人也買了...

相關主題

商品描述

<內容介紹>

如今,人們面臨的大多數任務都可以通過編寫計算機軟件來完成。Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。通過Python編程,我們能夠解決現實生活中的很多任務。
本書是一本面向實踐的Python編程實用指南。本書的目的,不僅是介紹Python語言的基礎知識,而且還通過項目實踐教會讀者如何應用這些知識和技能。本書的首部分介紹了基本Python編程概念,第二部分介紹了一些不同的任務,通過編寫Python程序,可以讓計算機自動完成它們。第二部分的每一章都有一些項目程序,供讀者學習。每章的末尾還提供了一些習題和深入的實踐項目,幫助讀者鞏固所學的知識。附錄部分提供了所有習題的解答。
本書適合任何想要通過Python學習編程的讀者,尤其適合缺乏編程基礎的初學者。通過閱讀本書,讀者將能利用強大的編程語言和工具,並且會體會到Python編程的快樂。

<目錄>

第一部分 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 導入模塊 40
from 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 Collat​​z序列 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和not in操作符 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和not in操作符 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.IGNOREC ASE、
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’m Feeling Lucky”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.3 2048 215
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步:循環遍歷每個CS文件 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 Task Scheduler、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