本書特色
本書介紹了Python語言在Linux系統(tǒng)管理中的應(yīng)用,包括編寫Python腳本管理Linux系統(tǒng),使用Python編寫的自動(dòng)化工具管理Linux系統(tǒng),以及使用Python打造專屬的管理工具等。
實(shí)戰(zhàn)類書籍,有大量實(shí)戰(zhàn)案例。
如何閱讀本書?
共11章,每一章專注于解決某一類問題,均可單獨(dú)成冊(cè),擇需閱讀即可。
Chapter1: 為什么學(xué)Python?
Chapter2:Python的多個(gè)生態(tài)工具,解決學(xué)習(xí)Python中的環(huán)境問題。
Chapter3~7:如何用Python編寫腳本管理Linux?可提高Python編程技能。
如何構(gòu)建命令行工具?
如何處理文本問題?
如何進(jìn)行系統(tǒng)管理?
如何監(jiān)控Linux系統(tǒng)?
如何處理文檔和報(bào)告?······
Chapter8~10:多個(gè)Python語言開發(fā)的工具:網(wǎng)絡(luò)嗅探工具Scapy、自動(dòng)化部署Fabric、自動(dòng)部署工具Ansible,偏重運(yùn)維操作。簡單易用、功能強(qiáng)大、擴(kuò)展性強(qiáng),運(yùn)維工程師的得力助手。
Chapter11:綜合案例——Python打造MySQL的數(shù)據(jù)庫專家系統(tǒng),以數(shù)據(jù)庫為載體,介紹了Python中的高級(jí)語言特性,和Python中的系統(tǒng)架構(gòu)。充分理解本章,可以使自身Python水平有較大提升。
勘誤&資源
Python 語言的流行證明
學(xué)習(xí)一門新技術(shù),該越流行,對(duì)于初學(xué)者越友好,容易提升技能,還有求職優(yōu)勢。
TIOBE 的編程語言排行榜——使編程語言流行趨勢的一個(gè)指標(biāo),它基于互聯(lián)網(wǎng)上有經(jīng)驗(yàn)的工程師、課程和第三方廠商的數(shù)量,使用搜索引擎計(jì)算而得。
Google Trend :查詢Python關(guān)鍵詞搜索
微信搜索指數(shù):對(duì)比關(guān)鍵詞
why Python 開始流行?
簡單易學(xué):專注于如何解決問題,而不是編程語言的語法和結(jié)構(gòu)
語法優(yōu)美:縮進(jìn)標(biāo)識(shí)代碼塊,減少大括號(hào),句末分號(hào)等視覺雜訊,提高可讀性
強(qiáng)大的庫:battery included
開發(fā)效率高:實(shí)現(xiàn)相同功能,Python的代碼往往只有C、C++、Java的 1/5~1/3,能夠滿足互聯(lián)網(wǎng)快速迭代的需求。
應(yīng)用領(lǐng)域廣泛:Web開發(fā)、網(wǎng)絡(luò)編程、自動(dòng)化運(yùn)維、自動(dòng)化測試、Linux系統(tǒng)管理、數(shù)據(jù)分析、科學(xué)計(jì)算、人工智能、機(jī)器學(xué)習(xí)等。Python介于腳本語言和系統(tǒng)語言之間,所以,我們按照需求,可以將它當(dāng)成一門腳本語言來編寫腳本,也可以當(dāng)成系統(tǒng)語言來編寫服務(wù)。
Python語言的缺點(diǎn)
執(zhí)行速度不夠快:不是啥嚴(yán)重問題,一方面,網(wǎng)絡(luò)或磁盤的延遲會(huì)抵消部分Python本身消耗的時(shí)間,另一方面,Python 和C特別容易結(jié)合,可以分離一部分需要優(yōu)化速度的應(yīng)用,將其轉(zhuǎn)換為編譯好的擴(kuò)展,提高整體效率。
Python中的GIL鎖限制并發(fā):Python對(duì)多處理器支持不好,GIL,即Python全局解釋器鎖,Global Interpreter Lock,當(dāng)Python的默認(rèn)解釋器要執(zhí)行字節(jié)碼時(shí),都需要先申請(qǐng)這個(gè)鎖,也就是說,如果試圖通過多線程擴(kuò)展應(yīng)用程序,將總是被這個(gè)GIL限制。
Python2 和Python3 不兼容
Python語言應(yīng)用場景
應(yīng)用場景幾乎無限
Web開發(fā):適合快速迭代,非常適合互聯(lián)網(wǎng)公司。如Django、Pyramid、Bottle、Tornado、Flask、web2py等。說明其能經(jīng)受大規(guī)模用戶的并發(fā)訪問考驗(yàn)。
用戶圖形接口(GUI):標(biāo)準(zhǔn)庫tkInter,PyGObject、PyQt、PySide、Kivy、wxPython等。TKinter可輕松在不同平臺(tái)間使用。
數(shù)值計(jì)算和科學(xué)計(jì)算:取代Matlab,成為科研新寵,SciPy、NumPy、Pandas等。
系統(tǒng)管理:OpenStack開源云計(jì)算平臺(tái)即使用Python開發(fā),除此,還有Ansible和Salt等自動(dòng)化部署工具。
其他:pygame開發(fā)游戲,PIL庫處理圖片,NLTK進(jìn)行自然語言處理等。
why Python適合Linux系統(tǒng)管理
Python程序語法清晰、簡單易懂,相對(duì)而言,shell作為基本功,語法復(fù)雜、可讀性、可維護(hù)性差。
Python表達(dá)能力強(qiáng):相對(duì)shell,有豐富的數(shù)據(jù)結(jié)構(gòu)等,也可以進(jìn)行多線程編程,shell辦不到。
Python可跨平臺(tái):Python標(biāo)準(zhǔn)庫對(duì)操作系統(tǒng)的接口進(jìn)行了封裝,如Python標(biāo)準(zhǔn)庫綁定了POSIX以及其他常規(guī)操作工具,如環(huán)境變量、文件、套接字、管道、進(jìn)程、多線程、正則、命令行參數(shù)、Shell命令啟動(dòng)器、文件名擴(kuò)展等。相對(duì)于shell,有了跨平臺(tái)的優(yōu)勢。
可方面地與操作系統(tǒng)集成,可以使用標(biāo)準(zhǔn)庫對(duì)OS地封裝,也可以在Python中執(zhí)行Linux命令,完成任何管理任務(wù)。
許多Linux系統(tǒng)管理的開源項(xiàng)目:如psutil監(jiān)控、IPy的IP地址管理等
許多自動(dòng)化管理工具:Fabric、Ansible、SaltStack等
Linux系統(tǒng)管理,可以發(fā)揮Python優(yōu)點(diǎn),避免其缺點(diǎn)——開發(fā)效率高,執(zhí)行速度要求不高
Python2 vs Python3
通過Google統(tǒng)計(jì)分析
在https://cloud.google.com/bigquery/querying-data 中執(zhí)行下面的語句,查詢不同Python版本依賴包的下載數(shù)據(jù)
SELECT details.python, count() as count FROM [the-psf:pypi.downloads20190930] GROUP BY details.python;*
統(tǒng)計(jì)中國Python版本使用情況
SELECT details.python, count() as count FROM [the-psf:pypi.downloads20190930] where country_code = 'CN' GROUP BY details.python;*
建議:
充分使用**future** 庫,可以很好兼容Python2 和Python3 ;
可參考OpenStack的做法,兼容Python2和Python3,也可用six庫同時(shí)兼容2和3;
了解在Python3 中,已經(jīng)棄用的Python2 語法;
版本推薦:Python2 > 2.7 Python3 > 3.4