第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
· · · · · · (
收起)