這10個(gè)奇妙的Python庫(kù),你必須要試試!

作者 | 小F
來(lái)源 | 法納斯特
Python有著很多很酷的第三方庫(kù),可以使任務(wù)變得更容易。
今天就給大家分享10個(gè)有趣的Python庫(kù),每個(gè)都非常實(shí)用!
分別是speedtest、socket、textblob、pygame、pyqrcode、pyshorteners、googletrans、pendulum、fabulous、pywebview。
下面就給大家介紹一下~
① speedtest(網(wǎng)速測(cè)試)
Speedtest模塊可以測(cè)試電腦的網(wǎng)絡(luò)帶寬大小。
使用百度源安裝庫(kù)。
# 安裝speedtest
pip install speedtest -i https://mirror.baidu.com/pypi/simple/
使用時(shí),需要取消證書(shū)驗(yàn)證。
import speedtest
# 全局取消證書(shū)驗(yàn)證
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
test = speedtest.Speedtest()
down = test.download()
upload = test.upload()
print(f"上傳速度:{round(upload/(1024 * 1024),2)} Mbps")
print(f"下載速度:{round(down/(1024 * 1024),2)} Mbps")
得到結(jié)果如下。
上傳速度:31.3 Mbps
下載速度:86.34 Mbps
看起來(lái),小F的網(wǎng)速還挺快的。
② socket(獲取本機(jī)ip地址)
使用socket,先獲取電腦的主機(jī)名后,再獲取本機(jī)的IP地址。
其中socket是Python內(nèi)置標(biāo)準(zhǔn)庫(kù),無(wú)需安裝。
import socket as f
hostn = f.gethostname()
Laptop = f.gethostbyname(hostn)
print("你的電腦本地IP地址是:" + Laptop)
得到結(jié)果如下,此IP為局域網(wǎng)內(nèi)IP。
你的電腦本地IP地址是:192.168.2.101
如若想獲取電腦的公網(wǎng)IP地址,可以借助一些第三方網(wǎng)站,比如下面這個(gè)。
# 瀏覽器訪問(wèn), 返回公網(wǎng)IP地址
https://jsonip.com
代碼如下,同樣取消證書(shū)驗(yàn)證。
import json
from urllib.request import urlopen
# 全局取消證書(shū)驗(yàn)證
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
with urlopen(r'https://jsonip.com') as fp:
content = fp.read().decode()
ip = json.loads(content)['ip']
print("你的電腦公網(wǎng)IP地址是:" + ip)
對(duì)網(wǎng)站發(fā)起請(qǐng)求,解析返回的結(jié)果。
最后成功得到公網(wǎng)IP地址。
# 這里隨便寫(xiě)了一個(gè)~
你的電腦公網(wǎng)IP地址是:120.236.128.201
③ textblob(文本處理)
TextBlob是一個(gè)用于處理文本數(shù)據(jù)的Python庫(kù),僅為英文分析。
中文則可以使用SnowNLP,能夠方便的處理中文文本內(nèi)容,是受到了TextBlob的啟發(fā)而寫(xiě)的。
下面就給英文做一個(gè)拼寫(xiě)檢查。
from textblob import TextBlob
a = TextBlob("I dream about workin with goof company")
a = a.correct()
print(a)
結(jié)果如下。
I dream about working with good company
可以看到,句子中的單詞被更正了。
④ pygame(制作游戲)
pygame,一個(gè)制作游戲的Python庫(kù)。
不僅給開(kāi)發(fā)人員提供了制作游戲的圖形、聲音庫(kù),還可以使用內(nèi)置的模塊來(lái)實(shí)現(xiàn)復(fù)雜的游戲邏輯。
下面我們使用pygame來(lái)制作一個(gè)小型的音樂(lè)播放器。
from pygame import mixer
import pygame
import sys
pygame.display.set_mode([300, 300])
music = "my_dream.mp3"
mixer.init()
mixer.music.load(music)
mixer.music.play()
# 點(diǎn)擊×可以關(guān)閉界面的代碼
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
運(yùn)行上面的代碼,電腦就會(huì)播放音樂(lè)。

必須給pygame添加圖形化界面,要不然沒(méi)聲音。
⑤ pyqrcode(生成二維碼)
二維碼簡(jiǎn)稱QR Code(Quick Response Code),學(xué)名為快速響應(yīng)矩陣碼,是二維條碼的一種。由日本的Denso Wave公司于1994年發(fā)明。
現(xiàn)隨著智能手機(jī)的普及,已廣泛應(yīng)用于平常生活中,例如商品信息查詢、社交好友互動(dòng)、網(wǎng)絡(luò)地址訪問(wèn)等等。
pyqrcode模塊則是一個(gè)QR碼生成器,使用簡(jiǎn)單,用純python編寫(xiě)。
安裝。
# 安裝pyqrcode
pip install pyqrcode -i https://mirror.baidu.com/pypi/simple/
下面就將「百度一下」生成一個(gè)二維碼。
import pyqrcode
import png
from pyqrcode import QRCode
inpStr = "www.baidu.com"
qrc = pyqrcode.create(inpStr)
qrc.png("baidu.png", scale=6)
得到二維碼圖片如下。
微信掃描出來(lái)是文本內(nèi)容,為百度網(wǎng)址,應(yīng)該是有所操作。
用手機(jī)的瀏覽器掃描,則可以正常跳轉(zhuǎn)網(wǎng)頁(yè)。
使用文檔:
https://pythonhosted.org/PyQRCode/
⑥ pyshorteners(短網(wǎng)址)
pyshorteners是一個(gè)簡(jiǎn)單的URL縮短Python庫(kù)。
提供了18種短鏈根域名供使用。

安裝。
# 安裝pyshorteners
pip install pyshorteners -i https://mirror.baidu.com/pypi/simple/
以clck.ru格式為例。
import pyshorteners as psn
url = "http://www.shuhai.com/"
u = psn.Shortener().clckru.short(url)
print(u)
得到結(jié)果如下。
# 結(jié)果
https://clck.ru/WPJgg
是可以正常訪問(wèn)的。
使用文檔:
https://pyshorteners.readthedocs.io/en/latest/
⑦ googletrans(翻譯)
Googletrans是一個(gè)免費(fèi)且無(wú)限制的Python翻譯庫(kù),可以用來(lái)自動(dòng)偵測(cè)語(yǔ)言種類、翻譯之類。
安裝3.1.0a0版本,最新版無(wú)法使用。
# 安裝googletrans
pip install googletrans==3.1.0a0 -i https://mirror.baidu.com/pypi/simple/
查看所有支持的語(yǔ)言。
import googletrans
from googletrans import Translator
print(googletrans.LANGUAGES)
結(jié)果如下,其中中文有簡(jiǎn)體和繁體兩種。
LANGUAGES = {
'af': 'afrikaans',
'sq': 'albanian',
'am': 'amharic',
'ar': 'arabic',
'hy': 'armenian',
'az': 'azerbaijani',
'eu': 'basque',
'be': 'belarusian',
'bn': 'bengali',
'bs': 'bosnian',
'bg': 'bulgarian',
'ca': 'catalan',
'ceb': 'cebuano',
'ny': 'chichewa',
'zh-cn': 'chinese (simplified)',
'zh-tw': 'chinese (traditional)',
'co': 'corsican',
'hr': 'croatian',
'cs': 'czech',
'da': 'danish',
'nl': 'dutch',
'en': 'english',
'eo': 'esperanto',
'et': 'estonian',
'tl': 'filipino',
'fi': 'finnish',
'fr': 'french',
'fy': 'frisian',
'gl': 'galician',
'ka': 'georgian',
'de': 'german',
'el': 'greek',
'gu': 'gujarati',
'ht': 'haitian creole',
'ha': 'hausa',
'haw': 'hawaiian',
'iw': 'hebrew',
'he': 'hebrew',
'hi': 'hindi',
'hmn': 'hmong',
'hu': 'hungarian',
'is': 'icelandic',
'ig': 'igbo',
'id': 'indonesian',
'ga': 'irish',
'it': 'italian',
'ja': 'japanese',
'jw': 'javanese',
'kn': 'kannada',
'kk': 'kazakh',
'km': 'khmer',
'ko': 'korean',
'ku': 'kurdish (kurmanji)',
'ky': 'kyrgyz',
'lo': 'lao',
'la': 'latin',
'lv': 'latvian',
'lt': 'lithuanian',
'lb': 'luxembourgish',
'mk': 'macedonian',
'mg': 'malagasy',
'ms': 'malay',
'ml': 'malayalam',
'mt': 'maltese',
'mi': 'maori',
'mr': 'marathi',
'mn': 'mongolian',
'my': 'myanmar (burmese)',
'ne': 'nepali',
'no': 'norwegian',
'or': 'odia',
'ps': 'pashto',
'fa': 'persian',
'pl': 'polish',
'pt': 'portuguese',
'pa': 'punjabi',
'ro': 'romanian',
'ru': 'russian',
'sm': 'samoan',
'gd': 'scots gaelic',
'sr': 'serbian',
'st': 'sesotho',
'sn': 'shona',
'sd': 'sindhi',
'si': 'sinhala',
'sk': 'slovak',
'sl': 'slovenian',
'so': 'somali',
'es': 'spanish',
'su': 'sundanese',
'sw': 'swahili',
'sv': 'swedish',
'tg': 'tajik',
'ta': 'tamil',
'te': 'telugu',
'th': 'thai',
'tr': 'turkish',
'uk': 'ukrainian',
'ur': 'urdu',
'ug': 'uyghur',
'uz': 'uzbek',
'vi': 'vietnamese',
'cy': 'welsh',
'xh': 'xhosa',
'yi': 'yiddish',
'yo': 'yoruba',
'zu': 'zulu',
}
翻譯一句「你好」試一下。
translater = Translator()
out = translater.translate("你好", dest='en', src='auto')
print(out)
結(jié)果如下。
# 翻譯結(jié)果
Translated(src=zh-CN, dest=en, text=Hello, pronunciation=None, extra_data="{'translat...")
src:源文本的語(yǔ)言
dest:將源文本轉(zhuǎn)換為的語(yǔ)言。
text:翻譯的結(jié)果
使用文檔:
https://py-googletrans.readthedocs.io/en/latest/
⑧ pendulum(時(shí)間)
Pendulum是一個(gè)處理日期和時(shí)間的Python庫(kù),該庫(kù)在涉及時(shí)區(qū)的情況下非常有用。
安裝。
# 安裝pendulum
pip install pendulum -i https://mirror.baidu.com/pypi/simple/
來(lái)看一下2分鐘前的時(shí)間。
import pendulum
past = pendulum.now().subtract(minutes=2)
print(past.diff_for_humans())
print(past)
結(jié)果如下。
2 minutes ago
2021-07-25T19:10:09.222953+08:00
還有很多方便使用的地方,可以查看使用文檔。
使用文檔地址:
https://pendulum.eustace.io/
⑨ fabulous(添加文本顏色)
如果你是在命令行上運(yùn)行Python程序,那么輸出都是相同顏色,不方便觀察。
使用Fabulous,則可以添加圖像、彩色文本來(lái)凸顯輸出。

安裝。
# 安裝fabulous
pip install fabulous -i https://mirror.baidu.com/pypi/simple/
下面來(lái)看一個(gè)示例吧!
from fabulous.color import bold, magenta, highlight_red
print(bold(magenta(
"""
hello world
this is some new line
and here is the last line. :)
"""
)))
結(jié)果如下,輸出字體加粗且有顏色。

更多配置,可以訪問(wèn)使用文檔:
https://jart.github.io/fabulous/
⑩ pywebview(GUI瀏覽器)
pywebview是一個(gè)Python庫(kù),用于以GUI形式顯示HTML、CSS、和JavaScript內(nèi)容。
這意味著使用這個(gè)庫(kù),你可以在桌面應(yīng)用程序中顯示網(wǎng)頁(yè)。
安裝。
# 安裝pywebview
pip install pywebview -i https://mirror.baidu.com/pypi/simple/
啟動(dòng)一個(gè)給定網(wǎng)站的窗口,運(yùn)行下面的代碼。
import webview
window = webview.create_window(
title='百度一下,全是廣告',
url='http://www.baidu.com',
width=850,
height=600,
resizable=False, # 固定窗口大小
text_select=False, # 禁止選擇文字內(nèi)容
confirm_close=True # 關(guān)閉時(shí)提示
)
webview.start()
結(jié)果如下。

好了,本期的分享就到此結(jié)束了。
總的來(lái)說(shuō),這些小眾的Python庫(kù),還是挺有用的。
有興趣的小伙伴可以訪問(wèn)相關(guān)文檔,自行去實(shí)踐學(xué)習(xí)。
點(diǎn)擊看更多文章??
