Python常用包,可以學學這9個
最近匯總了平時常用到的9個很好的Python包,它們能極大的提高我們的工作效率,安裝它們,然后逐步熟練使用它們。
若有用,可以收藏這篇文章。
1 Faker生成假數(shù)據(jù)
你若還在為生成名字、地址、IP地址而發(fā)愁,試試Faker庫吧。
它是專業(yè)生成假數(shù)據(jù)的神器,但生成的數(shù)據(jù)看起來又如此“不假”。
基本用法如下所示:
from?faker?import?Faker
fake?=?Faker(locale="zh_CN")
????
fake.name()
#?'譚柳'
????
fake.address()
#?'江西省關(guān)嶺縣新城趙街Y座?630814'
?????
fake.text()
'怎么作者地區(qū).投資報告企業(yè)內(nèi)容責任發(fā)展來源資料.一下自己一次全部社區(qū).\n今天非常由于開發(fā)謝謝.其中大家組織游戲.\n只有最新控制同時計劃學校.分析記者價格方式.\n成功可能感覺方式包括手機.中國重要這種比較必須中心我的.\n公司很多安全類別威望一種.標題部門全國文件日本帖子積分不同.\n工程這個其中銷售歷史可以.對于感覺全國發(fā)生國內(nèi)不是.單位用戶新聞成為.留言本站說明報告工作繼續(xù).'
2 Pendulum管理時間
使用日期和時間格式從來都不是一件有趣的事情。
盡管內(nèi)置的datetime模塊做得相當不錯,但有一個更直觀的Pendulum,能做到快速處理。
它支持時區(qū)轉(zhuǎn)換、日期、時間操作和格式設置。
如下是一個快速示例,快速創(chuàng)建1個上海時區(qū)的時間:
from?datetime?import?datetime
import?pendulum
????
sh?=?pendulum.timezone('Asia/Shanghai')
shc?=?pendulum.now()
print('Current?Date?Time?in?sh?=',?shc)
#?DateTime(2021,?12,?9,?16,?38,?52,?599942,?tzinfo=Timezone('Asia/Shanghai'))
shc.add(years=1)
#?DateTime(2022,?12,?9,?16,?38,?52,?599942,?tzinfo=Timezone('Asia/Shanghai'))
3 Scrapy 做爬蟲
Scrapy是一個強大的工具,可以讓你從網(wǎng)站上快速提取信息。
當需要從多個網(wǎng)站或網(wǎng)頁中提取大量信息時,手動提取是低效的。
Scrapy提供了易于使用的方法和包,可以使用HTML標記或CSS類提取信息。通過以下命令安裝scrapy:
pip?install?scrapy
然后直接在終端輸入下面一行代碼,
?scrapy?fetch?--nolog?https://baidu.com
就能得到百度的首頁html內(nèi)容。
4 使用Pandas數(shù)據(jù)分析
Pandas是一個簡單但功能強大的數(shù)據(jù)分析工具。使用它可以進行數(shù)據(jù)清洗,并對其進行統(tǒng)計分析。
分析完數(shù)據(jù)后,還可以使用外部庫(如[Matplotlib])將其可視化(https://github.com/matplotlib/matplotlib).
Pandas最棒的地方是它建在NumPy上面,NumPy是一個強大的數(shù)據(jù)分析工具,因為Pandas基于它,所以這意味著大多數(shù)NumPy方法都是Pandas中已有的函數(shù)。
5 click命令行工具
click是一個Python包,可用于創(chuàng)建命令行接口,相當漂亮的命令行,相當絲滑。
讓我們看一個例子:
"""
click?模塊演示
"""
@click.command()
@click.option('--count',?default=3)
@click.option('--name', prompt='輸入你的名字:')
def?hello(count,?name):
????for?x?in?range(count):
????????print(f"Hello?{name}!")
if?__name__?==?"__main__":
????hello()
hello函數(shù)公開了兩個參數(shù):count和name。最后,在命令行,直接這樣調(diào)用腳本:
python?click_hello.py?--count=5
最后打?。?/p>
輸入你的名字:: zhenguo
Hello?zhenguo!
Hello?zhenguo!
Hello?zhenguo!
Hello?zhenguo!
Hello?zhenguo!
6 微web框架Flask
需要設置web服務器嗎?
你有兩秒鐘的時間嗎?因為這就是用Python啟動簡單web服務器所需的時間,直接下面一行代碼:
python?-m?http.server?8000
但對于一個基本的web應用程序來說,這可能太簡單了。Flask是一個用Python構(gòu)建的微web框架。它是“微型”的,因為它沒有任何數(shù)據(jù)庫抽象層、表單驗證或郵件支持。
幸運的是,它有大量的擴展,可以即插即用,如果只想提供一個簡單的API,那么它就是完美的。
要使用Flask創(chuàng)建API服務器,請使用以下腳本:
from?flask?import?Flask
from?flask?import?jsonify
app?=?Flask(__name__)
@app.route('/')
def?root():
????return?jsonify(
????????app_name="zhenguo的小工具",
????????app_user="zhenguo"
????)
使用下面一行代碼啟動服務:
FLASK_APP=flask.py?flask?run???
最后,當您在瀏覽器中訪問URLhttp://127.0.0.1:5000/時,
應該會看到以下JSON:
{"app_name":"zhenguo的小工具","app_user":"zhenguo"}
7 API請求Requests
Requests是一個強大的HTTP庫。有了它,可以自動化任何與HTTP請求相關(guān)的操作,包括API自動化調(diào)用,這樣你就不必再手動進行調(diào)用。
它附帶了一些有用的特性,如授權(quán)處理、JSON/XML解析和會話處理。
如下獲取明文地址:北京市海淀區(qū)清華東路35號,對應的經(jīng)緯度時,使用百度地圖接口,免費注冊得到一個apk,返回經(jīng)緯度結(jié)果如下所示:
import?requests
import?re
rep?=?requests.get(
????'https://api.map.baidu.com/geocoding/v3/?address=北京市海淀區(qū)清華東路35號&output=json&ak=你的apk&callback=showLocation')
print(re.findall(r'"lng":(.*),"lat":(.*?)}',?rep.text))
#?結(jié)果顯示????
[('116.35194130702107',?'40.00664192889596')]
8 自動化測試Selenium
Selenium是一個編寫自動化測試用例的測試框架。
盡管它是用Java編寫的,Python包提供對幾乎所有Selenium函數(shù)的類似API的訪問。
Selenium通常用于自動化應用程序UI的測試,但您也可以使用它自動化機器上的任務,如打開瀏覽器、拖放文件等。
看一個快速示例,演示如何打開瀏覽器并訪問百度主頁:
from?selenium?import?webdriver?
import?time?
??????
browser?=?webdriver.Chrome(executable_path?="C:\Program?Files?(x86)\Google\Chrome\chromedriver.exe")?
??????
website_URL?="https://baidu.com/"
brower.get(website_URL)?
????
refreshrate?=?int(15)?
??????
#?一直保持運行
while?True:?
????time.sleep(refreshrate)?
????browser.refresh()?
現(xiàn)在,該腳本每15秒刷新瀏覽器中的百度主頁。
9 圖像處理Pillow
很多時候,需要以某種方式修改圖像,使其更適合,例如模糊細節(jié)、組合一個或多個圖像或創(chuàng)建縮略圖。
將自制的Pillow腳本與Click組合在一起,然后直接從命令行訪問它們,這對于加快重復的圖像處理任務非常有用。

看一個模糊圖像的快速示例:

from?PIL?import?Image,?ImageFilter
????
try:
????original?=?Image.open("python-logo.png")
????
????#?Blur?the?image
????blurred?=?original.filter(ImageFilter.BLUR)
????
????#?Display?both?images
????original.show()
????blurred.show()
????
????blurred.save("blurred.png")
????
except:
????print('未能加載圖像')
如果覺得以上9個工具有用,可以收藏,點贊支持。
