Python 常用第三方模塊

一、Pillow

官方文檔
https://pillow.readthedocs.org/

縮放
from PIL import Image

# 打開一個jpg圖像文件,注意是當(dāng)前路徑:
im = Image.open('test.jpg')
# 獲得圖像尺寸:
w, h = im.size
print('Original image size: %sx%s' % (w, h))
# 縮放到50%:
im.thumbnail((w//2, h//2))
print('Resize image to: %sx%s' % (w//2, h//2))
# 把縮放后的圖像用jpeg格式保存:
im.save('thumbnail.jpg', 'jpeg')


模糊
from PIL import Image, ImageFilter

# 打開一個jpg圖像文件俏扩,注意是當(dāng)前路徑:
im = Image.open('test.jpg')
# 應(yīng)用模糊濾鏡:
im2 = im.filter(ImageFilter.BLUR)
im2.save('blur.jpg', 'jpeg')
image

驗(yàn)證碼
from PIL import Image, ImageDraw, ImageFont, ImageFilter

import random

# 隨機(jī)字母:
def rndChar():
    return chr(random.randint(65, 90))

# 隨機(jī)顏色1:
def rndColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 隨機(jī)顏色2:
def rndColor2():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 創(chuàng)建Font對象:
font = ImageFont.truetype('Arial.ttf', 36)
# 創(chuàng)建Draw對象:
draw = ImageDraw.Draw(image)
# 填充每個像素:
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill=rndColor())
# 輸出文字:
for t in range(4):
    draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')
code.jpg

二篮幢、requests

GET
>>> import requests
>>> r = requests.get('https://www.douban.com/') # 豆瓣首頁
>>> r.status_code
200
>>> r.text
r.text
'<!DOC...


帶參數(shù)的URL,傳入dict作為params參數(shù)
>>> r = requests.get('https://www.douban.com/search', params={'q': 'python', 'cat': '1001'})
>>> r.url # 實(shí)際請求的URL
'https://www.douban.com/search?q=python&cat=1001'

自動檢測編碼
>>> r.encoding
'utf-8'

無論響應(yīng)是文本還是二進(jìn)制內(nèi)容宿百,我們都可以用content屬性獲得bytes對象:
>>> r.content
b'<!DOCTYPE html>\n<。洪添。垦页。


對于特定類型的響應(yīng),例如JSON干奢,可以直接獲取
>>> r = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')
>>> r.json()
{'query': {'count': 1, 'created': '2017-11-17T07:14:12Z', ...


需要傳入HTTP Header時痊焊,我們傳入一個dict作為headers參數(shù)
>>> r = requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})
>>> r.text
<!DOCTYPE html>。忿峻。薄啥。
POST

要發(fā)送POST請求,只需要把get()方法變成post()逛尚,然后傳入data參數(shù)作為POST請求的數(shù)據(jù)


>>> r = requests.post('https://accounts.douban.com/login', data={'form_email': 'abc@example.com', 'form_password': '123456'})

requests默認(rèn)使用application/x-www-form-urlencoded對POST數(shù)據(jù)編碼垄惧。如果要傳遞JSON數(shù)據(jù),可以直接傳入json參數(shù):

params = {'key': 'value'}
r = requests.post(url, json=params) # 內(nèi)部自動序列化為JSON

上傳文件
>>> upload_files = {'file': open('report.xls', 'rb')}
>>> r = requests.post(url, files=upload_files)

在讀取文件時绰寞,注意務(wù)必使用'rb'即二進(jìn)制模式讀取到逊,這樣獲取的bytes長度才是文件的長度铣口。

把post()方法替換為put(),delete()等觉壶,就可以以PUT或DELETE方式請求資源脑题。

獲取請求頭
>>> r.headers
{Content-Type...


cookie
>>> r.cookies['ts']
'example_cookie_123。铜靶。叔遂。'

要在請求中傳入Cookie,只需準(zhǔn)備一個dict傳入cookies參數(shù):

>>> cs = {'token': '12345', 'status': 'working')
>>> r = requests.get(url, cookies=cs)


傳入以秒為單位的timeout參數(shù):

>>> r = requests.get(url, timeout=2.5) # 2.5秒后超時

三争剿、chardet

官方文檔
https://chardet.readthedocs.io/en/latest/supported-encodings.html

>>> import chardet
>>> chardet.detect(b'Hello, world!')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
檢測出的編碼是ascii已艰,注意到還有個confidence字段,表示檢測的概率是1.0(即100%)蚕苇。


>>> data = '離離原上草哩掺,一歲一枯榮'.encode('gbk')
>>> chardet.detect(data)
{'encoding': 'GB2312', 'confidence': 0.7407407407407407, 'language': 'Chinese'}


獲取到編碼后,再轉(zhuǎn)換為str捆蜀,就可以方便后續(xù)處理

四疮丛、psutil

官網(wǎng)地址
https://github.com/giampaolo/psutil

獲取CPU信息、獲取內(nèi)存信息辆它、獲取磁盤信息誊薄、獲取網(wǎng)絡(luò)信息、獲取進(jìn)程信息等等锰茉。呢蔫。

例:獲取CPU信息
>>> import psutil
>>> psutil.cpu_count() # CPU邏輯數(shù)量
4
>>> psutil.cpu_count(logical=False) # CPU物理核心
2
# 2說明是雙核超線程, 4則是4核非超線程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市飒筑,隨后出現(xiàn)的幾起案子片吊,更是在濱河造成了極大的恐慌,老刑警劉巖协屡,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俏脊,死亡現(xiàn)場離奇詭異,居然都是意外死亡肤晓,警方通過查閱死者的電腦和手機(jī)爷贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來补憾,“玉大人漫萄,你說我怎么就攤上這事∮遥” “怎么了腾务?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長削饵。 經(jīng)常有香客問我岩瘦,道長未巫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任担钮,我火速辦了婚禮橱赠,結(jié)果婚禮上尤仍,老公的妹妹穿的比我還像新娘箫津。我一直安慰自己,他們只是感情好宰啦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布苏遥。 她就那樣靜靜地躺著,像睡著了一般赡模。 火紅的嫁衣襯著肌膚如雪田炭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天漓柑,我揣著相機(jī)與錄音教硫,去河邊找鬼。 笑死辆布,一個胖子當(dāng)著我的面吹牛瞬矩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锋玲,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼景用,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惭蹂?” 一聲冷哼從身側(cè)響起伞插,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盾碗,沒想到半個月后媚污,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡廷雅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年耗美,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榜轿。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡幽歼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谬盐,到底是詐尸還是另有隱情甸私,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布飞傀,位于F島的核電站皇型,受9級特大地震影響诬烹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弃鸦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一绞吁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唬格,春花似錦家破、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喊积,卻和暖如春烹困,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乾吻。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工髓梅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绎签。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓枯饿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辜御。 傳聞我的和親對象是個殘疾皇子鸭你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容