Python Cookbook(第2版中文版)

Python Cookbook(第2版中文版)

《Python Cookbook(第2版中文版)》是2014年5月人民郵電出版社出版的圖書,作者是[美]Alex Martelli、Anna Martelli Ravenscroft、David Ascher。

基本介紹

  • 中文名:Python Cookbook(第2版中文版)
  • 作者:[美]Alex Martelli、Anna Martelli Ravenscroft、David Ascher
  • 出版時間:2014年5月
  • 出版社:人民郵電出版社
  • 頁數:756 頁
  • ISBN:9787115222664
  • 定價:99 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

本書介紹了Python套用在各個領域中的一些使用技巧和方法,從**基本的字元、檔案序列、字典和排序,到進階的面向對象編程、資料庫和數據持久化、XML處理和Web編程,再到比較高級和抽象的描述符、裝飾器、元類、疊代器和生成器,均有涉及。書中還介紹了一些第三方包和庫的使用,包括Twisted、GIL、PyWin32等。本書覆蓋了Python套用中的很多常見問題,並提出了通用的解決方案。書中的代碼和方法具有很強的實用性,可以方便地套用到實際的項目中,並產生立竿見影的效果。尤為難得的是,本書的各位作者都具有豐富的業界實踐經驗,因此,本書不僅給出了對各種問題的解決方案,同時還體現了很多專家的思維方式和良好的編程習慣,與具體的細節性知識相比,這部分內容無疑是本書的精華。
本書適合具有一定Python基礎的讀者閱讀參考。
Python Cookbook(第2版中文版)
Python Cookbook(第2版中文版)

圖書目錄

第 1章 文本 1
引言 1
1.1 每次處理一個字元 6
1.2 字元和字元值之間的轉換 7
1.3 測試一個對象是否是類字元串 8
1.4 字元串對齊 10
1.5 去除字元串兩端的空格 11
1.6 合併字元串 11
1.7 將字元串逐字元或逐詞反轉 14
1.8 檢查字元串中是否包含某字元集合中的字元 15
1.9 簡化字元串的translate方法的使用 18
1.10 過濾字元串中不屬於指定集合的字元 20
1.11 檢查一個字元串是文本還是二進制 23
1.12 控制大小寫 25
1.13 訪問子字元串 26
1.14 改變多行文本字元串的縮進 29
1.15 擴展和壓縮制表符 31
1.16 替換字元串中的子串 33
1.17 替換字元串中的子串——Python 2.4 34
1.18 一次完成多個替換 36
1.19 檢查字元串中的結束標記 39
1.20 使用Unicode來處理國際化文本 40
1.21 在Unicode和普通字元串之間轉換 43
1.22 在標準輸出中列印Unicode字元 45
1.23 對Unicode數據編碼並用於XML和HTML 46
1.24 讓某些字元串大小寫不敏感 49
1.25 將HTML文檔轉化為文本顯示到UNIX終端上 52
第 2章 檔案 55
引言 55
2.1 讀取檔案 59
2.2 寫入檔案 62
2.3 搜尋和替換檔案中的文本 64
2.4 從檔案中讀取指定的行 65
2.5 計算檔案的行數 66
2.6 處理檔案中的每個詞 68
2.7 隨機輸入/輸出 70
2.8 更新隨機存取檔案 71
2.9 從zip檔案中讀取數據 73
2.10 處理字元串中的zip檔案 74
2.11 將檔案樹歸檔到一個壓縮的tar檔案 76
2.12 將二進制數據傳送到Windows的標準輸出 77
2.13 使用C++的類iostream語法 78
2.14 回退輸入檔案到起點 80
2.15 用類檔案對象適配真實檔案對象 83
2.16 遍歷樹 84
2.17 在樹中改變檔案擴展名 85
2.18 從指定的搜尋路徑尋找檔案 86
2.19 根據指定的搜尋路徑和模式尋找檔案 87
2.20 在Python的搜尋路徑中尋找檔案 88
2.21 動態地改變Python搜尋路徑 89
2.22 計算間的相對路徑 91
2.23 跨平台地讀取無快取的字元 93
2.24 在Mac OS X平台上統計PDF文檔的頁數 94
2.25 在Windows平台上修改檔案屬性 95
2.26 從OpenOffice.org文檔中提取文本 96
2.27 從微軟Word文檔中抽取文本 97
2.28 使用跨平台的檔案鎖 98
2.29 帶版本號的檔案名稱 100
2.30 計算CRC-64循環冗餘碼校驗 102
第3章 時間和財務計算 105
引言 105
3.1 計算昨天和明天的日期 111
3.2 尋找上一個星期五 112
3.3 計算日期之間的時段 114
3.4 計算歌曲的總播放時間 115
3.5 計算日期之間的工作日 116
3.6 自動查詢節日 118
3.7 日期的模糊查詢 121
3.8 檢查夏令時是否正在實行 123
3.9 時區轉換 124
3.10 反覆執行某個命令 125
3.11 定時執行命令 127
3.12 十進制數學計算 129
3.13 將十進制數用於貨幣處理 130
3.14 用Python實現的簡單加法器 133
3.15 檢查信用卡校驗和 136
3.16 查看匯率 137
第4章 Python技巧 139
引言 139
4.1 對象拷貝 140
4.2 通過列表推導構建列表 144
4.3 若列表中某元素存在則返回之 146
4.4 循環訪問序列中的元素和索引 147
4.5 在無須共享引用的條件下創建列表的列表 148
4.6 展開一個嵌套的序列 149
4.7 在行列表中完成對列的刪除和排序 152
4.8 二維陣列變換 154
4.9 從字典中取值 155
4.10 給字典增加一個條目 157
4.11 在無須過多援引的情況下創建字典 158
4.12 將列表元素交替地作為鍵和值來創建字典 159
4.13 獲取字典的一個子集 161
4.14 反轉字典 163
4.15 字典的一鍵多值 164
4.16 用字典分派方法和函式 166
4.17 字典的並集與交集 167
4.18 蒐集命名的子項 169
4.19 用一條語句完成賦值和測試 171
4.20 在Python中使用printf 174
4.21 以指定的機率獲取元素 174
4.22 在表達式中處理異常 176
4.23 確保名字已經在給定模組中被定義 178
第5章 搜尋和排序 180
引言 180
5.1 對字典排序 185
5.2 不區分大小寫對字元串列表排序 185
5.3 根據對象的屬性將對象列表排序 187
5.4 根據對應值將鍵或索引排序 189
5.5 根據內嵌的數字將字元串排序 192
5.6 以隨機順序處理列表的元素 193
5.7 在增加元素時保持序列的順序 195
5.8 獲取序列中**小的幾個元素 197
5.9 在排序完畢的序列中尋找元素 199
5.10 選取序列中**小的第n個元素 200
5.11 三行代碼的快速排序 203
5.12 檢查序列的成員 206
5.13 尋找子序列 208
5.14 給字典類型增加排名功能 210
5.15 根據姓的首字母將人名排序和分組 214
第6章 面向對象編程 217
引言 217
6.1 溫標的轉換 223
6.2 定義常量 225
6.3 限制屬性的設定 227
6.4 鏈式字典查詢 229
6.5 繼承的替代方案——自動託管 231
6.6 在代理中託管特殊方法 234
6.7 有命名子項的元組 237
6.8 避免屬性讀寫的冗餘代碼 239
6.9 快速複製對象 240
6.10 保留對被綁定方法的引用且支持垃圾回收 243
6.11 快取環的實現 245
6.12 檢查一個實例的狀態變化 249
6.13 檢查一個對象是否包含某種必要的屬性 252
6.14 實現狀態設計模式 255
6.15 實現單例模式 257
6.16 用Borg慣用法來避免“單例”模式 259
6.17 Null對象設計模式的實現 263
6.18 用__init__參數自動初始化實例變數 266
6.19 調用超類的__init__方法 267
6.20 精確和安全地使用協作的超類調用 270
第7章 持久化和資料庫 273
引言 273
7.1 使用marshal模組序列化數據 275
7.2 使用pickle和cPickle模組序列化數據 277
7.3 在Pickling的時候壓縮 280
7.4 對類和實例使用cPickle模組 281
7.5 Pickling被綁定方法 284
7.6 Pickling代碼對象 286
7.7 通過shelve修改對象 288
7.8 使用Berkeley DB資料庫 291
7.9 訪問MySQL資料庫 294
7.10 在MySQL資料庫中儲存BLOB 295
7.11 在PostgreSQL中儲存BLOB 296
7.12 在SQLite中儲存BLOB 298
7.13 生成一個字典將欄位名映射為列號 300
7.14 利用dtuple實現對查詢結果的靈活訪問 302
7.15 列印資料庫游標的內容 304
7.16 適用於各種DB API模組的單參數傳遞風格 306
7.17 通過ADO使用Microsoft Jet 308
7.18 從Jython Servlet訪問JDBC資料庫 310
7.19 通過Jython和ODBC獲得Excel數據 313
第8章 調試和測試 315
引言 315
8.1 阻止某些條件和循環的執行 316
8.2 在Linux上測量記憶體使用 317
8.3 調試垃圾回收進程 318
8.4 捕獲和記錄異常 320
8.5 在調試模式中跟蹤表達式和注釋 322
8.6 從traceback中獲得更多信息 324
8.7 當未捕獲異常發生時自動啟用調試器 327
8.8 簡單的使用單元測試 328
8.9 自動運行單元測試 330
8.10 在Python 2.4中使用doctest和unittest 331
8.11 在單元測試中檢查區間 334
第9章 進程、執行緒和同步 336
引言 336
9.1 同步對象中的所有方法 339
9.2 終止執行緒 342
9.3 將Queue.Queue用作優先權佇列 344
9.4 使用執行緒池 346
9.5 以多組參數並行執行函式 349
9.6 用簡單的訊息傳遞協調執行緒 351
9.7 儲存執行緒信息 353
9.8 無執行緒的多任務協作 357
9.9 在Windows中探測另一個腳本實例的運行 359
9.10 使用MsgWaitForMultipleObjects處理Windows訊息 360
9.11 用popen驅動外部進程 363
9.12 獲取UNIX Shell命令的輸出流和錯誤流 364
9.13 在UNIX中fork一個守護進程 367
第 10章 系統管理 370
引言 370
10.1 生成隨機密碼 371
10.2 生成易記的偽隨機密碼 372
10.3 以POP伺服器的方式驗證用戶 375
10.4 統計Apache中每個IP的點擊率 376
10.5 統計Apache的客戶快取的命中率 378
10.6 在腳本中調用編輯器 379
10.7 備份檔案 381
10.8 選擇性地複製信箱檔案 383
10.9 通過信箱創建一個郵件地址的白名單 384
10.10 阻塞重複郵件 386
10.11 檢查你的Windows聲音系統 388
10.12 在Windows中註冊和反註冊DLL 388
10.13 檢查並修改Windows自動運行任務 390
10.14 在Windows中創建共享 391
10.15 連線一個正在運行的Internet Explorer實例 392
10.16 讀取Microsoft Outlook Contacts 393
10.17 在Mac OS X中收集詳細的系統信息 396
第 11章 用戶界面 400
引言 400
11.1 在文本控制台中顯示進度條 402
11.2 避免在編寫回調函式時使用lambda 404
11.3 在tkSimpleDialog函式中使用默認值和區間 405
11.4 給Tkinter列表框增加拖曳排序能力 406
11.5 在Tkinter部件中輸入一個重音字元 408
11.6 在Tkinter中嵌入內聯的GIF 410
11.7 轉換圖片格式 412
11.8 在Tkinter中實現一個秒表 415
11.9 用執行緒實現GUI和異步I/O的結合 417
11.10 在Tkinter中使用IDLE的 Tree部件 421
11.11 在Tkinter Listbox中支持單行多值 423
11.12 在Tkinter部件之間複製Geometry方法和選項 427
11.13 在Tkinter中實現一個帶標籤的記事本 429
11.14 使用wxPython實現帶面板的記事本 431
11.15 在Jython中實現一個ImageJ外掛程式 433
11.16 用Swing和Jython來通過URL查看圖片 434
11.17 在Mac OS中獲得用戶輸入 434
11.18 程式化地創建Python Cocoa GUI 437
11.19 用IronPython實現淡入視窗 439
第 12章 XML處理 441
引言 441
12.1 檢查XML的格式完好性 443
12.2 計算文檔中標籤的個數 444
12.3 獲得XML文檔中的文本 445
12.4 自動探測XML的編碼 447
12.5 將一個XML文檔轉化成Python對象樹 449
12.6 從XML DOM節點的子樹中刪除僅有空白符的文本節點 451
12.7 解析Microsoft Excel的XML 452
12.8 驗證XML文檔 454
12.9 過濾屬於指定命名空間的元素和屬性 455
12.10 用SAX合併連續的文本事件 458
12.11 使用MSHTML來解析XML或HTML 461
第 13章 網路編程 462
引言 462
13.1 通過Socket數據報傳輸訊息 464
13.2 從Web抓取文檔 466
13.3 過濾FTP站點列表 467
13.4 通過SNTP協定從伺服器獲取時間 468
13.5 傳送HTML郵件 469
13.6 在MIME訊息中綁入檔案 471
13.7 拆解一個分段MIME訊息 474
13.8 刪除郵件訊息中的附屬檔案 475
13.9 修復Python 2.4的email.FeedParser解析的訊息 477
13.10 互動式地檢查POP3信箱 479
13.11 探測不活動的計算機 482
13.12 用HTTP監視網路 487
13.13 網路連線埠的轉發和重定向 489
13.14 通過代理建立SSL隧道 492
13.15 實現動態IP協定 495
13.16 登錄到IRC並將訊息記錄到磁碟 498
13.17 訪問LDAP服務 500
第 14章 Web編程 502
引言 502
14.1 測試CGI是否在工作 503
14.2 用CGI腳本處理URL 506
14.3 用CGI上傳檔案 507
14.4 檢查web頁面的存在 509
14.5 通過HTTP檢查內容類型 510
14.6 續傳HTTP下載檔案 512
14.7 抓取Web頁面時處理Cookie 513
14.8 通過帶身份驗證的代理進行HTTPS導航 516
14.9 用Jython實現Servlet 517
14.10 尋找Internet Explorer的cookie 519
14.11 生成OPML檔案 521
14.12 聚合RSS Feed 524
14.13 通過模板將數據放入Web頁面 527
14.14 在Nevow中呈現任意對象 530
第 15章 分散式編程 534
引言 534
15.1 實現一個XML-RPC方法調用 536
15.2 服務XML-RPC請求 537
15.3 在Medusa中使用XML-RPC 539
15.4 允許XML-RPC服務被遠程終止 541
15.5 SimpleXMLRPCServer的一些細節 542
15.6 給一個XML-RPC服務提供一個wxPython GUI 544
15.7 使用Twisted的Perspective Broker 546
15.8 實現一個CORBA服務和客戶 549
15.9 使用telnetlib執行遠程登錄 551
15.10 使用SSH執行遠程登錄 554
15.11 通過HTTPS驗證一個SSL客戶端 557
第 16章 關於程式的程式 559
引言 559
16.1 驗證字元串是否代表著一個合法的數字 564
16.2 導入一個動態生成的模組 565
16.3 導入一個名字在運行時被確定的模組 567
16.4 將參數和函式聯繫起來 568
16.5 組合函式 571
16.6 使用內建的Tokenizer給Python源碼上色 572
16.7 合併和拆解Token 575
16.8 檢查字元串是否有平衡的圓括弧 577
16.9 在Python中模擬枚舉 580
16.10 在創建列表推導時引用它自身 583
16.11 自動化py2exe將腳本編譯成Windows執行檔的過程 585
16.12 在UNIX中將主腳本和模組綁成一個執行檔 587
第 17章 擴展和嵌入 590
引言 590
17.1 實現一個簡單的擴展類型 592
17.2 用Pyrex實現一個簡單的擴展類型 597
17.3 在Python中使用C++庫 598
17.4 調用Windows DLL的函式 601
17.5 在多執行緒環境中使用SWIG生成的模組 603
17.6 用PySequence_Fast將Python序列轉為C數組 604
17.7 用疊代器逐個訪問Python序列的元素 608
17.8 從Python可調用的C函式中返回None 611
17.9 用gdb調試動態載入的C擴展 613
17.10 調試記憶體問題 614
第 18章 算法 616
引言 616
18.1 消除序列中的重複 619
18.2 在保留序列順序的前提下消除其中的重複 621
18.3 生成回置採樣 625
18.4 生成無回置的抽樣 626
18.5 快取函式的返回值 627
18.6 實現一個FIFO容器 629
18.7 使用FIFO策略來快取對象 631
18.8 實現一個Bag(Multiset)收集類型 634
18.9 在Python模擬三元操作符 637
18.10 計算素數 640
18.11 將整數格式化為二進制字元串 642
18.12 以任意數為基將整數格式化為字元串 644
18.13 通過法雷分數將數字轉成有理數 646
18.14 帶誤差傳遞的數學計算 648
18.15 以**大精度求和 651
18.16 模擬浮點數 653
18.17 計算二維點集的凸包和直徑 656
第 19章 疊代器和生成器 660
引言 660
19.1 編寫一個類似range的浮點數遞增的函式 663
19.2 從任意可疊代對象創建列表 665
19.3 生成Fibonacci序列 667
19.4 在多重賦值中拆解部分項 669
19.5 自動拆解出需要的數目的項 670
19.6 以步長n將一個可疊代對象切成n片 672
19.7 通過重疊視窗循環序列 674
19.8 並行地循環多個可疊代對象 678
19.9 循環多個可疊代對象的矢量積 680
19.10 逐段讀取文本檔案 683
19.11 讀取帶有延續符的行 685
19.12 將一個數據塊流處理成行流 687
19.13 用生成器從資料庫中抓取大記錄集 688
19.14 合併有序序列 690
19.15 生成排列、組合以及選擇 694
19.16 生成整數的劃分 696
19.17 複製疊代器 697
19.18 疊代器的前瞻 701
19.19 簡化佇列消費者執行緒 703
19.20 在另一個執行緒中運行疊代器 705
19.21 用itertools.groupby來計算匯總報告 706
第 20章 描述符、裝飾器和元類 710
引言 710
20.1 在函式調用中獲得常新的默認值 712
20.2 用嵌套函式來編寫property屬性 715
20.3 給屬性值起別名 717
20.4 快取屬性值 719
20.5 用同一個方法訪問多個屬性 722
20.6 封裝一個方法來給類增加功能 723
20.7 增強所有方法來給類增加功能 726
20.8 在運行時給一個類實例添加方法 728
20.9 檢查接口的實現 730
20.10 在自定義元類中正確地使用__new__和__init__ 732
20.11 允許對List的可變方法的鏈式調用 734
20.12 通過更緊湊的語法使用協作的超類調用 736
20.13 不使用__init__來初始化實例屬性 738
20.14 實例屬性的自動初始化 740
20.15 重新載入時自動更新類實例 743
20.16 在編譯時綁定常量 747
20.17 解決元類衝突 752

相關詞條

熱門詞條

聯絡我們