出版時間:2012-6-15 出版社:機械工業(yè)出版社華章公司 作者:Doug Hellmann 頁數(shù):1016 譯者:劉熾
Tag標簽:無
前言
序 今天是2010年的感恩節(jié)。不論人們是否身在美國,在這個節(jié)日里,大家都一邊品嘗豐盛的食物,一邊欣賞橄欖球比賽,有些人可能會出門逛逛?! ξ遥ㄒ约捌渌芏嗳耍﹣碚f,會借此機會回顧一下過去的歲月,想想那些讓我們的生活充滿色彩的人和事,向他們致以感謝。當然,我們每天都該這么做,不過專門有一天來表達謝意有時會讓我們想得更深遠一些?! ‖F(xiàn)在我坐在這里為本書寫序,非常感謝能有機會做這件事,不過我想到的不只是本書的內(nèi)容,也不只是作者本人(一個無比熱情的社區(qū)成員),我所想的是這個主題本身—Python,具體來講,還有它的標準庫。 當前發(fā)布的每版Python都包含數(shù)百個模塊,它們是多年來多位開發(fā)人員針對多個主題和多個任務(wù)共同完成的。這些模塊涵蓋一切,從發(fā)送和接收Email,到GUI開發(fā),再到內(nèi)置的HTTP服務(wù)器都一應(yīng)俱全。就其本身而言,標準庫的開發(fā)和維護是一項極其龐大的工作。如果沒有多年來一直維護它的人們,沒有數(shù)以千計的人提交補丁、文檔和提供反饋,它絕不會成為今天的模樣。 這是一個驚人的成就,在Python日益普及的今天(不論是作為語言還是一種生態(tài)系統(tǒng)),標準庫已經(jīng)成為其中不可或缺的重要組成部分。如果沒有標準庫,沒有核心團隊和其他人員的“內(nèi)含動力”(batteries included)口號,Python絕對不可能走這么遠。它已經(jīng)被成千上萬的人和公司下載,并已安裝在數(shù)百萬服務(wù)器、臺式機和其他設(shè)備上?! 〖词箾]有標準庫,Python仍是一種很不錯的語言,在教學(xué)、學(xué)習和可讀性方面有扎實的基礎(chǔ)?;谶@些優(yōu)點,它本身也能發(fā)展得足夠好。不過標準庫把它從一種有趣的體驗變成為一個強大而有效的工具。 每一天,全世界的開發(fā)人員都在構(gòu)建工具和完整的應(yīng)用,他們所基于的只是核心語言和標準庫。你不僅要能夠明確概念,描述汽車是什么(語言),還要得到足夠的部件和工具來自行組裝一輛基本的汽車。它可能并不完善,不過可以使你從無到有,這將是一個很好的獎勵,會賦予你巨大的動力。我曾反復(fù)對那些驕傲地看著我的人說:“看看我構(gòu)建的應(yīng)用,除了Python提供的,其他的工具通通都沒有用到!” 不過,標準庫也不是完美無缺的,它也有自己的缺陷。由于標準庫的規(guī)模、廣度和它的“年齡”,毫無疑問有些模塊有不同層次的質(zhì)量、API簡潔性和覆蓋性。有些模塊存在“特性蔓延”的問題,或者無法跟進其覆蓋領(lǐng)域中的最新進展。通過眾多不計酬勞的志愿者的幫助和辛勤工作,Python還在繼續(xù)發(fā)展、壯大和改進?! 〔贿^,有些人對Python還有爭議,不僅由于它的缺點,而且因為標準庫并不一定構(gòu)成其模塊涵蓋領(lǐng)域中“最頂尖的”解決方案(畢竟,“最佳”是一個不斷改變和調(diào)整的目標),因而認為應(yīng)當將它完全舍棄,盡管它還在不斷改善。這些人遺漏了一個事實:標準庫不僅是促使Python不斷成功的一個重要組成部分,而且盡管存在瑕疵,它還是一個絕妙的資源。 不過我有意忽略了一個巨大的領(lǐng)域:文檔。標準庫的文檔很不錯,還在繼續(xù)改進和發(fā)展。由于標準庫的龐大規(guī)模和廣度,相應(yīng)的文檔規(guī)模也很驚人。在數(shù)以千計的開發(fā)人員和用戶的努力下,我們有成百上千頁文檔,實在讓人佩服。每天都有數(shù)萬人在使用這些文檔創(chuàng)建應(yīng)用—可能簡單到只是一頁的腳本,也可能很復(fù)雜,比如控制大型機械手的軟件?! ≌怯捎谖臋n,我們才會看到本書。所有好的文檔和代碼都有一個起點—關(guān)于目標“是什么”以及“將是什么”要有一個核心概念。從這個內(nèi)核出發(fā),才有了角色(API)和故事情節(jié)(模塊)。談到代碼,有時代碼會從一個簡單的想法開始:“我想解析一個字符串,查找一個日期。”不過等結(jié)束時,你可能已經(jīng)查看了數(shù)百個單元測試、函數(shù)以及你編寫的其他代碼,你會坐下來,發(fā)現(xiàn)自己構(gòu)建的東西遠遠超出了原先的設(shè)想。文檔也是如此,特別是代碼文檔。 在我看來,代碼文檔中最重要的部分就屬于這種例子。要寫有關(guān)一個API中某一部分的描述,你可能會寫上幾本書,可以用華麗的文字和經(jīng)過深思熟慮的用例來描述松耦合的接口。不過,如果第一次查看這個描述的用戶無法將這些華麗的文字、仔細考量的用例和API簽名結(jié)合在一起,構(gòu)建出有意義的應(yīng)用并解決他們的問題,這一切就完全是徒勞。 人們建立重要連接所用的網(wǎng)關(guān)也屬于這種例子,這些邏輯會從一個抽象概念跳轉(zhuǎn)到具體的事物。“了解”思想和API是一回事;知道它如何使用則是另外一回事。如果你不僅想要學(xué)到東西,還希望改善現(xiàn)狀,這會很有幫助。 這就把我們重新引回Python。本書作者Doug Hellmann在2007年創(chuàng)建了一個名為“Python Module of the Week”的博客。在這個博客中,他全面研究了標準庫的眾多模塊,采用一種“示例為先”的方式介紹各個模塊如何工作以及為什么。從讀到它的第一天起,它就成為我除了核心Python文檔之外的又一個必訪之地。他的作品已經(jīng)成為我以及Python社區(qū)其他人不可缺少的必備資源?! oug的文章填補了當前我所看到的Python文檔的一個重大空白:對例子的迫切需求。用一種有效而簡單的方式展示如何做以及為什么這么做,這絕非易事。我們已經(jīng)看到,這也是一項很重要、很有價值的工作,對人們每一天的工作都有幫助。人們頻繁地給我發(fā)郵件,告訴我:“你看過Doug的這個帖子嗎?實在太棒了!”或者“為什么這個不能放在核心文檔里呢?它能幫助我了解到底是怎么做的!” 當我聽說Doug準備花些時間進一步完善他現(xiàn)有的工作,把它變成一本書,讓我能把它放在桌子上反復(fù)翻閱,以備急用,我真是太興奮了。Doug是一位非凡的技術(shù)作者,而且能敏銳地捕捉到細節(jié)。有一整本書專門講解實際例子,介紹標準庫中一百多個模塊是如何工作的,而且是他來寫這本書,實在讓我欣喜若狂。 所以,我要感謝Python,感謝標準庫(包括它的瑕疵),感謝我擁有的這個活力充沛有時也存在問題的龐大Python社區(qū)。我要感謝核心開發(fā)小組的辛勤工作,包括過去、現(xiàn)在,還有將來。我還要感謝這么多社區(qū)成員提供的資源、投入的時間和做出的努力,其中Doug Hellmann更是卓越的代表,正是這些讓這個社區(qū)和生態(tài)系統(tǒng)如此生機勃勃?! ∽詈?,我要感謝本書。繼續(xù)向它的作者表示敬意,這本書會在未來幾年得到充分利用?! esse Noller Python核心開發(fā)人員 PSF Board成員 Nasuni公司首席工程師
內(nèi)容概要
本書由資深Python專家親自執(zhí)筆,Python語言的核心開發(fā)人員作序推薦,權(quán)威性毋庸置疑。
對于程序員而言,標準庫與語言本身同樣重要,它好比一個百寶箱,能為各種常見的任務(wù)提供完美的解決方案,所以本書是所有Python程序員都必備的工具書!本書以案例驅(qū)動的方式講解了標準庫中一百多個模塊的使用方法(如何工作)和工作原理(為什么要這樣工作),比標準庫的官方文檔更容易理解(一個簡單的示例比一份手冊文檔更有幫助),為Python程序員熟練掌握和使用這些模塊提供了絕佳指導(dǎo)。
全書一共19章,系統(tǒng)而全面地對Python標準庫中的一百多個模塊進行了生動的講解。這些模塊主要包括:文本處理工具模塊、與數(shù)據(jù)結(jié)構(gòu)相關(guān)的模塊、與算法有關(guān)的模塊、管理日期和時間值的模塊、用于數(shù)學(xué)計算的模塊、管理文件系統(tǒng)的模塊、用于數(shù)據(jù)存儲與交換的模塊、用于數(shù)據(jù)壓縮與歸檔的模塊、用于加密的模塊、...
(展開全部) 本書由資深Python專家親自執(zhí)筆,Python語言的核心開發(fā)人員作序推薦,權(quán)威性毋庸置疑。
對于程序員而言,標準庫與語言本身同樣重要,它好比一個百寶箱,能為各種常見的任務(wù)提供完美的解決方案,所以本書是所有Python程序員都必備的工具書!本書以案例驅(qū)動的方式講解了標準庫中一百多個模塊的使用方法(如何工作)和工作原理(為什么要這樣工作),比標準庫的官方文檔更容易理解(一個簡單的示例比一份手冊文檔更有幫助),為Python程序員熟練掌握和使用這些模塊提供了絕佳指導(dǎo)。
全書一共19章,系統(tǒng)而全面地對Python標準庫中的一百多個模塊進行了生動的講解。這些模塊主要包括:文本處理工具模塊、與數(shù)據(jù)結(jié)構(gòu)相關(guān)的模塊、與算法有關(guān)的模塊、管理日期和時間值的模塊、用于數(shù)學(xué)計算的模塊、管理文件系統(tǒng)的模塊、用于數(shù)據(jù)存儲與交換的模塊、用于數(shù)據(jù)壓縮與歸檔的模塊、用于加密的模塊、與進程和線程相關(guān)的模塊、與網(wǎng)絡(luò)通信和Email相關(guān)的模塊、構(gòu)建模塊、支持處理多種自然語言和文化設(shè)置的模塊、開發(fā)工具模塊、與運行時特性相關(guān)的模塊,等等?! ?/pre>作者簡介
Doug Hellmann目前是Racemi公司的一位高級開發(fā)人員,也是Python
Software
Foundation的信息交流主管。從1.4版開始他就一直在做Python編程,曾在大量UNIX和非UNIX平臺上參與項目開發(fā),涉及領(lǐng)域包括地圖、醫(yī)療新聞播報、金融和數(shù)據(jù)中心自動化。為《Python
Magazine》做了一年普通專欄作家后,他在2008—2009年成為這家雜志的主編。自2007年以來,Doug在他的博客上發(fā)表了頗受關(guān)注的“Python
Module of the Week”系列。他居住在喬治亞州的Athens。書籍目錄
譯者序
序
前言
第1章 文本
1.1 string—文本常量和模板
1.1.1 函數(shù)
1.1.2 模板
1.1.3 高級模板
1.2 textwrap—格式化文本段落
1.2.1 示例數(shù)據(jù)
1.2.2 填充段落
1.2.3 去除現(xiàn)有縮進
1.2.4 結(jié)合dedent和fill
1.2.5 懸掛縮進
1.3 re—正則表達式
1.3.1 查找文本中的模式
1.3.2 編譯表達式
1.3.3 多重匹配
1.3.4 模式語法
1.3.5 限制搜索
1.3.6 用組解析匹配
1.3.7 搜索選項
1.3.8 前向或后向
1.3.9 自引用表達式
1.3.10 用模式修改字符串
1.3.11 利用模式拆分
1.4 difflib—比較序列
1.4.1 比較文本體
1.4.2 無用數(shù)據(jù)
1.4.3 比較任意類型
第2章 數(shù)據(jù)結(jié)構(gòu)
2.1 collections—容器數(shù)據(jù)類型
2.1.1 Counter
2.1.2 defaultdict
2.1.3 deque
2.1.4 namedtuple
2.1.5 OrderedDict
2.2 array—固定類型數(shù)據(jù)序列
2.2.1 初始化
2.2.2 處理數(shù)組
2.2.3 數(shù)組與文件
2.2.4 候選字節(jié)順序
2.3 heapq—堆排序算法
2.3.1 示例數(shù)據(jù)
2.3.2 創(chuàng)建堆
2.3.3 訪問堆的內(nèi)容
2.3.4 堆的數(shù)據(jù)極值
2.4 bisect—維護有序列表
2.4.1 有序插入
2.4.2 處理重復(fù)
2.5 Queue—線程安全的FIFO實現(xiàn)
2.5.1 基本FIFO隊列
2.5.2 LIFO隊列
2.5.3 優(yōu)先隊列
2.5.4 構(gòu)建一個多線程播客客戶程序
2.6 struct—二進制數(shù)據(jù)結(jié)構(gòu)
2.6.1 函數(shù)與Struct類
2.6.2 打包和解包
2.6.3 字節(jié)序
2.6.4 緩沖區(qū)
2.7 weakref—對象的非永久引用
2.7.1 引用
2.7.2 引用回調(diào)
2.7.3 代理
2.7.4 循環(huán)引用
2.7.5 緩存對象
2.8 copy—復(fù)制對象
2.8.1 淺副本
2.8.2 深副本
2.8.3 定制復(fù)制行為
2.8.4 深副本中的遞歸
2.9 pprint—美觀打印數(shù)據(jù)結(jié)構(gòu)
2.9.1 打印
2.9.2 格式化
2.9.3 任意類
2.9.4 遞歸
2.9.5 限制嵌套輸出
2.9.6 控制輸出寬度
第3章 算法
3.1 functools—管理函數(shù)的工具
3.1.1 修飾符
3.1.2 比較
3.2 itertools—迭代器函數(shù)
3.2.1 合并和分解迭代器
3.2.2 轉(zhuǎn)換輸入
3.2.3 生成新值
3.2.4 過濾
3.2.5 數(shù)據(jù)分組
3.3 operator—內(nèi)置操作符的函數(shù)接口
3.3.1 邏輯操作
3.3.2 比較操作符
3.3.3 算術(shù)操作符
3.3.4 序列操作符
3.3.5 原地操作符
3.3.6 屬性和元素“獲取方法”
3.3.7 結(jié)合操作符和定制類
3.3.8 類型檢查
3.4 contextlib—上下文管理器工具
3.4.1 上下文管理器API
3.4.2 從生成器到上下文管理器
3.4.3 嵌套上下文
3.4.4 關(guān)閉打開的句柄
第4章 日期和時間
4.1 time—時鐘時間
4.1.1 壁掛鐘時間
4.1.2 處理器時鐘時間
4.1.3 時間組成
4.1.4 處理時區(qū)
4.1.5 解析和格式化時間
4.2 datetime—日期和時間值管理
4.2.1 時間
4.2.2 日期
4.2.3 timedelta
4.2.4 日期算術(shù)運算
4.2.5 比較值
4.2.6 結(jié)合日期和時間
4.2.7 格式化和解析
4.2.8 時區(qū)
4.3 calendar—處理日期
4.3.1 格式化示例
4.3.2 計算日期
第5章 數(shù)學(xué)計算
5.1 decimal—定點數(shù)和浮點數(shù)的數(shù)學(xué)運算
5.1.1 Decimal
5.1.2 算術(shù)運算
5.1.3 特殊值
5.1.4 上下文
5.2 fractions—有理數(shù)
5.2.1 創(chuàng)建 Fraction實例
5.2.2 算術(shù)運算
5.2.3 近似值
5.3 random—偽隨機數(shù)生成器
5.3.1 生成隨機數(shù)
5.3.2 指定種子
5.3.3 保存狀態(tài)
5.3.4 隨機整數(shù)
5.3.5 選擇隨機元素
5.3.6 排列
5.3.7 采樣
5.3.8 多個并發(fā)生成器
5.3.9 SystemRandom
5.3.10 非均勻分布
5.4 math—數(shù)學(xué)函數(shù)
5.4.1 特殊常量
5.4.2 測試異常值
5.4.3 轉(zhuǎn)換為整數(shù)
5.4.4 其他表示
5.4.5 正號和負號
5.4.6 常用計算
5.4.7 指數(shù)和對數(shù)
5.4.8 角
5.4.9 三角函數(shù)
5.4.10 雙曲函數(shù)
5.4.11 特殊函數(shù)
第6章 文件系統(tǒng)
6.1 os.path—平臺獨立的文件名管理
6.1.1 解析路徑
6.1.2 建立路徑
6.1.3 規(guī)范化路徑
6.1.4 文件時間
6.1.5 測試文件
6.1.6 遍歷一個目錄樹
6.2 glob—文件名模式匹配
6.2.1 示例數(shù)據(jù)
6.2.2 通配符
6.2.3 單字符通配符
6.2.4 字符區(qū)間
6.3 linecache—高效讀取文本文件
6.3.1 測試數(shù)據(jù)
6.3.2 讀取特定行
6.3.3 處理空行
6.3.4 錯誤處理
6.3.5 讀取Python源文件
6.4 tempfile—臨時文件系統(tǒng)對象
6.4.1 臨時文件
6.4.2 命名文件
6.4.3 臨時目錄
6.4.4 預(yù)測名
6.4.5 臨時文件位置
6.5 shutil—高級文件操作
6.5.1 復(fù)制文件
6.5.2 復(fù)制文件元數(shù)據(jù)
6.5.3 處理目錄樹
6.6 mmap—內(nèi)存映射文件
6.6.1 讀文件
6.6.2 寫文件
6.6.3 正則表達式
6.7 codecs—字符串編碼和解碼
6.7.1 Unicode入門
6.7.2 處理文件
6.7.3 字節(jié)序
6.7.4 錯誤處理
6.7.5 標準輸入和輸出流
6.7.6 編碼轉(zhuǎn)換
6.7.7 非Unicode編碼
6.7.8 增量編碼
6.7.9 Unicode數(shù)據(jù)和網(wǎng)絡(luò)通信
6.7.10 定義定制編碼
6.8 StringIO—提供類文件API的文本緩沖區(qū)
6.9 fnmatch—UNIX式glob模式匹配
6.9.1 簡單匹配
6.9.2 過濾
6.9.3 轉(zhuǎn)換模式
6.10 dircache—緩存目錄列表
6.10.1 列出目錄內(nèi)容
6.10.2 標注列表
6.11 filecmp—比較文件
6.11.1 示例數(shù)據(jù)
6.11.2 比較文件
6.11.3 比較目錄
6.11.4 程序中使用差異
第7章 數(shù)據(jù)持久存儲與交換
7.1 pickle—對象串行化
7.1.1 導(dǎo)入
7.1.2 編碼和解碼字符串數(shù)據(jù)
7.1.3 處理流
7.1.4 重構(gòu)對象的問題
7.1.5 不可pickle的對象
7.1.6 循環(huán)引用
7.2 shelve—對象持久存儲
7.2.1 創(chuàng)建一個新shelf
7.2.2 寫回
7.2.3 特定shelf類型
7.3 anydbm—DBM數(shù)據(jù)庫
7.3.1 數(shù)據(jù)庫類型
7.3.2 創(chuàng)建一個新數(shù)據(jù)庫
7.3.3 打開一個現(xiàn)有數(shù)據(jù)庫
7.3.4 錯誤情況
7.4 whichdb—識別DBM數(shù)據(jù)庫格式
7.5 sqlite3—嵌入式關(guān)系數(shù)據(jù)庫
7.5.1 創(chuàng)建數(shù)據(jù)庫
7.5.2 獲取數(shù)據(jù)
7.5.3 查詢元數(shù)據(jù)
7.5.4 行對象
7.5.5 查詢中使用變量
7.5.6 批量加載
7.5.7 定義新列類型
7.5.8 確定列類型
7.5.9 事務(wù)
7.5.10 隔離級別
7.5.11 內(nèi)存中數(shù)據(jù)庫
7.5.12 導(dǎo)出數(shù)據(jù)庫內(nèi)容
7.5.13 SQL中使用Python函數(shù)
7.5.14 定制聚集
7.5.15 定制排序
7.5.16 線程和連接共享
7.5.17 限制對數(shù)據(jù)的訪問
7.6 xml.etree.ElementTree—XML操縱API
7.6.1 解析XML文檔
7.6.2 遍歷解析樹
7.6.3 查找文檔中的節(jié)點
7.6.4 解析節(jié)點屬性
7.6.5 解析時監(jiān)視事件
7.6.6 創(chuàng)建一個定制樹構(gòu)造器
7.6.7 解析串
7.6.8 用元素節(jié)點構(gòu)造文檔
7.6.9 美觀打印XML
7.6.10 設(shè)置元素屬性
7.6.11 由節(jié)點列表構(gòu)造樹
7.6.12 將XML串行化至一個流
7.7 csv—逗號分隔值文件
7.7.1 讀文件
7.7.2 寫文件
7.7.3 方言
7.7.4 使用字段名
第8章 數(shù)據(jù)壓縮與歸檔
8.1 zlib—GNU zlib壓縮
8.1.1 處理內(nèi)存中數(shù)據(jù)
8.1.2 增量壓縮與解壓縮
8.1.3 混合內(nèi)容流
8.1.4 校驗和
8.1.5 壓縮網(wǎng)絡(luò)數(shù)據(jù)
8.2 gzip—讀寫GNU Zip文件
8.2.1 寫壓縮文件
8.2.2 讀壓縮數(shù)據(jù)
8.2.3 處理流
8.3 bz2—bzip2壓縮
8.3.1 內(nèi)存中一次性操作
8.3.2 增量壓縮和解壓縮
8.3.3 混合內(nèi)容流
8.3.4 寫壓縮文件
8.3.5 讀壓縮文件
8.3.6 壓縮網(wǎng)絡(luò)數(shù)據(jù)
8.4 tarfile—Tar歸檔訪問
8.4.1 測試Tar文件
8.4.2 從歸檔文件讀取元數(shù)據(jù)
8.4.3 從歸檔抽取文件
8.4.4 創(chuàng)建新歸檔
8.4.5 使用候選歸檔成員名
8.4.6 從非文件源寫數(shù)據(jù)
8.4.7 追加到歸檔
8.4.8 處理壓縮歸檔
8.5 zipfile—ZIP歸檔訪問
8.5.1 測試ZIP文件
8.5.2 從歸檔讀取元數(shù)據(jù)
8.5.3 從歸檔抽取歸檔文件
8.5.4 創(chuàng)建新歸檔
8.5.5 使用候選歸檔成員名
8.5.6 從非文件源寫數(shù)據(jù)
8.5.7 利用ZipInfo實例寫
8.5.8 追加到文件
8.5.9 Python ZIP歸檔
8.5.10 限制
第9章 加密
9.1 hashlib—密碼散列
9.1.1 示例數(shù)據(jù)
9.1.2 MD5示例
9.1.3 SHA1示例
9.1.4 按名創(chuàng)建散列
9.1.5 增量更新
9.2 hmac—密碼消息簽名與驗證
9.2.1 消息簽名
9.2.2 SHA與MD
9.2.3 二進制摘要
9.2.4 消息簽名的應(yīng)用
第10章 進程與線程
10.1 subprocess—創(chuàng)建附加進程
10.1.1 運行外部命令
10.1.2 直接處理管道
10.1.3 連接管道段
10.1.4 與其他命令交互
10.1.5 進程間傳遞信號
10.2 signal—異步系統(tǒng)事件
10.2.1 接收信號
10.2.2 獲取注冊的處理程序
10.2.3 發(fā)送信號
10.2.4 鬧鈴
10.2.5 忽略信號
10.2.6 信號和線程
10.3 threading—管理并發(fā)操作
10.3.1 Thread對象
10.3.2 確定當前線程
10.3.3 守護與非守護線程
10.3.4 列舉所有線程
10.3.5 派生線程
10.3.6 定時器線程
10.3.7 線程間傳送信號
10.3.8 控制資源訪問
10.3.9 同步線程
10.3.10 限制資源的并發(fā)訪問
10.3.11 線程特定數(shù)據(jù)
10.4 multiprocessing—像線程一樣管理進程
10.4.1 multiprocessing基礎(chǔ)
10.4.2 可導(dǎo)入的目標函數(shù)
10.4.3 確定當前進程
10.4.4 守護進程
10.4.5 等待進程
10.4.6 終止進程
10.4.7 進程退出狀態(tài)
10.4.8 日志
10.4.9 派生進程
10.4.10 向進程傳遞消息
10.4.11 進程間信號傳輸
10.4.12 控制資源訪問
10.4.13 同步操作
10.4.14 控制資源的并發(fā)訪問
10.4.15 管理共享狀態(tài)
10.4.16 共享命名空間
10.4.17 進程池
10.4.18 實現(xiàn)MapReduce
第11章 網(wǎng)絡(luò)通信
11.1 socket—網(wǎng)絡(luò)通信
11.1.1 尋址、協(xié)議簇和套接字類型
11.1.2 TCP/IP客戶和服務(wù)器
11.1.3 用戶數(shù)據(jù)報客戶和服務(wù)器
11.1.4 UNIX域套接字
11.1.5 組播
11.1.6 發(fā)送二進制數(shù)據(jù)
11.1.7 非阻塞通信和超時
11.2 select—高效等待I/O
11.2.1 使用select()
11.2.2 有超時的非阻塞I/O
11.2.3 使用 poll()
11.2.4 平臺特定選項
11.3 SocketServer—創(chuàng)建網(wǎng)絡(luò)服務(wù)器
11.3.1 服務(wù)器類型
11.3.2 服務(wù)器對象
11.3.3 實現(xiàn)服務(wù)器
11.3.4 請求處理器
11.3.5 回應(yīng)示例
11.3.6 線程和進程
11.4 asyncore—異步I/O
11.4.1 服務(wù)器
11.4.2 客戶
11.4.3 事件循環(huán)
11.4.4 處理其他事件循環(huán)
11.4.5 處理文件
11.5 asynchat—異步協(xié)議處理器
11.5.1 消息終止符
11.5.2 服務(wù)器和處理器
11.5.3 客戶
11.5.4 集成
第12章 Internet
12.1 urlparse—分解URL
12.1.1 解析
12.1.2 反解析
12.1.3 連接
12.2 BaseHTTPServer—實現(xiàn)Web服務(wù)器的基類
12.2.1 HTTP GET
12.2.2 HTTP POST
12.2.3 線程與進程
12.2.4 處理錯誤
12.2.5 設(shè)置首部
12.3 urllib—網(wǎng)絡(luò)資源訪問
12.3.1 利用緩存實現(xiàn)簡單獲取
12.3.2 參數(shù)編碼
12.3.3 路徑與URL
12.4 urllib2—網(wǎng)絡(luò)資源訪問
12.4.1 HTTP GET
12.4.2 參數(shù)編碼
12.4.3 HTTP POST
12.4.4 增加發(fā)出首部
12.4.5 從請求提交表單數(shù)據(jù)
12.4.6 上傳文件
12.4.7 創(chuàng)建定制協(xié)議處理器
12.5 Base64—用ASCII編碼二進制數(shù)據(jù)
12.5.1 Base64編碼
12.5.2 Base64解碼
12.5.3 URL安全的變種
12.5.4 其他編碼
12.6 robotparser—網(wǎng)絡(luò)蜘蛛訪問控制
12.6.1 robots.txt
12.6.2 測試訪問權(quán)限
12.6.3 長久蜘蛛
12.7 Cookie—HTTP Cookie
12.7.1 創(chuàng)建和設(shè)置Cookie
12.7.2 Morsel
12.7.3 編碼值
12.7.4 接收和解析Cookie首部
12.7.5 候選輸出格式
12.7.6 廢棄的類
12.8 uuid—全局惟一標識符
12.8.1 UUID 1—IEEE 802 MAC地址
12.8.2 UUID 3和5—基于名字的值
12.8.3 UUID 4—隨機值
12.8.4 處理UUID對象
12.9 json—JavaScript對象記法
12.9.1 編碼和解碼簡單數(shù)據(jù)類型
12.9.2 優(yōu)質(zhì)輸出和緊湊輸出
12.9.3 編碼字典
12.9.4 處理定制類型
12.9.5 編碼器和解碼器類
12.9.6 處理流和文件
12.9.7 混合數(shù)據(jù)流
12.10 xmlrpclib—XML-RPC的客戶端庫
12.10.1 連接服務(wù)器
12.10.2 數(shù)據(jù)類型
12.10.3 傳遞對象
12.10.4 二進制數(shù)據(jù)
12.10.5 異常處理
12.10.6 將調(diào)用結(jié)合在一個消息中
12.11 SimpleXMLRPCServer—一個XML-RPC服務(wù)器
12.11.1 一個簡單的服務(wù)器
12.11.2 備用API名
12.11.3 加點的API名
12.11.4 任意API名
12.11.5 公布對象的方法
12.11.6 分派調(diào)用
12.11.7 自省API
第13章 Email
13.1 smtplib—簡單郵件傳輸協(xié)議客戶
13.1.1 發(fā)送Email消息
13.1.2 認證和加密
13.1.3 驗證Email地址
13.2 smtpd—示例郵件服務(wù)器
13.2.1 郵件服務(wù)器基類
13.2.2 調(diào)試服務(wù)器
13.2.3 代理服務(wù)器
13.3 imaplib—IMAP4客戶庫
13.3.1 變種
13.3.2 連接到服務(wù)器
13.3.3 示例配置
13.3.4 列出郵箱
13.3.5 郵箱狀態(tài)
13.3.6 選擇郵箱
13.3.7 搜索消息
13.3.8 搜索規(guī)則
13.3.9 獲取消息
13.3.10 完整消息
13.3.11 上傳消息
13.3.12 移動和復(fù)制消息
13.3.13 刪除消息
13.4 mailbox—管理郵件歸檔
13.4.1 mbox
13.4.2 Maildir
13.4.3 其他格式
第14章 應(yīng)用構(gòu)建模塊
14.1 getopt—命令行選項解析
14.1.1 函數(shù)參數(shù)
14.1.2 短格式選項
14.1.3 長格式選項
14.1.4 一個完整的例子
14.1.5 縮寫長格式選項
14.1.6 GNU選項解析
14.1.7 結(jié)束參數(shù)處理
14.2 optparse—命令行選項解析器
14.2.1 創(chuàng)建OptionParser
14.2.2 短格式和長格式選項
14.2.3 用getopt比較
14.2.4 選項值
14.2.5 選項動作
14.2.6 幫助消息
14.3 argparse—命令行選項和參數(shù)解析
14.3.1 與optparse比較
14.3.2 建立解析器
14.3.3 定義參數(shù)
14.3.4 解析命令行
14.3.5 簡單示例
14.3.6 自動生成的選項
14.3.7 解析器組織
14.3.8 高級參數(shù)處理
14.4 readline—GNU Readline庫
14.4.1 配置
14.4.2 完成文本
14.4.3 訪問完成緩沖區(qū)
14.4.4 輸入歷史
14.4.5 hook
14.5 getpass—安全密碼提示
14.5.1 示例
14.5.2 無終端使用getpass
14.6 cmd—面向行的命令處理器
14.6.1 處理命令
14.6.2 命令參數(shù)
14.6.3 現(xiàn)場幫助
14.6.4 自動完成
14.6.5 覆蓋基類方法
14.6.6 通過屬性配置Cmd
14.6.7 運行shell命令
14.6.8 候選輸入
14.6.9 sys.argv的命令
14.7 shlex—解析shell語法
14.7.1 加引號的字符串
14.7.2 嵌入注釋
14.7.3 分解
14.7.4 包含其他Token源
14.7.5 控制解析器
14.7.6 錯誤處理
14.7.7 POSIX與非POSIX解析
14.8 ConfigParser—處理配置文件
14.8.1 配置文件格式
14.8.2 讀取配置文件
14.8.3 訪問配置設(shè)置
14.8.4 修改設(shè)置
14.8.5 保存配置文件
14.8.6 選項搜索路徑
14.8.7 用接合合并值
14.9 日志—報告狀態(tài)、錯誤和信息消息
14.9.1 應(yīng)用與庫中的日志記錄
14.9.2 記入文件
14.9.3 旋轉(zhuǎn)日志文件
14.9.4 詳細級別
14.9.5 命名日志記錄器實例
14.10 fileinput—命令行過濾器框架
14.10.1 M3U文件轉(zhuǎn)換為RSS
14.10.2 進度元數(shù)據(jù)
14.10.3 原地過濾
14.11 atexit—程序關(guān)閉回調(diào)
14.11.1 示例
14.11.2 什么情況下不調(diào)用atexit函數(shù)
14.11.3 處理異常
14.12 sched—定時事件調(diào)度器
14.12.1 有延遲地運行事件
14.12.2 重疊事件
14.12.3 事件優(yōu)先級
14.12.4 取消事件
第15章 國際化和本地化
15.1 gettext—消息編目
15.1.1 轉(zhuǎn)換工作流概述
15.1.2 由源代碼創(chuàng)建消息編目
15.1.3 運行時查找消息編目
15.1.4 復(fù)數(shù)值
15.1.5 應(yīng)用與模塊本地化
15.1.6 切換轉(zhuǎn)換
15.2 locale—文化本地化API
15.2.1 探查當前本地化環(huán)境
15.2.2 貨幣
15.2.3 格式化數(shù)字
15.2.4 解析數(shù)字
15.2.5 日期和時間
第16章 開發(fā)工具
16.1 pydoc—模塊的聯(lián)機幫助
16.1.1 純文本幫助
16.1.2 HTML幫助
16.1.3 交互式幫助
16.2 doctest—通過文檔完成測試
16.2.1 開始
16.2.2 處理不可預(yù)測的輸出
16.2.3 Traceback
16.2.4 避開空白符
16.2.5 測試位置
16.2.6 外部文檔
16.2.7 運行測試
16.2.8 測試上下文
16.3 unittest—自動測試框架
16.3.1 基本測試結(jié)構(gòu)
16.3.2 運行測試
16.3.3 測試結(jié)果
16.3.4 斷言真值
16.3.5 測試相等性
16.3.6 近似相等
16.3.7 測試異常
16.3.8 測試固件
16.3.9 測試套件
16.4 traceback—異常和棧軌跡
16.4.1 支持函數(shù)
16.4.2 處理異常
16.4.3 處理棧
16.5 cgitb—詳細的traceback報告
16.5.1 標準traceback轉(zhuǎn)儲
16.5.2 啟用詳細traceback
16.5.3 traceback中的局部變量
16.5.4 異常屬性
16.5.5 HTML輸出
16.5.6 記錄traceback
16.6 pdb—交互式調(diào)試工具
16.6.1 啟動調(diào)試工具
16.6.2 控制調(diào)試工具
16.6.3 斷點
16.6.4 改變執(zhí)行流
16.6.5 用別名定制調(diào)試工具
16.6.6 保存配置設(shè)置
16.7 trace—執(zhí)行程序流
16.7.1 示例程序
16.7.2 跟蹤執(zhí)行
16.7.3 代碼覆蓋
16.7.4 調(diào)用關(guān)系
16.7.5 編程接口
16.7.6 保存結(jié)果數(shù)據(jù)
16.7.7 選項
16.8 profile和pstats—性能分析
16.8.1 運行性能分析工具
16.8.2 在上下文中運行
16.8.3 pstats:保存和處理統(tǒng)計信息
16.8.4 限制報告內(nèi)容
16.8.5 調(diào)用圖
16.9 timeit—測量小段Python代碼的執(zhí)行時間
16.9.1 模塊內(nèi)容
16.9.2 基本示例
16.9.3 值存儲在字典中
16.9.4 從命令行執(zhí)行
16.10 compileall—字節(jié)編譯源文件
16.10.1 編譯一個目錄
16.10.2 編譯sys.path
16.10.3 從命令行執(zhí)行
16.11 pyclbr—類瀏覽器
16.11.1 掃描類
16.11.2 掃描函數(shù)
第17章 運行時特性
17.1 site—全站點配置
17.1.1 導(dǎo)入路徑
17.1.2 用戶目錄
17.1.3 路徑配置文件
17.1.4 定制站點配置
17.1.5 定制用戶配置
17.1.6 禁用site模塊
17.2 sys—系統(tǒng)特定的配置
17.2.1 解釋器設(shè)置
17.2.2 運行時環(huán)境
17.2.3 內(nèi)存管理和限制
17.2.4 異常處理
17.2.5 底層線程支持
17.2.6 模塊和導(dǎo)入
17.2.7 跟蹤程序運行情況
17.3 os—可移植訪問操作系統(tǒng)特定特性
17.3.1 進程所有者
17.3.2 進程環(huán)境
17.3.3 進程工作目錄
17.3.4 管道
17.3.5 文件描述符
17.3.6 文件系統(tǒng)權(quán)限
17.3.7 目錄
17.3.8 符號鏈接
17.3.9 遍歷目錄樹
17.3.10 運行外部命令
17.3.11 用os.fork()創(chuàng)建進程
17.3.12 等待子進程
17.3.13 Spawn
17.3.14 文件系統(tǒng)權(quán)限
17.4 platform—系統(tǒng)版本信息
17.4.1 解釋器
17.4.2 平臺
17.4.3 操作系統(tǒng)和硬件信息
17.4.4 可執(zhí)行程序體系結(jié)構(gòu)
17.5 resource—系統(tǒng)資源管理
17.5.1 當前使用情況
17.5.2 資源限制
17.6 gc—垃圾回收器
17.6.1 跟蹤引用
17.6.2 強制垃圾回收
17.6.3 查找無法收集的對象引用
17.6.4 回收閾限和代
17.6.5 調(diào)試
17.7 sysconfig—解釋器編譯時配置
17.7.1 配置變量
17.7.2 安裝路徑
17.7.3 Python版本和平臺
第18章 語言工具
18.1 warnings—非致命警告
18.1.1 分類和過濾
18.1.2 生成警告
18.1.3 用模式過濾
18.1.4 重復(fù)的警告
18.1.5 候選消息傳送函數(shù)
18.1.6 格式化
18.1.7 警告中的棧層次
18.2 abc—抽象基類
18.2.1 為什么使用抽象基類
18.2.2 抽象基類如何工作
18.2.3 注冊一個具體類
18.2.4 通過派生實現(xiàn)
18.2.5 abc中的具體方法
18.2.6 抽象屬性
18.3 dis—Python字節(jié)碼反匯編工具
18.3.1 基本反匯編
18.3.2 反匯編函數(shù)
18.3.3 類
18.3.4 使用反匯編進行調(diào)試
18.3.5 循環(huán)的性能分析
18.3.6 編譯器優(yōu)化
18.4 inspect—檢查現(xiàn)場對象
18.4.1 示例模塊
18.4.2 模塊信息
18.4.3 檢查模塊
18.4.4 檢查類
18.4.5 文檔串
18.4.6 獲取源代碼
18.4.7 方法和函數(shù)參數(shù)
18.4.8 類層次結(jié)構(gòu)
18.4.9 方法解析順序
18.4.10 棧與幀
18.5 exceptions—內(nèi)置異常類
18.5.1 基類
18.5.2 產(chǎn)生的異常
18.5.3 警告類型
第19章 模塊與包
19.1 imp—Python的導(dǎo)入機制
19.1.1 示例包
19.1.2 模塊類型
19.1.3 查找模塊
19.1.4 加載模塊
19.2 zipimport—從ZIP歸檔加載Python代碼
19.2.1 示例
19.2.2 查找模塊
19.2.3 訪問代碼
19.2.4 源代碼
19.2.5 包
19.2.6 數(shù)據(jù)
19.3 pkgutil—包工具
19.3.1 包導(dǎo)入路徑
19.3.2 包的開發(fā)版本
19.3.3 用PKG文件管理路徑
19.3.4 嵌套包
19.3.5 包數(shù)據(jù)章節(jié)摘錄
版權(quán)頁: 垂持久存儲數(shù)據(jù)以供長期使用,這包括兩個方面:在對象的內(nèi)存中表示和存儲格式之間來回轉(zhuǎn)換數(shù)據(jù),以及處理轉(zhuǎn)換后數(shù)據(jù)的存儲區(qū)。標準庫包含很多模塊,可以在不同情況下處理這兩個方面。 有兩個模塊可以將對象轉(zhuǎn)換為一種可以傳輸或存儲的格式[這個過程稱為串行化(serializing)]。最常用的是使用pickle完成持久存儲,因為它可以與其他一些具體存儲串行化數(shù)據(jù)的標準庫模塊集成,如shelve。不過對基于Web的應(yīng)用,json則更為常用,因為它能更好地與現(xiàn)有Web服務(wù)存儲工具集成。 一旦將內(nèi)存中對象轉(zhuǎn)換為一種可以保存的格式,下一步就是確定如何存儲這個數(shù)據(jù)。如果數(shù)據(jù)不需要以某種方式索引,依序先后寫入串行化對象的簡單平面文件就很適用。Python包括一組模塊可以在一個簡單的數(shù)據(jù)庫中存儲鍵一值對,需要索引查找時會使用某種變種DBM格式。 要利用DBM格式,最直接的方式就是shelve??梢源蜷_shelve文件,并通過一個類字典的API來訪問。保存到數(shù)據(jù)庫的對象會自動pickle并保存,而無須調(diào)用者做任何額外的工作。 不過shelve有一個缺點,使用默認接口時,沒有辦法預(yù)測將使用哪一個DBM格式,因為它會根據(jù)創(chuàng)建數(shù)據(jù)庫的系統(tǒng)上有哪些可用的庫來進行選擇。如果應(yīng)用不需要在庫配置不同的主機之間共享數(shù)據(jù)庫文件,那么選擇哪種格式并不重要;不過,如果必須保證可移植性,可以使用這個模塊中的某個類來確保選擇一個特定的格式。 對于Web應(yīng)用,由于這些應(yīng)用處理的就是JSON格式的數(shù)據(jù),因此使用json和anydbm可以提供另一種持久存儲機制。直接使用anydbm會比shelve稍微多做一些工作,因為DBM數(shù)據(jù)庫鍵和值必須是字符串,而且在數(shù)據(jù)庫中訪問值時不會自動地重新創(chuàng)建對象。 大多數(shù)Python發(fā)布版本都提供了sqlite3進程中關(guān)系數(shù)據(jù)庫,可以采用比鍵一值對更復(fù)雜的組織來存儲數(shù)據(jù)。它將數(shù)據(jù)庫存儲在內(nèi)存中或者存儲在一個本地文件中,所有訪問都來自同一個進程,所以不存在網(wǎng)絡(luò)通信延遲。sqlite3的緊湊性使它尤其適合嵌入到桌面應(yīng)用或Web應(yīng)用的開發(fā)版本中。編輯推薦
《Python標準庫》的讀者應(yīng)該是中等水平的Python程序員,所以盡管書中對所有源代碼都做了討論,但只有一部分會逐行給出解釋。每節(jié)會通過源代碼和完全獨立的示例程序的輸出來重點介紹一個模塊的特性。我會盡可能簡潔地介紹各個特性,使讀者能夠把重點放在所展示的模塊或函數(shù)上,而不會因支持代碼而分心。圖書封面
圖書標簽Tags
無評論、評分、閱讀與下載