下面給大家推薦幾個(gè)我用過(guò)的,并且特別好用的項(xiàng)目,而不是簡(jiǎn)單的貼一下awesome python。相信很多人看完awesome python以后,只是簡(jiǎn)單的收藏一下,并沒(méi)有很多幫助。
1. yagmail
Python官網(wǎng)上發(fā)郵件的例子(Examples - Python 2.7.13 documentation),大家感受一下。反正我看到這一堆的import就已經(jīng)被嚇退場(chǎng)了。
如果使用yagmail,發(fā)送一個(gè)帶附件的郵件,只需要2行代碼:
2. requests
requests很多人都推薦過(guò)了,不過(guò)可能一些同學(xué)感受不到requests到底好在哪里。我們就以官網(wǎng)的例子為例簡(jiǎn)單說(shuō)明,在沒(méi)有request之前,如果我們要請(qǐng)求https://api.github.com/user,需要像下面這樣:
用requests以后,做同樣的事情,我們可以這樣(注意,前3行代碼等于上面一整段代碼):
3. psutil
psutil是用來(lái)獲取操作系統(tǒng)監(jiān)控以及進(jìn)程管理的,如果你正在寫(xiě)一個(gè)監(jiān)控系統(tǒng)(或腳本),趕緊去試試。這么說(shuō)吧,我曾經(jīng)使用psutil把網(wǎng)易內(nèi)部的一個(gè)監(jiān)控模塊,從1000+行重構(gòu)到了100+行。
我這里推薦的幾個(gè)庫(kù),可能yagmail對(duì)最多人有用。而psutil,對(duì)專(zhuān)業(yè)的人士最有用。如果你要寫(xiě)一個(gè)監(jiān)控系統(tǒng),不使用psutil的話,只能直接去/proc目錄下讀取想用的文件進(jìn)行計(jì)算,或者執(zhí)行iostat、vmstat、df等linux命令獲取命令輸出,不管哪一種方法,都要處理很多繁瑣的細(xì)節(jié)。有了psutil以后,就輕松多了。貼段代碼大家感受一下:
此外,使用越來(lái)越廣泛的監(jiān)控工具glances(如果沒(méi)用過(guò),要不現(xiàn)在就是試試?),就是用psutil收集相關(guān)數(shù)據(jù)的。
4. BeautifulSoup
如果你寫(xiě)爬蟲(chóng),還在用XPath解析HTML,那趕緊用用BeautifulSoup,比XPath好用一百倍;如果你還在用正則表達(dá)式從HTML中獲取內(nèi)容,BeautifulSoup能讓你好用到哭。(補(bǔ)充:評(píng)論里大家都說(shuō)XPath更好用,難道是我思維方式和大家不一樣?)
BeautifulSoup是用來(lái)解析HTML的,特點(diǎn)就是好用,有人吐槽BeautifulSoup慢?我不在乎BeautifulSoup比XPath慢多少,我只知道,我的時(shí)間比機(jī)器的更寶貴。
例如,要找到頁(yè)面中所有的links,如下所示:
例如,我在編寫(xiě)知乎的爬蟲(chóng)的時(shí)候,對(duì)于每一個(gè)用戶(hù)的”關(guān)注”頁(yè)面,對(duì)于每一個(gè)關(guān)注對(duì)象,有如下的tag:
所以,解析單個(gè)關(guān)注的用戶(hù)代碼如下所示:
有了BeautifulSoup以后,爬蟲(chóng)操作就變得特別簡(jiǎn)單了。臟活累活別人都幫忙做好了。
5. utils
除了開(kāi)源的庫(kù)以外,還有些開(kāi)源項(xiàng)目的DataStruct.py helper.py utils.py文件,也值得看一看。里面很多好東西,都是可以直接拿過(guò)來(lái)用的。
<img src="https://pic4.zhimg.com/v2-0f15c1bee04b1ae03bbc0ef1eb13d10f_b.jpg" data-rawwidth="652" data-rawheight="600" class="origin_image zh-lightbox-thumb" width="652" data-original="https://pic4.zhimg.com/v2-0f15c1bee04b1ae03bbc0ef1eb13d10f_r.jpg">
我舉幾個(gè)例子。
requests中的CaseInsensitiveDict(https://github.com/kennethreitz/requests/blob/v1.2.3/requests/structures.py#L37-L109),大家看名字就知道什么意思了,我就不多說(shuō)了。
werkzeug中的LocalProxy、ImmutableList、ImmutableDict(https://github.com/pallets/werkzeug/blob/master/werkzeug/datastructures.py#L128),其中ImmutableList和ImmutableDict大家一看就知道是什么意思,這里要說(shuō)的是LocalProxy,使用LocalProxy,分分鐘實(shí)現(xiàn)代理模式。
web.py的utils.py中各個(gè)函數(shù)和類(lèi)都值得看一看(https://github.com/webpy/webpy/blob/master/web/utils.py#L48),不但可以了解好用的函數(shù)和數(shù)據(jù)結(jié)構(gòu),而且,還能夠?qū)W習(xí)一下高手的Python代碼。例如:
ps:web.py的作者是亞倫·斯沃茨(Aaron Swartz),一位年少成名的計(jì)算機(jī)天才,著名社交網(wǎng)站Reddit聯(lián)合創(chuàng)始人。致力于網(wǎng)絡(luò)信息開(kāi)放,卻因涉嫌非法侵入麻省理工學(xué)院(MIT)和JSTOR(全稱(chēng)Journal Storage,存儲(chǔ)學(xué)術(shù)期刊的在線系統(tǒng))被指控,將受到最高35年監(jiān)禁和100萬(wàn)美元罰款。該案正在認(rèn)罪辯訴階段,而亞倫·斯沃茨卻于2013年1月11日在其紐約布魯克林的寓所內(nèi),用一根皮帶上吊自殺,尸體隨后被女友發(fā)現(xiàn),年僅26歲。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6603瀏覽量
123019 -
代碼
+關(guān)注
關(guān)注
30文章
4694瀏覽量
68075 -
python
+關(guān)注
關(guān)注
54文章
4756瀏覽量
84283
原文標(biāo)題:一些讓你相見(jiàn)恨晚的Python庫(kù)(一)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論