一些讓你相見恨晚的Python庫(一)

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

一些讓你相見恨晚的Python庫(一) 科技 第1張

作者:賴明星

鏈接:

https://www.zhihu.com/question/24590883/answer/134253100

下面給大家推薦幾個我用過的,並且特別好用的項目,而不是簡單的貼一下awesome python。相信很多人看完awesome python以後,只是簡單的收藏一下,並沒有很多幫助。

1. yagmail

Python官網上發郵件的例子(Examples – Python 2.7.13 documentation),大家感受一下。反正我看到這一堆的import就已經被嚇退場了。

一些讓你相見恨晚的Python庫(一) 科技 第2張

如果使用yagmail,發送一個帶附件的郵件,只需要2行代碼:

一些讓你相見恨晚的Python庫(一) 科技 第3張

2. requests

requests很多人都推薦過了,不過可能一些同學感受不到requests到底好在哪里。我們就以官網的例子為例簡單說明,在沒有request之前,如果我們要請求https://api.github.com/user,需要像下面這樣:

一些讓你相見恨晚的Python庫(一) 科技 第4張

用requests以後,做同樣的事情,我們可以這樣(注意,前3行代碼等於上面一整段代碼):

一些讓你相見恨晚的Python庫(一) 科技 第5張

3. psutil

psutil是用來獲取操作系統監控以及進程管理的,如果你正在寫一個監控系統(或腳本),趕緊去試試。這麼說吧,我曾經使用psutil把網易內部的一個監控模塊,從1000+行重構到了100+行。

我這里推薦的幾個庫,可能yagmail對最多人有用。而psutil,對專業的人士最有用。如果你要寫一個監控系統,不使用psutil的話,只能直接去/proc目錄下讀取想用的文件進行計算,或者執行iostat、vmstat、df等linux命令獲取命令輸出,不管哪一種方法,都要處理很多繁瑣的細節。有了psutil以後,就輕鬆多了。貼段代碼大家感受一下:

一些讓你相見恨晚的Python庫(一) 科技 第6張

此外,使用越來越廣泛的監控工具glances(如果沒用過,要不現在就是試試?),就是用psutil收集相關數據的。

4. BeautifulSoup

如果你寫爬蟲,還在用XPath解析HTML,那趕緊用用BeautifulSoup,比XPath好用一百倍;如果你還在用正則表達式從HTML中獲取內容,BeautifulSoup能讓你好用到哭。(補充:評論里大家都說XPath更好用,難道是我思維方式和大家不一樣?)

BeautifulSoup是用來解析HTML的,特點就是好用,有人吐槽BeautifulSoup慢?我不在乎BeautifulSoup比XPath慢多少,我只知道,我的時間比機器的更寶貴。

例如,要找到頁面中所有的links,如下所示:

一些讓你相見恨晚的Python庫(一) 科技 第7張

例如,我在編寫知乎的爬蟲的時候,對於每一個用戶的」關注」頁面,對於每一個關注對象,有如下的tag:

一些讓你相見恨晚的Python庫(一) 科技 第8張

所以,解析單個關注的用戶代碼如下所示:

一些讓你相見恨晚的Python庫(一) 科技 第9張

有了BeautifulSoup以後,爬蟲操作就變得特別簡單了。臟活累活別人都幫忙做好了。

5. utils

除了開源的庫以外,還有些開源項目的DataStruct.py helper.py utils.py文件,也值得看一看。里面很多好東西,都是可以直接拿過來用的。<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">

一些讓你相見恨晚的Python庫(一) 科技 第10張

我舉幾個例子。

  • requests中的CaseInsensitiveDict(https://github.com/kennethreitz/requests/blob/v1.2.3/requests/structures.py#L37-L109),大家看名字就知道什麼意思了,我就不多說了。

一些讓你相見恨晚的Python庫(一) 科技 第11張

  • werkzeug中的LocalProxy、ImmutableList、ImmutableDict(https://github.com/pallets/werkzeug/blob/master/werkzeug/datastructures.py#L128),其中ImmutableList和ImmutableDict大家一看就知道是什麼意思,這里要說的是LocalProxy,使用LocalProxy,分分鐘做到代理模式。

  • web.py的utils.py中各個函數和類都值得看一看(https://github.com/webpy/webpy/blob/master/web/utils.py#L48),不但可以了解好用的函數和數據結構,而且,還能夠學習一下高手的Python代碼。例如:

一些讓你相見恨晚的Python庫(一) 科技 第12張

ps:web.py的作者是亞倫·斯沃茨(Aaron Swartz),一位年少成名的計算機天才,著名社交網站Reddit聯合創始人。致力於網路信息開放,卻因涉嫌非法侵入麻省理工學院(MIT)和JSTOR(全稱Journal Storage,存儲學術期刊的在線系統)被指控,將受到最高35年監禁和100萬美元罰款。該案正在認罪辯訴階段,而亞倫·斯沃茨卻於2013年1月11日在其紐約布魯克林的寓所內,用一根皮帶上吊自殺,屍體隨後被女友發現,年僅26歲。

Linux雲計算及運維架構師高薪實戰班「2018年12月10日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~

*聲明:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯繫我們刪除或授權事宜。

– 結束 –


一些讓你相見恨晚的Python庫(一) 科技 第13張

一些讓你相見恨晚的Python庫(一) 科技 第14張

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!