10行Python代碼能實(shí)現(xiàn)什么高端操作?
Python憑借其簡(jiǎn)潔的代碼,贏得了許多開(kāi)發(fā)者的喜愛(ài)。因此也就促使了更多開(kāi)發(fā)者用Python開(kāi)發(fā)新的模塊,從而形成良性循環(huán),Python可以憑借更加簡(jiǎn)短的代碼實(shí)現(xiàn)許多有趣的操作。下面我們來(lái)看看,我們用不超過(guò)10行代碼能實(shí)現(xiàn)些什么有趣的功能。
1. 生成二維碼
二維碼作為一種信息傳遞的工具,在當(dāng)今社會(huì)發(fā)揮了重要作用。而生成一個(gè)二維碼也非常簡(jiǎn)單,在Python中我們可以通過(guò)MyQR模塊了生成二維碼,而生成一個(gè)二維碼我們只需要2行代碼,我們先安裝MyQR模塊,這里選用國(guó)內(nèi)的源下載:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ myqr
安裝完成后我們就可以開(kāi)始寫(xiě)代碼了:
from MyQR import myqr # 注意大小寫(xiě)myqr.run(words='http://www.baidu.com') # 如果為網(wǎng)站則會(huì)自動(dòng)跳轉(zhuǎn),文本直接顯示,不支持中文
我們執(zhí)行代碼后會(huì)在項(xiàng)目下生成一張二維碼。當(dāng)然我們還可以豐富二維碼:
from MyQR import myqrmyqr.run( words='http://www.baidu.com', # 包含信息 picture='lbxx.jpg', # 背景圖片 colorized=True, # 是否有顏色,如果為False則為黑白 save_name='code.png' # 輸出文件名)
效果圖如下:
另外MyQR還支持動(dòng)態(tài)圖片。
2. 生成詞云
詞云是數(shù)據(jù)可視化的一種非常優(yōu)美的方式,我們通過(guò)詞云可以很直觀的看出一些詞語(yǔ)出現(xiàn)的頻率高低。使用Python我們可以通過(guò)wordcloud模塊生成詞云,我們先安裝wordcloud模塊:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ wordcloud
然后我們就可以寫(xiě)代碼了:
from wordcloud import WordCloudWordCloudwc = WordCloud # 創(chuàng)建詞云對(duì)象wc.generate('Do not go gentle into that good night') # 生成詞云wc.to_file('wc.png') # 保存詞云
執(zhí)行代碼后生成如下詞云:
當(dāng)然這只是最簡(jiǎn)單的詞云,詞云更詳細(xì)的操作可以參見(jiàn)WordCloud生成卡卡西忍術(shù)詞云[1]。
3. 批量摳圖
摳圖的實(shí)現(xiàn)需要借助百度飛槳的深度學(xué)習(xí)工具paddlepaddle,我們需要安裝兩個(gè)模塊就可以很快的實(shí)現(xiàn)批量摳圖了,第一個(gè)是PaddlePaddle:
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
還有一個(gè)是paddlehub模型庫(kù):
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
接下來(lái)我們只需要5行代碼就能實(shí)現(xiàn)批量摳圖:
import os, paddlehub as hubhubhumanseg = hub.Module(name='deeplabv3p_xception65_humanseg') # 加載模型path = 'D:/CodeField/Workplace/PythonWorkplace/GrapImage/' # 文件目錄files = [path + i for i in os.listdir(path)] # 獲取文件列表results = humanseg.segmentation(data={'image':files}) # 摳圖
摳圖效果如下:
其中左邊為原圖,右邊為摳圖后填充黃色背景圖。
4. 文字情緒識(shí)別
在paddlepaddle面前,自然語(yǔ)言處理也變得非常簡(jiǎn)單。實(shí)現(xiàn)文字情緒識(shí)別我們同樣需要安裝PaddlePaddle和Paddlehub,具體安裝參見(jiàn)三中內(nèi)容。然后就是我們的代碼部分了:
import paddlehub as hub senta = hub.Module(name='senta_lstm') # 加載模型sentence = [ # 準(zhǔn)備要識(shí)別的語(yǔ)句 '你真美', '你真丑', '我好難過(guò)', '我不開(kāi)心', '這個(gè)游戲好好玩', '什么垃圾游戲',]results = senta.sentiment_classify(data={"text":sentence}) # 情緒識(shí)別# 輸出識(shí)別結(jié)果for result in results: print(result)
識(shí)別的結(jié)果是一個(gè)字典列表:
{'text': '你真美', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9602, 'negative_probs': 0.0398}{'text': '你真丑', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0033, 'negative_probs': 0.9967}{'text': '我好難過(guò)', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.5324, 'negative_probs': 0.4676}{'text': '我不開(kāi)心', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.1936, 'negative_probs': 0.8064}{'text': '這個(gè)游戲好好玩', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9933, 'negative_probs': 0.0067}{'text': '什么垃圾游戲', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0108, 'negative_probs': 0.9892}
其中sentiment_key字段包含了情緒信息,詳細(xì)分析可以參見(jiàn)Python自然語(yǔ)言處理只需要5行代碼[2]。
5. 識(shí)別是否帶了口罩
這里同樣是使用PaddlePaddle的產(chǎn)品,我們按照上面步驟安裝好PaddlePaddle和Paddlehub,然后就開(kāi)始寫(xiě)代碼:
import paddlehub as hub# 加載模型module = hub.Module(name='pyramidbox_lite_mobile_mask')# 圖片列表image_list = ['face.jpg']# 獲取圖片字典input_dict = {'image':image_list}# 檢測(cè)是否帶了口罩module.face_detection(data=input_dict)
執(zhí)行上述程序后,項(xiàng)目下會(huì)生成detection_result文件夾,識(shí)別結(jié)果都會(huì)在里面,識(shí)別效果如下:
6. 簡(jiǎn)易信息轟炸
Python控制輸入設(shè)備的方式有很多種,我們可以通過(guò)win32或者pynput模塊。我們可以通過(guò)簡(jiǎn)單的循環(huán)操作來(lái)達(dá)到信息轟炸的效果,這里以pynput為例,我們需要先安裝模塊:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pynput
在寫(xiě)代碼之前我們需要手動(dòng)獲取輸入框的坐標(biāo):
from pynput import mouse# 創(chuàng)建一個(gè)鼠標(biāo)m_mouse = mouse.Controller# 輸出鼠標(biāo)位置print(m_mouse.position)
可能有更高效的方法,但是我不會(huì)。
獲取后我們就可以記錄這個(gè)坐標(biāo),消息窗口不要移動(dòng)。然后我們執(zhí)行下列代碼并將窗口切換至消息頁(yè)面:
import timefrom pynput import mouse, keyboardtime.sleep(5)m_mouse = mouse.Controller # 創(chuàng)建一個(gè)鼠標(biāo)m_keyboard = keyboard.Controller # 創(chuàng)建一個(gè)鍵盤(pán)m_mouse.position = (850, 670) # 將鼠標(biāo)移動(dòng)到指定位置m_mouse.click(mouse.Button.left) # 點(diǎn)擊鼠標(biāo)左鍵while(True): m_keyboard.type('你好') # 打字 m_keyboard.press(keyboard.Key.enter) # 按下enter m_keyboard.release(keyboard.Key.enter) # 松開(kāi)enter time.sleep(0.5) # 等待 0.5秒
我承認(rèn),這個(gè)超過(guò)了10行代碼,而且也不高端。使用前QQ給小號(hào)發(fā)信息效果如下:
7. 識(shí)別圖片中的文字
我們可以通過(guò)Tesseract來(lái)識(shí)別圖片中的文字,在Python中實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,但是前期下載文件、配置環(huán)境變量等稍微有些繁瑣,所以本文只展示代碼:
import pytesseractfrom PIL import ImageImageimg = Image.open('text.jpg')text = pytesseract.image_to_string(img)print(text)
其中text就是識(shí)別出來(lái)的文本。如果對(duì)準(zhǔn)確率不滿意的話,還可以使用百度的通用文字接口。
8. 繪制函數(shù)圖像
圖標(biāo)是數(shù)據(jù)可視化的重要工具,在Python中matplotlib在數(shù)據(jù)可視化中發(fā)揮重要作用,下面我們來(lái)看看使用matplotlib如何繪制一個(gè)函數(shù)圖像:
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) # x軸數(shù)據(jù)y = x * x + 5 # 函數(shù)關(guān)系plt.title("y=x*x+5") # 圖像標(biāo)題plt.xlabel("x") # x軸標(biāo)簽plt.ylabel("y") # y軸標(biāo)簽plt.plot(x,y) # 生成圖像plt.show # 顯示圖像
生成圖像如下:
9. 人工智能
下面給大家介紹的是獨(dú)家的AI人工智能,一般不外傳的。這個(gè)人工智能可以回答許多問(wèn)題,當(dāng)然人工智能現(xiàn)在還在發(fā)展階段,想要理解人類的語(yǔ)言還差很多。廢話不多說(shuō),下面來(lái)看看我們的人工智能Fdj:
while(True): question = input answer = question.replace('嗎', '呢') answeranswer = answer.replace('?', '!') print(answer)
下面我們來(lái)看看簡(jiǎn)單的測(cè)試:
你好嗎?我好呢!你吃飯了嗎?我吃飯了呢!你要睡了嗎?我要睡了呢!
看來(lái)我們“小復(fù)”還是比較智能的。